Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Класс матрица
Форум программистов > Системное программирование > C, С++ и С Builder > Общие вопросы по С и С++
НастенаС1
Написала программу, она работает, только ничего не вводит и не выводит sad.gif Резутьтат одни нули.
Условие задачи: Построить программу для работы с классом - квадратными матрицами. Структура должна включать соответствующие поля: порядок, набор коэффициентов. Программа должна обеспечивать простейшие функции для работы с данными структурами: ввод матрицы, транспонирование матрицы, вывод матрицы в удобной форме.
Помогите пожалуйста, очень надо!!!


CODE
#include <iostream.h>
#include <conio.h>

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

public:
matrix ();

~matrix(){};

void vivod(void);

void transp(void);

};

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

int **a=new int*[n];
for (i=0; i<n; i++)
a[i]=new int[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);
}
Yason
Причина в этом:
Цитата
int n,i,j,**a;
....

void matrix::matrix()
{
....
int **a=new int*[n];
НастенаС1
Подскажите пожалуйста как исправить, потому что я тоже думала что из-зи этого, но исправить не получаеться sad.gif
Очень надо! Подалуйста!!!
НастенаС1
Я попробовала исправть ошибку, вроде работает, только первый элемент всегда 0 sad.gif

CODE
#include <iostream.h>
#include <conio.h>

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

public:
matrix ();

~matrix(){};

void vivod(void);

void transp(void);

};

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);
}
{


Помогите пожалуйстаsmile.gif
Yason
Удивительно, что вообще работает, потому что выделение памяти для массива зачем-то убрали, и куда там сейчас что пишется - непонятно...
НастенаС1
Yason, какие у тебя идеи как можно исправить ошибку в программе, в первом варианте?
Yason
Всего лишь удалить три буквы wink.gif
Цитата
int **a=new int*[n];


P.S. Это если не считать архитектурных косяков типа ввода данных в конструкторе и непонятно зачем нужной int p в main.
shisik
Цитата(Yason @ 26:05:2008, 01:03 ) *
Всего лишь удалить три буквы wink.gif

В таком случае удалить надо и ** rolleyes.gif
НастенаС1
Цитата
зачем нужной int p в main.

Чтоб была задержка на экране, по-моему самый простой способsmile.gif

Огромное всем СПАСИБО, заработало!!! Программа будет еще разрбатывать, если возникнут вопросы надеюсь вы мне поможитеsmile.gif))
Спасибкиsmile.gif))!!!
shisik
Цитата(НастенаС1 @ 26:05:2008, 15:39 ) *
Чтоб была задержка на экране, по-моему самый простой способsmile.gif

Развеселило laugh.gif А чем cin.get(); не угодил то?
Yason
Цитата(shisik @ 26:05:2008, 13:38 ) *
В таком случае удалить надо и ** rolleyes.gif

Действительно, слажал-с... rolleyes.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.