Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 28.09.2016
Сообщений: 21
1

В заданной матрице суммировать элементы указанного столбца согласно условию

07.10.2016, 17:12. Показов 1718. Ответов 9
Метки нет (Все метки)

Помогите разобраться в решении задачи.
Нужно чтобы я ввёл кол-во строк в массиве, затем заполнил сам двумерный массив с клавиатуры, затем найти строчки в массиве с одинаковыми элементами 1 столбца и, где в тех строчках где одинаковые элементы сложить элементы 2 столбца.
Я новичок, в C++ пару недель, не давайте сложные конструкции, пожалуйста.
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
#include <iostream> 
 
#include <cstdlib> 
 
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int N, M;
    int i, j;
    int **A;
    int jj, ii, g = 0;
 
    cout << "Введите кол-во листков : ";cin >> M;
    A = new int*[M]; 
 
    cout << "Введите кол. столбцов матрицы : ";cin >> N;
    cout << "Заполнение матрицы" << endl;
 
 
    for (i = 0; i < M; i++)
    {
        A[i] = new int[N]; 
        
        for (j = 0; j < N; j++)
        {
            cin >> A[i][j];
 
        }
    }
    for (i = 0; i < M; i++)
    {
        for (j = 0;j < N;j++)
        {
            ii = i;jj = j;
            for (jj = 0;jj<2;jj++)
            {
                if ((A[jj][i] == A[j][i]));
                {
                    g = A[ii] - A[i];   
                }
            };
        }
    }
    cout << g;
 
    system("pause");
 
}
Добавлено через 57 секунд
Проблемы начинаются с поиска одинаковых элементов
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2016, 17:12
Ответы с готовыми решениями:

В заданной матрице разместить элементы согласно условию
17.24. Дан двумерный массив. Разместить его строки так, чтобы при их просмотре сверху вниз: б)...

В квадратной матрице, заполненной нулями и единицами, переставить элементы согласно условию
Здравствуйте. Есть такое задание: Дан массив 8х8. Нужно вводить нули и единицы (одна единица в...

В заданной матрице найти наибольший элемент и попарно перемножить элементы строки на элементы столбца
В данной квадратной матрице найти наибольший элемент и попарно перемножить элементы строки, в...

В заданной матрице переставить для каждого столбца последние и максимальные элементы
В заданной матрице переставить для каждого столбца последние и максимальные элементы. сложить...

9
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
07.10.2016, 18:05 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
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream> 
 
#include <cstdlib> 
 
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int N, M;
    int i, j;
    int **A;
    int jj, ii, g = 0;
 
    cout << "Введите кол-во листков : ";cin >> M;
    A = new int*[M];
 
    cout << "Введите кол. столбцов матрицы : ";cin >> N;
    cout << "Заполнение матрицы" << endl;
 
    for (i = 0; i < M; i++)
    {
        A[i] = new int[N];
 
        for (j = 0; j < N; j++)
        {
            A[i][j] = std::rand() % 5 + 1;
            std::cout << A[i][j] << " ";
        }
 
        std::cout << endl;
    }
    
    int* B = new int[N]; int n = 0;
    for (int i = 0; i < N; i++)
    {
        int count = 1;
        for (int k = 0; k < N; k++)
            count = (A[i][0] == A[k][0] && k != i) ? count + 1 : count;
 
        if (count > 1) B[n++] = i;
    }
 
    int sum = 0;
    for (int t = 0; t < n; t++)
         sum += A[B[t]][1]; 
 
    std::cout << endl << "sum = " << sum << endl;
 
    std::cin.get();
    std::cin.get();
}
0
Миниатюры
В заданной матрице суммировать элементы указанного столбца согласно условию  
0 / 0 / 0
Регистрация: 28.09.2016
Сообщений: 21
12.10.2016, 07:38  [ТС] 3
Мне нужно чтобы я сам вводил матрицу с клавиатуры.
Должно быть 2 стобца и n-ное кол-во строк. Программа должна искать строчки с одинаковым значением 1 столбца и в тех строчках, где одинаковое значение 1 столбца, суммировать 2 столбец.
К примеру
21 30
21 40
22 59
45 30
g=30+40
0
0 / 0 / 0
Регистрация: 28.09.2016
Сообщений: 21
12.10.2016, 12:24  [ТС] 4
Помогите разобраться в решении задачи.
Мне нужно чтобы я сам вводил матрицу с клавиатуры.
Должно быть 2 столбца и n-ное кол-во строк. Программа должна искать строчки с одинаковым значением 1 столбца и в тех строчках, где одинаковое значение 1 столбца, суммировать 2 столбец. Возникают ошибки, я новичок и несколько недель в c++.
К примеру:
Введены эти числа:
21 30
25 15
22 20
25 60
22 30
21 50
Программа считает и выводит g

g=(50-30)+(30-20)+(60-15)

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
#include <iostream> 
 
#include <cstdlib> 
 
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int N, M;
    int i, j;
    int **A;
    int jj, ii, g = 0;
 
    cout << "Введите кол-во листков : ";cin >> M;
    A = new int*[M];
 
    cout << "Введите кол. столбцов : ";cin >> N;
    cout << "Заполнение матрицы" << endl;
 
 
    for (i = 0; i < M; i++)
    {
        A[i] = new int[N];
 
        for (j = 0; j < N; j++)
        {
            cin >> A[i][j];
 
        }
    }
    system("cls");
                for (j = 0;j < N;j++)
                {
                    if (A[j] == A[j + 1])
                    {
                        g = A[i][j] - A[i][j + 1];
                    }
                }
 
                
    cout << g << endl;
                
 
    system("pause");
 
}
0
381 / 275 / 478
Регистрация: 09.05.2014
Сообщений: 769
12.10.2016, 15:09 5
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
#include <iostream> 
 
#include <cstdlib> 
 
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int N, M;
    int i, j;
    int **A;
    int jj, ii, g = 0;
 
    cout << "Введите кол-во листков : ";cin >> M;
    A = new int*[M];
 
    cout << "Введите кол. столбцов : ";cin >> N;
    cout << "Заполнение матрицы" << endl;
 
 
    for (i = 0; i < M; i++)
    {
        A[i] = new int[N];
 
        for (j = 0; j < N; j++)
        {
            cin >> A[i][j];
 
        }
    }
    system("cls");
               j=0;
    for (int i=M-1; i>0; i--)
        for (int k=i+1; k>=0; k--)
            if (A[i][j]==A[k][j]) 
                g+=A[i][j+1]-A[k][j+1];
 
                
    cout << g << endl;
                
 
    system("pause");
 
}
0
0 / 0 / 0
Регистрация: 28.09.2016
Сообщений: 21
12.10.2016, 17:10  [ТС] 6
???
0
Миниатюры
В заданной матрице суммировать элементы указанного столбца согласно условию  
14 / 14 / 11
Регистрация: 12.10.2016
Сообщений: 52
12.10.2016, 17:25 7
vasiliy9211, бро, я не совсем понимаю, что нужно тебе в задаче. Не мог бы сформулировать по другому?

Все понял. Сейчас попробую сделать
0
0 / 0 / 0
Регистрация: 28.09.2016
Сообщений: 21
12.10.2016, 18:02  [ТС] 8
Если поможете буду признателен.
0
Заблокирован
12.10.2016, 18:39 9
Пишу на телефоне без компилятора. Так что звиняй если что
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
#include <iostream>
using namespace std;
 
int main()
{
int N, g=0;
int A[1]; // возможно *A[1]. // столбиков же 2 поэтому [1]?
cout  << "  Введи число строк : "; cin >> N;
 
for (int i=0; i < 2; i++)
{
A[i] = new int[N];
for ( int j=0; j< N; j++)
{
cout << "A["<<i<<"]["<<j<<"] = "; cin >> A[i][j];
}}
 
for(int i=0; i<N; i++)
for(int j=i; j<N; j++) 
if ( A[0][i]==A[0][j]) g+=A[1][i]-A[1][j];
 
 cout << "g ="<< g <<endl;
 
delete *A; // возможно не так но удаляй память всегда. Иначе у тебя утечка памяти. Видишь new , нужен delete.
system("pause");
}
Че хочу сказать. Попробуй скомпилить , если есть ошибки (а без них никак с первого раза ), то напиши сюда или сам покопайся. (Эта программа не будет работать с 3 и больше одинаковыми идентификаторами в 1 ом столбике. Уж как приеду, если вопрос будет актуален напишу. а то эти программирования на телефоне не то).
0
14 / 14 / 11
Регистрация: 12.10.2016
Сообщений: 52
13.10.2016, 11:18 10
Сел случайно на старый акк //Flystyle

Добавлено через 16 часов 9 минут
Лови, братишка. Пиши если чего не понял
P.s. под id я подразумеваю твой первый столбец
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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int N, g = 0;
    int **A = new int*[2];// столбиков же 2 поэтому [2]
    cout << "  Введи число строк : "; cin >> N;
 
    for (int i = 0; i < 2; i++)
    {
        A[i] = new int[N];
        if (i == 0)  cout << "Ввод первого столбца" << endl;  //Можешь это удалить, если глаза режет (вводим id)
        else cout << "Ввод второго столбца" << endl;        // (вводим значения)
        for (int j = 0; j< N; j++)
        {
            cout << "A[" << i << "][" << j << "] = "; cin >> A[i][j]; //Сделал нагляднее что ты вводишь
        }
    }
 
    for (int i = 0; i<N; i++)           // i < N т.к. мы перебераем все твои id (первый столбик) 
        for (int j = i+1; j<N; j++)     // j = i+1 т.к. мы взяли id (A[0][i]), то нужно его сравнивать с следующим (A[0][j])
            if (A[0][i] == A[0][j]) { 
                g += A[1][i] - A[1][j]; // Если два айди совпали, то делаем эту махинацию
                A[1][i] = 0;            //Обнуление для того, чтобы если у нас было 3+ одинаковый id то он их считал корректно
                A[1][j] = 0;            //
            }
 
    cout << "g =" << g << endl;
 
    delete A; // Удаляем выделенную память
    system("pause");
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2016, 11:18

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

В заданной матрице найти номер столбца, элементы которого образуют возрастающую последовательность
Дана матрица A размером N  M . Найти номер столбца, элементы которого образуют возрастающую...

По заданной матрице составить динамический массив, элементы которого равны суммам элементов соответствующего столбца
По заданной матрице составить вектор, элементы которого равны суммам элементов соответствующего...

Суммировать элементы столбца матрицы
#include &lt;iostream&gt;; #include&lt;locale&gt; using namespace std; int mas1...

Из заданной последовательности создать новую последовательность согласно условию
2)дана непустая последовательность положительных чисел а1, а2, ..., оканчивающаяся нулем. получить...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.