Написала программу. поморите, пожалуйста исправить. Я в Си++ новичок. - Компьютерные вопросы
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос Написала программу. поморите, пожалуйста исправить. Я в Си++ новичок.

ter

Capitan

ter

Capitan
Регистрация
9 Авг 2013
Сообщения
102
Репутация
0
Спасибо
0
Монет
0
Написала программу по нахождению определителя матрицы 2 порядка на СИ++. Но совершенно не выходит сделать так, что бы расчет производится в функции, которая получает данные по указателю и возвращает результат по указателю.
#include
#include
int Det(int a,int b,int c,int d)
{
return (a*d-b*c);
}
int main ()
{
int a[2][2];
int i,j;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{
a[j]= rand()%5;
printf("%d ", a[j]);
}
printf(" det= %d ", Det(a[0][0],a[0][1],a[1][0],a[1][1]));
return 0;
}
 
Регистрация
25 Мар 2013
Сообщения
75
Репутация
0
Спасибо
0
Монет
0
Если я правильно понял, что в функцию нужно передавать указатель. то многомерные массивы я бы лучше вписал в структуру, и уже нормально объектом делал что нужно struct v2{ v2( void ){ int i,j; for(i=0;i<2;i++) for(j=0;j<2;j++) { a[j]= rand()%5; } } int a[2][2]; }; int Det( v2* p ){ return (p->a[0][0]*p->a[0][1]-p->a[1][0]*p->a[1][1]); } int main(){ v2 ad; printf(" det=%i ", d(&ad) ); return 0; }
 
Регистрация
8 Июл 2013
Сообщения
87
Репутация
0
Спасибо
0
Монет
0
Получает данные по указателю - тут и не пахнет. И это С, а не С++ Ну и опять-же использование rand без srand грозит Вам возможными одинаковыми "случайными" числами при каждом запуске. Ок. Может, неправильно понял. В простейшем случае переделать фунцию int Det(int* a,int* b,int* c,int* d) и соотв. тело функции return (*a)*(*b) и т. д. Ну или передавать указатель на массив, что лучше. Н-р так: #include < iostream > using namespace std; int det(int(*a)[2]) { cout << a[0][0] << endl << a[0][1] << endl << a[1][0] << endl << a[1][1] << endl; } int main() { int a[2][2] = { {1,2}, {3,4} }; det(a); } Выведет: 1 2 3 4 Дальше сами.
 
Сверху Снизу