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

Сумма элементов в столбце - C++

Восстановить пароль Регистрация
 
labrador
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 50
16.11.2014, 21:11     Сумма элементов в столбце #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
#include <iostream>
#include <conio.h>
using namespace std;
 int main()
 
{
     const int q = 4, w = 4;
    int mas[q][w];
    int s = 1, n = 0, p = 1;
    for (int i = 1; i < 5; i++)
    {
        for (int j = 1; j < 5; j++)
            if (s <= 16)
            {
            mas[i][j] = s;
            s++;
            }
        
    }
 
    for (int i = 1; i < 5; i++)
    {
        for (int j = 1; j < 5; j++)
            cout << mas[i][j] << "\t";
            cout << endl;
    }
 
    for (int i = 1; i < 5; i++)
    {
        for (int j = 1; j < 5; j++)
            if (i == 1 && j % 2 == 0) // Ищем первый элемент четного столбца
            {
 
            for (int x = 1; x < 5; x++)
 
                for (int z = 1; z < 5; z++)
                    // Ищем элементы в четных столбцах
                    if (z % 2 == 0)
                    {
                        n += mas[x][z];
                    }
                    //n = n / 4;
                    cout << n << endl;
                    //cout << p << endl;
                    //mas[x][z] = n;
            }
    }
    cout << "----------------------------" << endl;
    for (int i = 1; i < 5; i++)
    {
        for (int j = 1; j < 5; j++)
            cout << mas[i][j] << "\t";
        cout << endl;
    }
 
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2014, 21:11     Сумма элементов в столбце
Посмотрите здесь:

В каждом столбце обнулите минимальное количество элементов так, чтобы сумма элементов столбца не превышала заданную C++
Составить программу, в которой вычислить z=(s1+s2)/(k1*k2), где s1 и k1 - сумма и количество положительных элементов массива Х[N]; s1 u k2 - сумма C++
Определить можно ли в двумерном массиве найти такой столбец, который разбивает массив на два так, что сумма элементов в первом больше, чем сумма элеме C++
что у меня не правильно? (поменять знак элементов столбца, вывести сумму отрицательных элементов в столбце, действия для столбцов) C++
C++ Поменять знак элементов столбца матрицы.Вывести на экран сумму отрицательных элементов в столбце.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Blagodetel
10 / 10 / 6
Регистрация: 16.12.2013
Сообщений: 66
16.11.2014, 21:35     Сумма элементов в столбце #2
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
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale (LC_ALL,"Russian");
 
    int n;
    cin >> n;
    int m;
    cin >> m;
 
     int **arr = new int* [n]; 
    for (int count = 0; count < n; count++)
        arr[count] = new int [m]; 
 
     for (int row=0; row<n; row++ ) 
       for ( int column=0; column<m; column++ )
         cin >> arr[row][column];
 
     for (int row=0; row<n; row++ ) 
     {
       for ( int column=0; column<m; column++ )
         cout << arr[row][column] << " ";
       cout << endl;
     }
 
     int sum=0;
 
     for (int row=0; row<n; row++ ) 
       for ( int column=0; column<m; column++ )
       {
           if ( (column+1)%2==0 )
           sum= sum + arr[row][column];
       }
 
     cout << sum << endl;
    system("pause");
    return 0;
}
labrador
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 50
16.11.2014, 22:56  [ТС]     Сумма элементов в столбце #3
Нужна сумма каждого четного столбца отдельно. Т.е. допустим у первого своя сумма элементов у второго своя.
mss307
118 / 118 / 25
Регистрация: 14.12.2013
Сообщений: 352
17.11.2014, 00:06     Сумма элементов в столбце #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
int sum=0;
 
     for (int  j=0; j<m; j++ ) 
     {
         sum = 0;
         if(j%2==0)
         {
               for ( int i=0; i<n; i++ )
                      sum= sum + arr[i][j];
               std::cout << sum << std::endl,
          }
      }
labrador
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 50
17.11.2014, 10:13  [ТС]     Сумма элементов в столбце #5
Цитата Сообщение от mss307 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
int sum=0;
 
     for (int  j=0; j<m; j++ ) 
     {
         sum = 0;
         if(j%2==0)
         {
               for ( int i=0; i<n; i++ )
                      sum= sum + arr[i][j];
               std::cout << sum << std::endl,
          }
      }
Тут же вроде только сумму первого четного столбца считает. Надо чтобы считал сумму каждого четного столбца в отдельности от предыдущего. Тут тем более, он в цикле все время нули будет присваивать и ноль с нулем складывать.
mss307
118 / 118 / 25
Регистрация: 14.12.2013
Сообщений: 352
17.11.2014, 10:27     Сумма элементов в столбце #6
Цитата Сообщение от labrador Посмотреть сообщение
Тут же вроде только сумму первого четного столбца считает
нет, считает сумму для каждого четного столбца и выводит ее на экран.

Цитата Сообщение от labrador Посмотреть сообщение
Тут тем более, он в цикле все время нули будет присваивать и ноль с нулем складывать.
С чего это?

вот пример использования данного куска кода, выводящий значения 5, 15 и 25:
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
#include <iostream>
 
int main(int argc, char *argv[])
{
    const int n = 5;
    const int m = 5;
    int     mas[n][m] =
    {
        {1, 2, 3, 4, 5},
        {1, 2, 3, 4, 5},
        {1, 2, 3, 4, 5},
        {1, 2, 3, 4, 5},
        {1, 2, 3, 4, 5}
    };
 
    int     sum = 0;
 
    for (int  j=0; j<m; j++ )
    {
        sum = 0;
        if(j%2==0)
        {
            for ( int i=0; i<n; i++ )
                sum= sum + mas[i][j];
            std::cout << sum << std::endl;
        }
    }
 
    return  0;
}
labrador
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 50
17.11.2014, 12:44  [ТС]     Сумма элементов в столбце #7
Не подскажите, почему итерация не останавливается? После того, как высчитал суммы элементов в столбцах он продолжает считать и прибавлять к этим суммам новые значения.

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
62
63
64
#include <iostream>
#include <conio.h>
using namespace std;
 int main()
 
{
     const int q = 5, w = 5; int n = 0;
    int mas[q][w];
    int s = 1, p = 1;
    for (int i = 1; i < q; i++)
    {
        for (int j = 1; j < w; j++)
            if (s <= 16)
            {
            mas[i][j] = s;
            s++;
            }
        
    }
 
    for (int i = 1; i < q; i++)
    {
        for (int j = 1; j < w; j++)
            cout << mas[i][j] << "\t";
            cout << endl;
    }
    /////////////////////////////////////
    for (int i = 1; i < q; i++)
    {
        for (int j = 1; j < w; j++)
        
            if (i == 1 && j % 2 == 0) // Ищем первый элемент четного столбца
            {
 
                for (int x = 1; x < w; x++)
                {
                    n = 0;
                    if (x % 2 == 0)
                    {
                        for (int z = 1; z < q; z++)
                        
                            n += mas[z][x];   // сумма элементов в столбце
                            cout << n << endl;     
                            
                        
                        mas[i][j] = n; // присваеваем первому элементу значение суммы всех элементов в столбце
                    
                        }
                }
                
            }
        
    }
    cout << "----------------------------" << endl;
    for (int i = 1; i < q; i++)
    {
        for (int j = 1; j < w; j++)
            cout << mas[i][j] << "\t";
        cout << endl;
    }
 
    _getch();
    return 0;
}
Добавлено через 35 минут
актуально
mss307
118 / 118 / 25
Регистрация: 14.12.2013
Сообщений: 352
17.11.2014, 13:07     Сумма элементов в столбце #8
labrador, что-то ты намудрил. задание полностью напиши.

Добавлено через 4 минуты
Цитата Сообщение от labrador Посмотреть сообщение
if (i == 1 && j % 2 == 0) // Ищем первый элемент четного столбца
это не первый, а второй элемент. в с++ индексация идет с 0. а суммирование продолжается потому что ты n не обнуляешь при переходе к следующему столбцу.

Добавлено через 8 минут
кошмар. учи матчасть. многие твои беды из-за неправильной индексации.

вот пример (на основе твоего кода), как найти сумму элементов для каждого четного столбца и заменить ей нулевой элемент:
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
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
   const int q = 5, w = 5; int sum = 0;
   int mas[q][w];
   int s = 1, p = 1;
   for (int i = 0; i < q; i++)
   {
       for (int j = 0; j < w; j++)
       {
           mas[i][j] = i + j;
           cout << mas[i][j] << "\t";
       }
       cout << endl;
   }
 
 
   /////////////////////////////////////
   for (int  j=0; j<w; j++ )
   {
       sum = 0;
       if(j%2==0)
       {
           for ( int i=0; i<q; i++ )
               sum = sum + mas[i][j];
           std::cout << sum << std::endl;
           mas[0][j] = sum;
       }
   }
   cout << "----------------------------" << endl;
   for (int i = 0; i < q; i++)
   {
       for (int j = 0; j < w; j++)
           cout << mas[i][j] << "\t";
       cout << endl;
   }
 
 
    return  0;
}
labrador
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 50
17.11.2014, 16:37  [ТС]     Сумма элементов в столбце #9
Что то я перемудрил. Спасибо большое.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2014, 17:24     Сумма элементов в столбце
Еще ссылки по теме:

Удалить из матрицы A все строки, сумма элементов которых четна, а из матрицы B – строки, сумма элементов которых нечетна(функции) C++
В матрице К размером m*n найти в каждом столбце произведение отрицательных элементов и количество нулевых элементов в матрице C++
C++ Максимальная сумма элементов строки / минимальная сумма элементов столбца матрицы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
mss307
118 / 118 / 25
Регистрация: 14.12.2013
Сообщений: 352
17.11.2014, 17:24     Сумма элементов в столбце #10
labrador, не за что
Yandex
Объявления
17.11.2014, 17:24     Сумма элементов в столбце
Ответ Создать тему
Опции темы

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