Другие языки программирования и технологии

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

Написала программу по нахождению определителя матрицы 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[i][j]= rand()%5;
printf("%d\t", a[i][j]);
}
printf("\n det= %d ", Det(a[0][0],a[0][1],a[1][0],a[1][1]));
return 0;
}
#include
#include

void Det(int *my_matrix, int *resultat)
{
*resultat = my_matrix[0]*my_matrix[3]-my_matrix[1]*my_matrix[2];
}

int main ()
{
int my_matrix[4];
int i;
int resultat;
time_t t;

/* инициализация генератора случайных чисел */
srand((unsigned) time(&t));

for (i=0;i<4;i++)
{
my_matrix[i]= rand()%5;
printf("%d\t", my_matrix[i]);
}
Det(my_matrix, &resultat);
printf("\n det= %d ", resultat);
return 0;
}
Никита Кошкаров
Никита Кошкаров
23 233
Лучший ответ
Получает данные по указателю - тут и не пахнет. И это С, а не С++
Ну и опять-же использование 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

Дальше сами.

Ну и ещё. Детерминат целый (?) и числа целые? Ну ээм... ок.
Дим Бим
Дим Бим
84 764
Александр Ковальчук ей нужно на указатели всё переделать
Александр Ковальчук Это имела ввиду
Если я правильно понял, что в функцию нужно передавать указатель.

то

многомерные массивы я бы лучше вписал в структуру, и уже нормально объектом делал что нужно

struct v2{
v2( void ){
int i,j;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{
a[i][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("\n det=%i\n", d(&ad) );
return 0;
}
Nik Моисей
30 074
Nik Моисей // ошибку сделал
return (p->a[0][0]*p->a[1][1]-p->a[0][1]*p->a[1][0]);