Классы в С++

  • Автор темы Soloma
  • Дата начала
S

Soloma

в задании нужно было создать класс для создания и транспонирования матрицы, но почему-то матрицу не создает, как можно исправить? заранее оч благодарны.

Код:
#include <iostream.h>
#include <conio.h>

class matrix
{
int n,i,j,**a;

public:
matrix ();

~matrix(){};

void vivod(void);

void transp(void);

};

matrix::matrix()
{
cout<<"Vvedite poryadok matrici:"<<endl;
cin>>n;

cout<<"Vvedite elementi massiva A:\n"<<"\n";
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cin>>a[i][j];
}
cout<<"\n";
}

void matrix::vivod()
{
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cout<<a[i][j]<<"	";
cout<<"\n";
}
cout<<"\n";
return;
}

void matrix::transp()
{
for (j=0; j<n; j++)
{
for (i=0; i<n; i++)
cout<<a[i][j]<<"	";
cout<<"\n";
}
cout<<"\n";
return;
}

main ()
{
clrscr();
int p;
matrix mat;
mat.vivod();
mat.transp();
cin>>p;
return (0);
}
 
B

babreonok

попробуй коонструктор:

[codebox]
matrix::matrix()
{
cout<<"Vvedite poryadok matrici:"<<endl;
cin>>n;
cout<<"Vvedite elementi massiva A:\n"<<"\n";
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cin>>a[j];
}
cout<<"\n";
}
[/codebox]

изменить вот так:

[codebox]
matrix::matrix()
{
cout<<"Vvedite poryadok matrici:"<<endl;
cin>>n;


a=new int*[n];
for (int i=0;i<n;i++)
a=new int[n];


cout<<"Vvedite elementi massiva A:\n"<<"\n";
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cin>>a[j];
}
cout<<"\n";
}
[/codebox]
 
B

behemoth

Кто будет создавать массив ? Объявить - объявил, а создать то забыл ... :( И не забывай удалять, т.к. будет теряться память ... :)
Код:
#include <iostream.h>
#include <conio.h>

class matrix
{
int n,i,j,**a;

public:
matrix ();

~matrix();

void vivod(void);

void transp(void);

};

matrix::matrix()
{
a = NULL; 
a = new int*[n];
for ( int i = 0; i < n; i++ )
a[i] = new int[n];

cout<<"Vvedite poryadok matrici:"<<endl;
cin>>n;

cout<<"Vvedite elementi massiva A:\n"<<"\n";
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cin>>a[i][j];
}
cout<<"\n";
}

matrix::~matrix()
{
for ( int i = 0; i < n; i++ )
{
delete a[i];
a[i] = NULL;
} 
delete a;
a = NULL
}

void matrix::vivod()
{
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cout<<a[i][j]<<"	";
cout<<"\n";
}
cout<<"\n";
return;
}

void matrix::transp()
{
for (j=0; j<n; j++)
{
for (i=0; i<n; i++)
cout<<a[i][j]<<"	";
cout<<"\n";
}
cout<<"\n";
return;
}

main ()
{
clrscr();
int p;
matrix mat;
mat.vivod();
mat.transp();
cin>>p;
return (0);
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!