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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 30.11.2008, 15:22   #1
Freeman007
Новичок
Джуниор
 
Регистрация: 30.11.2008
Сообщений: 2
По умолчанию Операция с двухмерным массивом

Задача:
Вычислить сумму и число положительных элементов матрицы А [N,N], находящихся над главной диаганалью.
Решение:
Код:
#include "iostream"
#include "iomanip"
#include "time.h"
#include "stdlib.h"
#include "conio.h"

using namespace std;

#define randomize() srand((unsigned)time(NULL));
#define random(value) ((int)(rand()*value/RAND_MAX))

const int n = 3;

int main(int argc, char* argv[])
{
    srand(time(NULL));
    rand();
    
	int i , j, Array[n][n], sum = 0, counter = 0;
	
	for(i = 0; i < n; i++)
	{
		for(j = 0; j < n; j++)
		{
			Array[i][j] = random(20)-10;
			cout << setw(3) <<Array[i][j] << " ";
			if((i + 1 == j)&&(Array[i][j] > 0))
			{
				sum += Array[i][j];
				counter++;
			}
		}
		cout << endl;
	}
	cout << endl << "Summa: " << sum << "\nKollichestvo: " << counter;
	getch();
	return 0;
}
Проблемма:
При выставлении матрицы из 3-х строк и 3-х столбцов - const int n = 3;
всё считает правильно. А если изменить количество столбцов и строк на 4 или 5 (больше не надо), то считает не правильно!
Что делать?

Последний раз редактировалось rpy3uH; 30.11.2008 в 16:10.
Freeman007 вне форума
Старый 30.11.2008, 18:20   #2
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Я проверил, вроде бы правильно все у тебя считает... Ты что то перепутал скорее всего!
StarWorm вне форума
Старый 30.11.2008, 22:18   #3
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

по идее должно быть так:

Код:
for(int i=0;i<n-1;i++)
           
            {

               for(int j=i+1;j<n;j++)
               
                 {  
                       if(Array[i][j]>0)
           
                          {
                              Sum+=Array[i][j];
                              counter++;
                          }
                  }
             }

Последний раз редактировалось counter; 30.11.2008 в 22:20.
counter вне форума
Старый 30.11.2008, 22:46   #4
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Тебе надо сумму элементов непосредственно НАД диагональю, или которые ВЫШЕ диагонали?!?!? Надо задачу ставить правильно, чтобы люди не предлагали неправильные алгоритмы решения...
StarWorm вне форума
Старый 01.12.2008, 19:37   #5
Freeman007
Новичок
Джуниор
 
Регистрация: 30.11.2008
Сообщений: 2
По умолчанию

StarWorm - а НАД и ВЫШЕ диагонали это не одно и тоже?
Задачу я составил правильно!!!
Вот решение:
Код:
for(i = 0; i < n; i++)
	{
		for(j = 0; j < n; j++)
		{
			Array[i][j] = random(20)-10;
			cout << setw(3) <<Array[i][j] << " ";
			if((i < j)&&(Array[i][j] > 0))
			{
				sum += Array[i][j];
				counter++;
			}
		}
		cout << endl;
	}
Тема закрыта!
Freeman007 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Булевская операция вычитания для зх мерных геометрических полигональных моделей Frenza Общие вопросы C/C++ 2 13.09.2008 03:31
Операция Ы SASHA50 Microsoft Office Excel 10 25.04.2008 12:38
Проблеммы с массивом Almost_Famous Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 21.04.2008 21:25
Pascal. Задача с двухмерным массивом The_deviLs Помощь студентам 4 07.11.2007 21:51
Операция сдвига? SkyDreamer Общие вопросы C/C++ 3 10.10.2007 08:20