Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2011, 20:26   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию C++: сумма и произведение элементов матрицы

Дорогие программисты, у меня проблема с элементами матрицы.
В ней напротив каждой строки должны отразиться сумма элементов строки, а внизу каждого столбца - произведение элементов соотв. столбца.
Размеры и сами элементы матрицы вводит пользователь.

А у меня сумму выводит где надо, да только он считает все элементы матрицы... А со столбцами - тоже считает произведение всех элементов, а мне надо каждого отдельного столбика. И выводит произведение не там, где надо - мне надо чтобы под каждым столбиком.

Я честно пробилась с этой задачей 2 вечера.. все.. я сдаюсь.......

Вот набросок кода.

Код:
#include <iostream>
#include <conio.h>

using namespace std;

int main ()

{  
int N=0, M=0, D=0;
   int i=0, j=0, Summa=0, P=1;
   int matrix [50][50];

   cout<<"Vvedite N (k-vo stolbcov)"<<endl; cin>>N;
   cout<<"Vvedite M (k-vo strok)"<<endl; cin>>M;

	cout<<endl;

		for (i=0;i<M;i++) {
			for (j=0;j<N;j++) {
				cout<<"Vvedite element massiva: "/*<<endl*/;
				cin>>matrix[i][j];
				cout<<endl;
		  
      }
   }

			for (i=0;i<M;i++) {
				for (j=0;j<N;j++) {
					cout<<matrix[i][j];
					cout<<" ";
		 
						Summa+=matrix[i][j];
		

			//matrix[i][N]+=matrix[i][j];
		 /////////////////////////////////////
		/* if(i==M)
		 {
		cout<<"Summa ="<<Summa<<endl;	
		 }*/
		// Summa=Summa + matrix[i][j];

	
 			
      }
	
	 cout<<"Summa ="<<Summa<<endl;
		
   }

//for (i=0;i<M;i++) {
//
//					for (j=0;j<N;j++) {
//		P=P*matrix[i][j];
//					}
//	  }
// cout<<"Proizvedenie ="<<P<<endl;
	//////////////////////////////
 



	_getch ();
	return 0;
}
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 11.04.2011, 20:54   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Каждый раз, перед входом в цикл по строке, переменную Summa сбрасывать в 0 нужно.
Vago вне форума Ответить с цитированием
Старый 11.04.2011, 21:15   #3
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Сейчас попробуем)))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 11.04.2011, 21:23   #4
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Ураааааааааааааааа!
Сумма заработала))
Я же говорю, я сообразительная))

Дорогой Vago, намекните мне как-нибудь с произведением столбцов... так, чтобы даже блондинка поняла.. с ними у меня вообще.. глухо.. вроде и формула есть, и понимаю, что надо будет произведение как-то обнулять, вернее объединичивать.. а как прописать произведение под стобцами...... я понимаю, что по идее нужет еще обин цикл внутри цикла, там где мы считали сумму, только как я это все сделать....
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 11.04.2011, 21:33   #5
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Во-первых, посоветую Вам память под матрицу выделять динамически - а что, если пользователь введет размеры матрицы, превышающие 50х50?
Код:
int **matrix;
После ввода размеров матрицы
Код:
matrix = new int * [n];
for (int i=0;i<=n;i++) // "<=" для сумм и произведений снизу/слева
   matrix[i] = new int  [m]
Перед выходом из программы - освобождение выделенной памяти
Код:
for (int i=0;i<=n;i++)
   delete[]matrix[i];
delete[]matrix;
Напишите процедуру вывода элементов матрицы на экран, разделите вывод и нахождение сумм и произведений.

Нахождение суммы элементов строки:
Код:
Цикл по строкам
{
   Сумма = 0
   Цикл по столбцам
   {
       Сумма += Матрица[индекс_по_строкам][индекс_по_столбцам]
   }
   Матрица[индекс_по_строкам][последний_элемент] = Сумма
}
Для произведения аналогично, только циклы необходимо поменять местами.
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 11.04.2011, 21:44   #6
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Ой, спасибо Вам, добрый человек... я тут у мальчиков все спрашивала, что делать, если мы не знаем какой массив пользователь захочет, а мальчики все научными терминами да научными терминами... Сейчас все буду реализовывать, как вы сказали. Вначале разберусь с произведением столбцов, а потом гламур в коде начну наводить)) Если что, я опять сюда)))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 11.04.2011, 22:22   #7
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от malinoff Посмотреть сообщение
Нахождение суммы элементов строки:
Код:
Цикл по строкам
{
   Сумма = 0
   Цикл по столбцам
   {
       Сумма += Матрица[индекс_по_строкам][индекс_по_столбцам]
   }
   Матрица[индекс_по_строкам][последний_элемент] = Сумма
}
И теперь бесстрашно идём вычислять произведения столбцов исходной матрицы...
Vago вне форума Ответить с цитированием
Старый 11.04.2011, 23:17   #8
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Люди, неужели я это сделала?!))))))
Осталась одна маленькая проблема - форматирование... Как бы покрасивше сделать, чтобы произведение столбцов было под каждым столбиком?
Предположим наша матрица

1 2
3 3
4 1
1 5

Произведение
12 30

Надо бы как-то табуляцию ввинтить в матрицу.... наш /t

Или есть более изящное решение?))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 12.04.2011, 00:35   #9
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Господа, все готово.... даже сделала рандом))))
Только один ньюанс - а он так и должен дико ругаться (см. картинку)

Похоже судя по Debug ему дико не нравиться обнуление массива в конце.....

последние строчки кода (как посоветовал Малинка)

Код:

............................................................
..........................................................

cout<<"Proizvedenie "<<endl;
			cout<<endl;
		
           for (j=0;j<N;j++) {
		 P=1;
		for (i=0;i<M;i++) {
			P=P*matrix[i][j];
			
		}
		cout<<P<<'\t';

		}
	
	
	////Osvobozdenie pamjati
	for (int i=0;i<=N;i++)
	
		delete[]matrix[i];
		delete[]matrix;

  

	_getch ();
	return 0;
}
Изображения
Тип файла: jpg er.JPG (44.8 Кб, 171 просмотров)
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 12.04.2011, 03:05   #10
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
И теперь бесстрашно идём вычислять произведения столбцов исходной матрицы...
После нахождения сумм элементов строк модифицируется только последний столбец - понятно, что произведения необходимо считать ДО этого столбца.
Цитата:
Сообщение от Blondy
Только один ньюанс - а он так и должен дико ругаться
Ах да, в блоке выделения памяти под матрицу - я выделял n+1 строк и m столбцов. Надо в
Код:
for (int i=0;i<=n;i++) // "<=" для сумм и произведений снизу/слева
   matrix[i] = new int  [m]
изменить matrix[i] = new int [m] на matrix[i] = new int [m+1]
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма четных элементов матрицы. Произведение элементов 3-го столбца. Минимальный элемент матрицы. renovare Помощь студентам 2 03.07.2009 21:13
Произведение элементов матрицы Sasuke-sama Microsoft Office Excel 1 28.05.2009 05:13
Сумма и произведение элементов массива Zid@ne Общие вопросы C/C++ 5 23.12.2008 19:22