Перемнож. элементы массива

  • Автор темы gps
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G
#1
Вот написал программу, которая перемнажает эементымассива и находят меньше 2.
Подскажите как это можно реализовать на классах? Я только изучаю классы, хочу понять
Код:
#include <iostream.h>
void vvod(int n,int array[]);
int proizved(int n,int array[],int rez);
void vivod(int k);
void dvoiki(int n, int array[]);
main(){
int n,array[100],rez=1,k,b;
cout<<"n=";
cin>>n;
vvod(n,array);
k=proizved(n,array,rez);


vivod(k);
dvoiki(n,array);
return 0;}

void vvod(int n,int array[]){
for(int i=0;i<n;i++){
cout<<"array["<<i<<"]=";
cin>>array[i];}}

int proizved(int n,int array[],int rez){
for(int i=0;i<n;i++){
rez*=array[i];}
return rez;}

void dvoiki(int n,int array[])
{int kol=0; 
for(int i=0;i<n;i++)
{if (array[i]<=2) {++kol;} }
cout<<"ne dopushenih="<<kol<<"\n";}

void vivod(int k){
cout<<"rez="<<k<<endl;}
 

grigsoft

Well-known member
15.11.2005
735
0
#2
Шаг 1. Проанализируй задачу (код в твоем случае, что существенно упрощает дело) в поисках наборов данных, над которыми ведется работа. В твоем случае это очевидно - массив: указатель+длина.
Шаг 2. Операции над данными превращаются в методы класса. Так что в простейшем случае твоя программа сведется к такой:
Код:
main()
{
CWorkArray data;
data.Vvod();
data.Analiz();
data.Vivod();
}
Но строго говоря, не царское это дело для массива данные от пользователя получать. Так что я бы оставил чистый массив отдельно, и добавил класс Приложение, которое бы включало экземпляр класса массив как данные. Но это сложнее и в твоем случае вряд ли того стоит. Но с точки зрения тренировки абстрактного подхода было бы полезно :)
 
G
#3
Вы правильно заметили, мне это нужно для тренировки. Итак давайте с начала.
Сначала мне нужно создать класс, объявить переменные. Объясните для чего нужно объявлять приватные переменные, а затем же и публичные. Почему? Не сочтите за глупость, я пытаюсь разобраться в ОПП.
 
G
#5
Спасибо за то что направили на правиьный путь.
Вот как сделал
Код:
#include <iostream.h>
int n;
class Mas
{
private:
int array[100], int rez, int k;

public:

void vvod();
int proizved();
void vivod();
void dvoiki();

};

void Mas::vvod()
{
for (int=0;i<n;i++)
{
cout <<"array["<<i<<"]=";
cin>>array[i];
}
}
int Mas::proizved(rez)
{
for (int=0;i<n;i++)
{
rez*=array[i];
}
return rez;
}
void Mas::dvoiki()
{
int kol=0;
for (int=0;i<n;i++)
{
if(array[i]<=2) 
{
++kol;
}
}
cout <<"ne dopuchenyh="<<kol<<"\n";
}
void Mas::vivod()
{
cout <"rez="<<k<<endl;
}

int main()
{
int rez=1,k,b;
cout<<"n=";
cin>>"n";
Mas S;

S.vvod();
S.proizved(rez);
S.vivod();
S.dvoiki();
}
Но видимо я сделал ошибки причем сам синтаксис и алгоритм решения неправильный.
Например правильно ли я вызвал S.proizved(rez); ?
 
Статус
Закрыто для дальнейших ответов.