Страница 1 из 1
Матрица С++
Добавлено: 22 ноя 2008, 21:46
Freeman12
Дана матрица 3х3,программа должна суммировать модули элементов строк,суммы должны быть ввиде массива:
сделал вот так,но думаю это неправиль,подскажите как сложить элементы
Код: Выделить всё
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>;
void main()
{int a[3][3];
int b[3];
int i,j;
randomize();
{for (i=0;i<3;i++)
{for (j=0;j<3;j++)
a[3][3]=random(10);
};
};
{for(i=0;i<3;i++)
{for (j=0;j<3;j++)
cout<<a[3][3]<<" ";
cout<<'\n';
}}
b[i]=0;
for(i=0;i<3;i++){
b[1]=sqrt(a[1][1])+sqrt(a[1][2])+sqrt(a[1][3]);
b[2]=sqrt(a[2][1])+sqrt(a[2][2])+sqrt(a[3][3]);
b[3]=sqrt(a[3][1])+sqrt(a[3][2])+sqrt(a[3][3]);
cout<<b[i]<<" ";
cout<<'\n';}
getch();
};
Re: Матрица С++
Добавлено: 22 ноя 2008, 22:02
Naeel Maqsudov
Код: Выделить всё
//заполнение сл. числами.
//(будем считать, что первый индекс - это строка, а второй - столбец)
for (i=0;i<3;i++){
for (j=0;j<3;j++){
a[i][j]=random(10);
};
};
//теперь суммируем модули элементов
for (i=0;i<3;i++){
//для каждой строки (i) сначала берем модуль первого элемента
b[i]=abs(a[i,1]);
for (j=1;j<3;j++){
//а потом прибавляем модкли остальных
b[i]+=abs(a[i][j]);
};
};
Re: Матрица С++
Добавлено: 24 ноя 2008, 13:11
Freeman12
Вот программа которая по-идее должна работать(добавлена функция нахождения наибоьшей строки),но считает по-чему-то не правильно((((
Код: Выделить всё
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
void main()
{int i,j,n,max, a[3][3],b[3];
randomize();
for (i=0;i<3;i++){
for (j=0;j<3;j++){
a[i][j]=random(10);
};
};
b[3]=0;
for (i=0;i<3;i++){
b[n]=abs(a[i,1]);
for (j=1;j<3;j++){
b[n]+=abs(a[i][j]);
}
}
max=b[0];
for(i=1;i<10;i++){
if(b[i]>max){
max=b[i];
}
}
for (i=0;i<3;i++)
{for (j=0;j<3;j++)
cout<<a[i][j]<<" ";
cout<<'\n';
}
cout<<'\n'<<max;
getch();
};
Re: Матрица С++
Добавлено: 24 ноя 2008, 14:53
StarWorm
b[3]=0;
если уж на то пошло, то надо все обнулять, т.е.
а b[3] - это ты выходишь за границы своего массива!!!
И если уж на то пошло, то
b=abs(a[i,1]); правильно надо:
и вообще все не правильно!!!
Вместо:
Код: Выделить всё
max=b[0];
for(i=1;i<10;i++){
if(b[i]>max){
max=b[i];
}
}
Надо:
Код: Выделить всё
max=b[0];
for(i=1;i<3;i++){
if(b[i]>max){
max=b[i];
}
}
Re: Матрица С++
Добавлено: 25 ноя 2008, 19:46
Freeman12
ВСЕМ СПАСИБО!!!Вот работающая программа:
Код: Выделить всё
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
int main()
{clrscr();
int i,j,n,max, a[3][3],b[3];
randomize();
for (i=0;i<3;i++){
for (j=0;j<3;j++){
a[i][j]=random(10);
};
};
for (i=0;i<3;i++){
b[i]=abs(a[i][0]);
for (j=1;j<3;j++){
b[i]=abs(a[i][j])+b[i];
}
}
max=b[0];
for(i=1;i<3;i++){
if(b[i]>max){
max=b[i];
}
}
for (i=0;i<3;i++)
{for (j=0;j<3;j++)
cout<<a[i][j]<<" ";
cout<<'\n';
}
cout<<'\n'<<max;
getch();
};
ТЕМУ МОЖНО ЗАКРЫТЬ!!!