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

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

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

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

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

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

Здраствуйте, почтенные программисты!
Я хочу понять логику - ну почему программа отказывается видеть все элементы главной диагонали массива, а соотвественно считать их сумму. Ведь вроде бы все написано правильно: и i=j, и новый элемент добавляется к старой сумме, а все равно программа упорно не досчитывает как минимум 1-2 элемента.

Код:

#include "iostream"
#include <stdio.h>
#include <conio.h>
#include <time.h>

using namespace std;

int main ()


{
	int i, j, M=0, Sum_diag=0 ;
	int A [10][10];
	cout<<"Vvedite razmer dlja kvadratnoy matrichi  M: "<<endl;
	cin>>M;
	i=M;
	j=M;

srand( (unsigned)time( NULL ) );

///////Выводим элементы случайными числами
{
	for (i=0; i<M; i++)
	{
		for (j=0; j<M; j++)
			{  
				A[i][j]=rand()%10;
				cout<<A[i][j]<<"  ";
				
			}
		cout<<endl;
	}
}

cout<<"***********************************************"<<endl;
cout<<endl;

for (i=0; i<M; i++)
	{
		for (j=0; j<M; j++)

					if (i=j)
				{
					Sum_diag+=A[i][j];
				}
}
cout<<"Summa glavnoy diagonali: "<<Sum_diag<<endl;

_getch ();
return 0;

}
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 07.04.2011, 23:02   #2
NightEagle
Пользователь
 
Регистрация: 13.03.2011
Сообщений: 31
По умолчанию

Код:

for (i=0; i<M; i++)
	{
		for (j=0; j<M; j++)

					if (i=j)
				{
					Sum_diag+=A[i][j];
				}

}
попробуйте так:
if (i==j)

Последний раз редактировалось NightEagle; 07.04.2011 в 23:05.
NightEagle вне форума Ответить с цитированием
Старый 07.04.2011, 23:56   #3
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Точно!

Семен Семенович.... я забыла про двойной знак равно!
Сейчас проверим)))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 08.04.2011, 00:02   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Код:
for (i=0; i<M; i++)
	{
		for (j=0; j<M; j++)

					if (i=j)
				{
					Sum_diag+=A[i][j];
				}
}
хм... Проще так
Код:
Sum_diag = 0;
for (i=0; i<M; i++)
{
    Sum_diag += A[i][i];
}
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 08.04.2011, 00:07   #5
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Господин Ночной Орел, Вам в рейтинг добавляется +1!))))
Премного Вас благодарю!)))))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 08.04.2011, 00:11   #6
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Интересно, а так он увидит, если ему не указывать проход по столбцам?))

Кстати, о птичках - i это все-таки количество строк или столбцов?
И каким образом происходить заполнение компьютером матрицы - он вначале прописывает элементы строки слева-направо и если строка закончилась, спускается в столбец? Да?
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 08.04.2011, 00:18   #7
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Кстати, о птичках - i это все-таки количество строк или столбцов?
Смотря где поставить! Если на первое место, то строк
A[строка][столбец]
Цитата:
И каким образом происходить заполнение компьютером матрицы - он вначале прописывает элементы строки слева-направо и если строка закончилась, спускается в столбец? Да?
Вообще-то массив в памяти распологается цепочкой, поэтому он ни на каккие стлобцы не переходит. то есть по сути индексы указывают (В ПАСКАЛЕ) порядковый номер элемента
То есть A[5,3] говорит о 8 (5+3) элементе. Это нужно для того чтобы знать смещение.
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 08.04.2011, 00:20   #8
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Интересно, а так он увидит, если ему не указывать проход по столбцам?))
Если вы об этом
Цитата:
Код:
Sum_diag = 0;
for (i=0; i<M; i++)
{
    Sum_diag += A[i][i];
}
То проход по столбцам вовсе не нужен! Так номер строки и столбца у элементов главной диагонали равны.
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 08.04.2011, 00:54   #9
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

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

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
То есть A[5,3] говорит о 8 (5+3) элементе.
Неверно. Приведенный индекс эл-та A[5,3] равен:
в Паскале: 4*N_COLUMNS+3 (если там вообще есть этот термин)
в C/C++ (A[5][3]): 5*N_COLUMNS+3
в Фортране (A(5,3), при индексации с единицы): 2*N_ROWS+5
Что такое N_COLUMNS и N_ROWS, надеюсь, понятно.

Последний раз редактировалось Vago; 08.04.2011 в 06:55. Причина: Для C/C++ +3 конечно...
Vago вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ф-ия, определяющая сумму строк матрицы, если на главной диагонали матрицы имеется отрицательный эл-т. Volk_xD Помощь студентам 6 05.01.2011 13:39
Вычислить сумму эл матрицы HixoH Общие вопросы C/C++ 2 24.12.2009 16:10
разработать функцию, которая определяет сумму цифр целого числа IceAgainstIce Общие вопросы Delphi 5 20.11.2008 00:52
Неправильно умножаются матрицы!!! metamfetamin Помощь студентам 1 09.12.2007 20:37