Матрица С++

Ответить
Freeman12
Сообщения: 19
Зарегистрирован: 25 май 2008, 19:17

Дана матрица 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();
};


Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Код: Выделить всё

//заполнение сл. числами. 
//(будем считать, что первый индекс - это строка, а второй - столбец)
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]);
  };
};

Freeman12
Сообщения: 19
Зарегистрирован: 25 май 2008, 19:17

Вот программа которая по-идее должна работать(добавлена функция нахождения наибоьшей строки),но считает по-чему-то не правильно((((

Код: Выделить всё

#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();
};


StarWorm
Сообщения: 25
Зарегистрирован: 18 ноя 2008, 10:28

b[3]=0;
если уж на то пошло, то надо все обнулять, т.е.

Код: Выделить всё

b[0]=0;b[1]=0;b[2]=0;
а b[3] - это ты выходишь за границы своего массива!!!

И если уж на то пошло, то b=abs(a[i,1]); правильно надо:

Код: Выделить всё

b[i]=abs(a[i,0]);
и вообще все не правильно!!!
Вместо:

Код: Выделить всё

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];
}
}

Freeman12
Сообщения: 19
Зарегистрирован: 25 май 2008, 19:17

ВСЕМ СПАСИБО!!!Вот работающая программа:

Код: Выделить всё

#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();
};
ТЕМУ МОЖНО ЗАКРЫТЬ!!!
Ответить