Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2013, 20:07   #1
Leno4ka805
Новичок
Джуниор
 
Регистрация: 28.11.2013
Сообщений: 1
Сообщение Создать класс для работы с двумерным массивом целых чисел (C++)

Помогите, создать класс для работы с двумерным массивом целых чисел. Разработать следующие элементы класса:
a. Поля:
int **IntArray;
int n.
b. Конструктор, позволяющий создать массив размерности n×n.
c. Методы, позволяющие:
ввести элементы массива с клавиатуры;
вывести элементы массива на экран;
вычислить сумму элеметов i-того столбца.
d. Свойства:
позволяющее вычислить количество нулевых элементов в массиве (доступное только для чтения);
позволяющее установить значение всех элементы главной диагонали массива равное скаляру (доступное только для записи)

Вот такой код получился у меня.
Код C++
Код:
#include <iostream>
 
using namespace std;
 
class DMassiv//создали класс
{   
public:
    int **IntArray;//указатель на указатель целочисленного значения открытые поля класса
    int n;
    int b,a,r,l,*p;//k-доп.переменная для считывания элементов массива;а- номер столбца;  столбцы
    DMassiv()//конструктор
    {
            
    }
    ~DMassiv()
    {
      IntArray=0;
      n=0;  
    }
    int setVvod()//метод для ввода 
    {
        cout<<"vvedite n";
        cin>>n;
        cout<<"vvedite massiv"<<endl;
            IntArray=new int*[n];//выделение памяти под строки
            for (int i = 0; i < n; i++)
                {
                     IntArray[i]=new int[n];//~под столбцы
                     for (int j = 0; j < n; j++)
                     {  
                       cin>>IntArray[i][j];
                     }
                }
    }
    void getVivod()//метод на вывод
    {
    for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                cout<<IntArray[i][j]<<" ";
                
            }
      cout<<endl;
        }
    }
    //вычисление суммы столбца
    int summa()
    {
        int s=0;        
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                if (l>n)cout<<"nevozmojno vipolnit'"<<endl;
                if (j==l) s+=IntArray[i][j];
            }     
        }
        cout<<"s="<<s;
    return s;
    }
    //найти элемент с заданным номером
    void poisk()
        {
          // int b=0;
            cout<<"vvedite nomer stolbtsa: ";
               cin>>a;
                cout<<"Nomer stroki: ";
                cin>>r;
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j <n;j++)
                {
                    if(i==r && j==a)*p=IntArray[i][j];
                    
                    //if(IntArray[i][j]==0)b++;
                }
            }
            cout<<"element= "<<p<<endl;
        }
        int GetSnull()
        {
            get
            {
                int b=0;
                for(int i=0;i<n;i++)
                {
                  for(int j=0;j<n;j++)
                  {
                        if(IntArray[i][j]==0)b++;
                  } 
                }
                return b;
            }
        }
        int Setscalar()
        {
            set
            {
                for(int i=0;i<n;i++)
                {
                  if(i=j)cout>>&IntArray[i][j]=0;
                } 
            }
        }   */
};
 
int main()
{
    int n;
    int i,j,k,a,r,l,*p;
    int IntArray[n][n];
        //????????? MyObj.vvod();
  DMassiv mas;
//  cout<<"vvedite n=";//вводим кол-во столбцов и строк
//  cin>>n;//считываемyObj.vvod()
    mas.setVvod();
    mas.getVivod();
 
   
    std::cout<<mas.poisk()<<std::endl;
    cout<<"Nomer stolbtsa: ";
            cin>>l;
            //cout>>s;
            std::cout<<mas.summa()<<std::endl;
 ~DMassiv();
    system("PAUSE");
    return 0;
}


сам массив выводится, но вместо заданного элемента, похоже. выводится его адрес.
также, не просчитывается сумма i-ого столбца, а со свойствами я вообще запуталась
Помогите исправить, завтра сдавать(

Последний раз редактировалось Serge_Bliznykov; 28.11.2013 в 23:07.
Leno4ka805 вне форума Ответить с цитированием
Старый 29.11.2013, 00:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
cout>>&IntArray[i][j]=0
А эта операция она что должна делать?
Цитата:
*/
А этот конец коммента он к чему?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.11.2013, 09:19   #3
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Ещё настораживает if(i=j). Такое сравнение делается в языке Pascal. В С++ if(i==j)
Код:
  int Setscalar()
        {
            set
            {
                for(int i=0;i<n;i++)
                {
                  if(i=j)cout>>&IntArray[i][j]=0;
                } 
            }
        }
Жаль конечно, но до создания класса я ещё не дошел((, поэтому деструкторы и set'ы, get'ы не шарю. Но косяки подправил.

Код:
#include <iostream>
 
using namespace std;
 
class DMassiv//создали класс
{   
public:
    int **IntArray;//указатель на указатель целочисленного значения открытые поля класса
    int n;
    int b,a,r,l,p;//k-доп.переменная для считывания элементов массива;а- номер столбца;  столбцы
    DMassiv()//конструктор
    {
            
    }
    ~DMassiv()
    {
      IntArray=0;
      n=0;  
    }
    int setVvod()//метод для ввода 
    {
        cout<<"vvedite n";
        cin>>n;
        cout<<"vvedite massiv"<<endl;
            IntArray=new int*[n];//выделение памяти под строки
            for (int i = 0; i < n; i++)
                {
                     IntArray[i]=new int[n];//~под столбцы
                     for (int j = 0; j < n; j++)
                     {  
                       cin>>IntArray[i][j];
                     }
                }
			return 1;
    }
    void getVivod()//метод на вывод
    {
    for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                cout<<IntArray[i][j]<<" ";
                
            }
      cout<<endl;
        }
    }
    //вычисление суммы столбца
    int summa(int l)
    {
        int s=0;        
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                if (l>n)cout<<"nevozmojno vipolnit'"<<endl;
                if (j==l) s+=IntArray[i][j];
            }     
        }
    return s;
    }
    //найти элемент с заданным номером
    void poisk()
        {
          // int b=0;
            cout<<"vvedite nomer stolbtsa: ";
               cin>>a;
                cout<<"Nomer stroki: ";
                cin>>r;
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j <n;j++)
                {
                    if(i==r-1 && j==a-1) p=IntArray[i][j];
                    
                    //if(IntArray[i][j]==0)b++;
                }
            }
            cout<<"element= "<<p<<endl;
        }
        int GetSnull()
        {
           // get
            {
                int b=0;
                for(int i=0;i<n;i++)
                {
                  for(int j=0;j<n;j++)
                  {
                        if(IntArray[i][j]==0)b++;
                  } 
                }
                return b;
            }
        }
        int Setscalar()
        {
        //    set
            {
                for(int i=0;i<n;i++)
                {
			      
                  if(i==i)
					{
						IntArray[i][i]=0;
						cout <<IntArray[i][i];
				    }
                } 
            }
        }  
};
 
int main()
{

int l;

        //????????? MyObj.vvod();
  DMassiv mas;
//  cout<<"vvedite n=";//вводим кол-во столбцов и строк
//  cin>>n;//считываемyObj.vvod()
    mas.setVvod();
    mas.getVivod();
 
   
    mas.poisk();
	std::cout<<std::endl;
    cout<<"Nomer stolbtsa: ";
            cin>>l;
            std::cout<<mas.summa(l-1)<<std::endl;
// ~DMassiv();
    system("PAUSE");
    return 0;
}
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 29.11.2013 в 11:48.
Rin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс Date для работы с датами в формате «год.месяц.день» (Стандартная задачка для студентов на C#) roomatan C# (си шарп) 1 13.10.2013 08:55
Класс для работы с массивом в С++. ALEX8989 Помощь студентам 2 15.04.2012 19:18
Класс для работы с массивом.С++ bender91 Помощь студентам 2 14.04.2012 21:32
C++ Класс множество целых чисел Танюня Помощь студентам 7 27.02.2011 16:21