Форум программистов, компьютерный форум CyberForum.ru

Матрица - на месте каждого числа записывать сумму всех чисел - C++

Восстановить пароль Регистрация
 
Klimova
0 / 0 / 0
Регистрация: 08.01.2011
Сообщений: 42
21.10.2012, 19:39     Матрица - на месте каждого числа записывать сумму всех чисел #1
есть матрица:
1 2 3
4 5 6
7 8 9

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

1 3 6
5 12 21
12 27 45

не могу разодраться с циклами, заранее спасибо)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2012, 19:39     Матрица - на месте каждого числа записывать сумму всех чисел
Посмотрите здесь:

Для каждого числа в текстовом файле определить сумму его чисел C++
C++ Кто может помогите. Дан файл, содержащий целые числа. Надо вычислить сумму всех чисел, расположеных до минимального значения в файле.
C++ Дана последовательность n натуральных чисел. Для каждого числа вычислить количество его цифр и сумму этих цифр. Вывести на экран каждое число, количес
Упорядочить заданную последовательность чисел так, чтобы каждый элемент, стоящий на нечетном месте, был больше каждого из соседних C++
Вводятся числа, пока не вводится 0, если его ввели, то программа вычисляет сумму всех введённых чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
21.10.2012, 21:01     Матрица - на месте каждого числа записывать сумму всех чисел #2

Не по теме:

Цитата Сообщение от Klimova Посмотреть сообщение
не могу разодраться с циклами, заранее спасибо)
зачем драться с циклами? с ними дружить нада=)



C++
1
2
3
4
5
6
7
8
9
10
11
12
void repay(int mas[][],int n,int m){//n и m есть "длина и ширина" матрици, соответственно если матрица квадратка везде м заменить на н
    for(int i=1;i<n;i++){
        for(int j=1;j<m;j++){
            int i1=i,j1=j,sum=0;
            while(i1!=-1)
                sum+=mas[i1--][j];
            while(j1!=-1)
                sum+=mas[i][j1--];
            mas[i][j]+=sum;
        }
    }
}
Klimova
0 / 0 / 0
Регистрация: 08.01.2011
Сообщений: 42
10.11.2012, 19:32  [ТС]     Матрица - на месте каждого числа записывать сумму всех чисел #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
for(int i =0; i<m; i++)
    {
              for(int j=0; j<n; j++)
          {
                int sum=0;
                int x = i, y = j;
                    while(x!=-1)
                {
                    while(y!=-1)
                    {
                      sum+= A[x][y];
                      y--;
                    }
               x--;
               y = j;
                }
          q[i][j]= sum;
          }
    }
этот вариант лучше)
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
11.11.2012, 07:30     Матрица - на месте каждого числа записывать сумму всех чисел #4
Цитата Сообщение от Klimova Посмотреть сообщение
этот вариант лучше)
оба варианта неправильные. А вот этот вариант один из самых быстрых будет:
пусть дана матрица a[][] размером: n строк, m столбцов. Тогда формируем матрицу b[][] (таким же размером) так:
C++
1
2
3
4
5
6
7
8
9
int i, j;
b[0][0]=a[0][0];
for(i=1; i<m; i++)
    b[0][i]=a[0][i]+b[0][i-1];
for(i=1; i<n; i++)
    b[i][0]=a[i][0]+b[i-1][0];
for(i=1; i<n; i++)
    for(j=1; j<m; j++)
        b[i][j]=a[i][j]+b[i-1][j]+b[i][j-1]-b[i-1][j-1];
Klimova
0 / 0 / 0
Регистрация: 08.01.2011
Сообщений: 42
11.11.2012, 17:36  [ТС]     Матрица - на месте каждого числа записывать сумму всех чисел #5
не знаю... у меня все работает)
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
11.11.2012, 17:51     Матрица - на месте каждого числа записывать сумму всех чисел #6
Цитата Сообщение от Klimova Посмотреть сообщение
не знаю... у меня все работает)
да, извиняюсь, невнимательно Ваш код посмотрел, рабочий, но медленней моего (особенно при больших m и n будет видна разница)
Yandex
Объявления
11.11.2012, 17:51     Матрица - на месте каждого числа записывать сумму всех чисел
Ответ Создать тему
Опции темы

Текущее время: 12:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru