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

Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних... - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Ruslanishe
25 / 9 / 1
Регистрация: 17.10.2010
Сообщений: 203
09.11.2011, 16:40     Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних... #1
Здравствуйте, форумчане! У меня вот такая вот задачка:
Задан двумерный массив. Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних, сумму элементов третьего столбца без трех последних и т. д. Последний столбец не обрабатывается. Среди найденных сумм найти максимальную.

Я сделал всю задачу, кроме максимального значения среди сумм!
вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <time.h>
 
void vvod( int x[100][100], int n , int m )
{
     srand(time(0));
     for ( int i = 0; i < n; i++ )
     {
         for ( int j = 0; j < m; j ++ )
         {
             x[i][j] = rand()%9+1;
         }
     }
}
 
void vivod( int x[100][100], int n , int m )
{
     for ( int i = 0; i < n; i++ )
     {
         for ( int j = 0; j < m; j ++ )
         {
             cout << x[i][j] << "  ";
         }
         cout << endl;
     }
}
 
void summa ( int x[100][100], int n, int m )
{
     int s;
     for ( int j = 0; j < m-1; j++ )
     {            
        s = 0;
        for ( int i = 0; i < n-j-1; i++ )
        {
            s+= x[i][j]; 
        }
        cout << "Сумма в столбце " << j << " = " << s << endl;
     }
} 
int main()
{
    setlocale(LC_CTYPE, "Russian");
    int n, m, s = 0, i, j, max, k = 0;
    int x[100][100];
    do 
    {
    cout << "Введите размернось массива :" << endl;
    cout << "Строки: "; cin >> n;
    cout << "Столбцы: "; cin >> m;
    }
    while ( ( n < m ) ); 
    cout << endl << "Матрица: " << endl;
    vvod ( x, n, m );
    vivod ( x, n, m );
    cout << endl;
    summa ( x, n, m );  
      getch();
}
помогите доделать задачу! Заранее благодарен!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2011, 16:40     Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних...
Посмотрите здесь:

Найти сумму элементов первого и последнего столбца матрицы C++
C++ Подсчитать сумму первого и последнего столбца в матрице
Вычислить сумму ненулевых элементов, кратных 5; упорядочить элементы второго столбца по убыванию C++
Найти сумму первого,последнего и центрального элементов массива из 20 элементов. C++
Определить сумму элементов каждого столбца левой половины и сумму элементов каждого четного столбца правой половины матрицы A C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
09.11.2011, 17:30     Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних... #2
Цитата Сообщение от Ruslanishe Посмотреть сообщение
Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних, сумму элементов третьего столбца без трех последних и т. д. Последний столбец не обрабатывается.
для квадратной
C
1
2
3
4
5
6
7
8
9
10
11
tmp = 1; iter1 = 0; iter2 = 0;
while (tmp < size)
{
    sum = 0, iter1 = 0;
 
    while (iter1 < size - tmp)
        sum += matr[iter1++][iter2];
 
    printf("\nsum = %d", sum);
    ++iter2; ++tmp;
}
Добавлено через 4 минуты
Цитата Сообщение от Ruslanishe Посмотреть сообщение
C++
1
void vivod( int x[100][100], int n , int m )
так объявлять функции не надо. надо так
C++
1
void vivod( int **x, int n , int m )
Ruslanishe
25 / 9 / 1
Регистрация: 17.10.2010
Сообщений: 203
09.11.2011, 17:34  [ТС]     Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних... #3
Цитата Сообщение от alkagolik Посмотреть сообщение
для квадратной
C
1
2
3
4
5
6
7
8
9
tmp = 1; iter1 = 0; iter2 = 0;
while (tmp < size)
{
      sum = 0, iter1 = 0;
while (iter1 < size - tmp)
                       sum += matr[iter1++][iter2];
printf("\nsum = %d", sum);
             ++iter2; ++tmp;
}
получается вы написали функцию summa только другим способом! а как сделать поиск максимума среди этих сумм! если можно сделайте под мою задачу!
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
09.11.2011, 17:38     Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних... #4
и раскидывать i\o по функциям тоже не желательно. Их можно либо все вынести в отдельную функцию (с кейсами, например), либо (что по сути почти то же самое, только лучше) вообще в отдельный модуль.cpp, в который включить iostream, а из остальных подчистить.

Добавлено через 3 минуты
Цитата Сообщение от Ruslanishe Посмотреть сообщение
получается вы написали функцию summa только другим способом! а как сделать поиск максимума среди этих сумм! если можно сделайте под мою задачу!
простите, я не заметил в чем суть, но это же несложно
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
tmp = 1; iter1 = 0; iter2 = 0, max = -1111111111;
    while (tmp < size)
    {
        sum = 0, iter1 = 0;
 
        while (iter1 < size - tmp)
        {
            sum += matr[iter1++][iter2];
        }
        max = ( sum > max ) ? sum : max;
 
        printf("\nsum = %d", sum);
        printf("\nmax = %d ", max);
        ++iter2; ++tmp;
    }
Ruslanishe
25 / 9 / 1
Регистрация: 17.10.2010
Сообщений: 203
09.11.2011, 17:43  [ТС]     Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних... #5
Цитата Сообщение от alkagolik Посмотреть сообщение
простите, я не заметил в чем суть, но это же несложно
C
1
2
3
4
5
6
7
8
9
10
11
12
13
tmp = 1; iter1 = 0; iter2 = 0, max = -1111111111;
         while (tmp < size)
        {
             sum = 0, iter1 = 0;
while (iter1 < size - tmp)
                     {
                          sum += matr[iter1++][iter2];
                      }
                        max = ( sum > max ) ? sum : max;
printf("\nsum = %d", sum);
                       printf("\nmax = %d ", max);
                       ++iter2; ++tmp;
                     }
Спасибо! код рабочий! буду разбираться) особенно мне понравилась строка
C
1
max = ( sum > max ) ? sum : max;
Yandex
Объявления
09.11.2011, 17:43     Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних...
Ответ Создать тему
Опции темы

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