Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 09.04.2016
Сообщений: 11

Поиск суммы элементов столбцов матрицы, заполненной случайными числами

23.11.2017, 15:56. Показов 3885. Ответов 12

Студворк — интернет-сервис помощи студентам
Привет форумчане! Необходимо написать программу, с несколькими нюансами, для начала текст задания:
Для матрицы B (N,M), N<=M, M<=10, найти сумму элементов каждого столбца матрицы. Сформировать массив D из найденных сумм.
Напишите функции:
1.Заполнения двумерного массива случайными числами из диапазона -20, +100.
2.Вывода двумерного массива.
3.Поиска суммы элементов столбцы матрицы.
Всё.
А теперь о нюансах, помимо этих трех функций должны быть еще 2:
1.Выделения памяти под двумерный массив.
2.Удаления памяти ранее выделенной под массив.
Заранее спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.11.2017, 15:56
Ответы с готовыми решениями:

Среди столбцов заданной целочисленной матрицы, заполненной случайными числами, порядка n* n, найти столбец с элементами
что не так? Среди столбцов заданной целочисленной матрицы, заполненной случайными числами, порядка n* n, найти столбец с элементами...

Вычислить сумму элементов целочисленной матрицы, заполненной случайными числами
Написать приложение, которое считает сумму элементов матрицы. Дана целочисленная матрица. Она заполнена случайными числами интервала,...

Найти наименьший элемент прямоугольной матрицы, заполненной случайными числами
2.Найти наименьший элемент прямоугольной матрицы X(20х10), заполненной случайными числами на отрезке от -10 до 50 и вывести на экран номер...

12
23.11.2017, 16:15

Не по теме:

Цитата Сообщение от Kyvalda Посмотреть сообщение
Заранее спасибо!
Смайлик - это скрытый намёк на вид благодарности? Ну я не против, если доставка будет осуществлена мне домой...:D

0
0 / 0 / 1
Регистрация: 09.04.2016
Сообщений: 11
23.11.2017, 16:17  [ТС]
Насчет доставки не думаю, но на карту могу скинуть)
0
23.11.2017, 16:20

Не по теме:

Цитата Сообщение от Kyvalda Посмотреть сообщение
на карту
Даже жидкости, а также бутылки?=-O Научите, если не сложно))). А если серьёзно, то тут только добрые феи и делают всё от чистого сердца.

0
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
23.11.2017, 16:32
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <iostream>
#include <random>
#include <vector>
 
void fillMatrix( std::vector<std::vector<int>>& matrix );
void printMatrix( std::vector<std::vector<int>>& matrix );
std::vector<int> sumOfColums( std::vector<std::vector<int>>& matrix );
 
int main( ) {
 
    std::size_t cols { 0 };
    std::size_t rows { 0 };
 
    std::cout
        << "Please, enter the number of rows and cols: ";
    std::cin
        >> rows >> cols;
 
    if ( cols > 10 || rows > cols ) {
 
        std::cerr
            << "The number of cols must be more than rows and the number of cols " << std::endl
            << "must be less than 10" << std::endl;
 
        return 1;
 
    }
 
    std::vector<std::vector<int>> matrix( rows, std::vector<int>(cols) );
 
    fillMatrix( matrix );
    printMatrix( matrix );
 
    std::cout
        << std::endl;
 
    std::vector<int> sums { sumOfColums( matrix ) };
 
    for ( const auto& element : sums ) {
 
        std::cout
            << element << " ";
 
    }
 
    std::cout
        << std::endl;
 
    return 0;
 
}
 
void fillMatrix( std::vector<std::vector<int>>& matrix ) {
 
    std::random_device rd;
    std::mt19937 gen( rd( ) );
    std::uniform_int_distribution<int> dist( -20, 100 );
 
    for ( auto& row : matrix ) {
 
        for ( auto& element : row ) {
 
            element = dist( gen );
 
        }
 
    }
 
}
 
void printMatrix( std::vector<std::vector<int>>& matrix ) { 
 
    for ( const auto& row : matrix ) {
 
        for ( const auto& element : row ) {
 
            std::cout
                << element << " ";
 
        }
 
        std::cout
            << std::endl;
 
    }
 
}
 
std::vector<int> sumOfColums( std::vector<std::vector<int>>& matrix ) {
 
    std::size_t countRows { matrix.size( ) };
    std::size_t countCols { matrix.at( 0 ).size( ) };
 
    std::vector<int> sums( countCols );
 
    for ( const auto& row : matrix ) {
 
        std::size_t i { 0 };
 
        for ( const auto& element : row ) {
 
            sums.at( i++ ) += element;
 
        }
 
    }
 
    return sums;
 
}
0
0 / 0 / 1
Регистрация: 09.04.2016
Сообщений: 11
23.11.2017, 16:47  [ТС]
В VS 10 не хочет компилироваться
Кликните здесь для просмотра всего текста
1>c:\users\николай\documents\visual studio 2010\projects\test\test\test.cpp(11): error C2601: cols: недопустимые локальные определения функций
1> c:\users\николай\documents\visual studio 2010\projects\test\test\test.cpp(9): эта строка содержит "{", которая пока не имеет парной
1>c:\users\николай\documents\visual studio 2010\projects\test\test\test.cpp(11): error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
1>c:\users\николай\documents\visual studio 2010\projects\test\test\test.cpp(12): error C2470: rows: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции
1>c:\users\николай\documents\visual studio 2010\projects\test\test\test.cpp(17): error C2065: rows: необъявленный идентификатор
1>c:\users\николай\documents\visual studio 2010\projects\test\test\test.cpp(17): error C2065: cols: необъявленный идентификатор
1>c:\users\николай\documents\visual studio 2010\projects\test\test\test.cpp(19): error C2065: cols: необъявленный идентификатор
1>c:\users\николай\documents\visual studio 2010\projects\test\test\test.cpp(19): error C2065: rows: необъявленный идентификатор
1>c:\users\николай\documents\visual studio 2010\projects\test\test\test.cpp(19): error C2065: cols: необъявленный идентификатор
1>c:\users\николай\documents\visual studio 2010\projects\test\test\test.cpp(29): fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции

А возможно переделать ваш код с использованием std::srand, вместо библиотеки random?
И без векторов желательно, я так понял #include <vector> вы используете для одномерного массива, думаю можно как то реализовать без этой библиотеки. И самое главное, нужны указатели или ссылки
0
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
23.11.2017, 16:54
Цитата Сообщение от Kyvalda Посмотреть сообщение
В VS 10
Поддержку стандарта C++14 надо включить. Или C++11, не знаю наверняка.
Цитата Сообщение от Kyvalda Посмотреть сообщение
А возможно переделать ваш код с использованием std::srand, вместо библиотеки random?
Наверное, можно.
Цитата Сообщение от Kyvalda Посмотреть сообщение
И без векторов желательно, я так понял #include <vector> вы используете для одномерного массива, думаю можно как то реализовать без этой библиотеки. И самое главное, нужны указатели или ссылки
Зачем реализовывать без этой библиотеки, если это часть стандартной библиотеки C++?! Взялись писать на C++, пишите на нем.
0
45 / 41 / 50
Регистрация: 04.04.2015
Сообщений: 80
23.11.2017, 17:21
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
#include <ctime>
 
using namespace std;
 
void fill_array(int **ar, int n, int m);
void show_array(int **ar, int n, int m);
int search_summ_elements(int **ar, int n, int m);
 
int main()
{
    srand(time(0));
    int M, N;
 
    cout << "Vvedite M: ";
    cin >> M;
 
    while(M > 10 || M < 0)
    {
        if(M > 10)
            cout << "Error: M > 10" << endl;
        if(M < 0)
            cout << "Error: M < 0" << endl;
 
        cout << "Vvedite M: ";
        cin >> M;
    }
 
    cout << "Vvedite N: ";
    cin >> N;
 
    while(N > M || N < 0)
    {
        if(N > M)
            cout << "Error: N > M" << endl;
        if(N < 0)
            cout << "Error: N < 0" << endl;
 
        cout << "Vvedite N :";
        cin >> N;
    }
 
    int **B = new int* [N]; // строк в массиве
    for (int count = 0; count < N; count++)
        B[count] = new int [M]; // и столбцов
 
    fill_array(B,N,M);
    show_array(B,N,M);
 
    int *D = new int[M];
 
    for(int i = 0; i < N; i++)
    {
         D[i] = search_summ_elements(B,N,i);
         cout << "Summa " << i << "-go stolbca = " << D[i] << endl;
    }
 
    for (int count = 0; count < N; count++)
        delete [] B[count];
    delete []D;
 
    return 0;
}
 
void fill_array(int **ar, int n, int m)
{
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            ar[i][j] = -20 + rand() % 120;
        }
    }
}
 
void show_array(int **ar, int n, int m)
{
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            cout << ar[i][j] << "   ";
        }
        cout << "\n";
    }
 
}
 
int search_summ_elements(int **ar, int n, int m)
{
    int sum = 0;
    for(int i = 0; i < n; i++)
    {
        sum = sum + ar[i][m];
    }
    return sum;
}
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
23.11.2017, 17:23
Цитата Сообщение от Kyvalda Посмотреть сообщение
написать программу, с несколькими нюансами
Все ведь знают этот анекдот про поручика и нюанс?
0
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
23.11.2017, 17:26
Я не знаю.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
23.11.2017, 17:42
Лучший ответ Сообщение было отмечено Kyvalda как решение

Решение

Цитата Сообщение от Nishen Посмотреть сообщение
Поддержку стандарта C++14 надо включить. Или C++11, не знаю наверняка.
В VS2010 не завезли ни переключение версии стандарта ни поддержку используемых в коде элементов С++11

Добавлено через 16 минут
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <clocale>
#include <cstdlib>
#include <ctime>
#include <iostream>
 
 
// выделение памяти
int** Create(const size_t rows, const size_t columns)
{
    int **arr = new int*[rows];
    for (size_t row = 0; row < rows; row++)
        arr[row] = new int[columns];
 
    return arr; // возвращаем указатель на выделенную дин. память
}
 
// освобождение памяти
void Delete(int **matrix, const size_t rows)
{
    for (size_t row = 0; row < rows; row++)
        delete[] matrix[row];
    delete[] matrix;
    matrix = 0;
}
 
// заполнение псевдо-случайными числами
void Generate(int **matrix, const size_t rows, const size_t columns)
{
    for (size_t row = 0; row < rows; row++)
        for (size_t column = 0; column < columns; column++)
            matrix[row][column] = rand() % 121 - 20;
}
 
// вывод матрицы на экран
void Print(int **matrix, const size_t rows, const size_t columns)
{
    for (size_t row = 0; row < rows; row++)
    {
        for (size_t column = 0; column < columns; column++)
            std::cout << matrix[row][column] << " "; // выводим элемент
        std::cout << std::endl; // перевод строки
    }
}
 
// работа с матрицей
void Process(int **matrix, const size_t rows, const size_t columns, int *result)
{
    for (size_t column = 0; column < columns; column++)
    {
        result[column] = 0;
        for (size_t row = 0; row < rows; row++)
            result[column] += matrix[row][column];
    }
}
 
int main()
{
    setlocale(LC_ALL, "rus"); // установим локаль для вывода русских символов
    srand(time(0)); // инициализируем ПГСЧ
 
    size_t rows, columns; // строки и столбцы
    // вводим размеры матрицы
    std::cout << "Введите количество строк матрицы: ";
    std::cin >> rows;
    std::cout << "Введите количество столбцов матрицы: ";
    std::cin >> columns;
 
    // выделяем память под матрицу
    int **matrix = Create(rows, columns);
    // заполнение случайными числами
    Generate(matrix, rows, columns);
    // вывод на экран
    Print(matrix, rows, columns);
 
    // выделяем память под результирующий массив
    int *sums = new int[columns];
    // заполняем его
    Process(matrix, rows, columns, sums);
    // выводим на экран
    std::cout << "Массив с суммами столбцов:\n";
    for (size_t column = 0; column < columns; column++)
        std::cout << sums[column] << " ";
    std::cout << std::endl;
    // освобождаем память
    delete[] sums;
 
    // освобождаем динамическую память
    Delete(matrix, rows);
    // ждём нажатия клавиши перед выходом из приложения
    system("pause");
}
1
0 / 0 / 1
Регистрация: 09.04.2016
Сообщений: 11
23.11.2017, 19:10  [ТС]
Спасибо за решение всем, остановлюсь на конечном от MrGluck, всё в нем хорошо, сможете еще массив с суммами столбцов сделать в отдельную функцию и вызывать в main? Спасибо огромное!
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
23.11.2017, 21:56
Цитата Сообщение от Kyvalda Посмотреть сообщение
сможете еще массив с суммами столбцов сделать в отдельную функцию и вызывать в main?
Так а что по вашему Process делает?
В функцию расчёта суммы в любом случае придётся передавать весь двумерный массив с размерами.
Ну и вы всегда в праве доработать решение под свои нужды.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2017, 21:56
Помогаю со студенческими работами здесь

Сформировать суммы элементов строк матрицы и суммы элементов столбцов матрицы
Добрый день господа программисты, я к вам с небольшим вопросом. Мне необходимо написать программу в которой генерируется матрица...

Заполнить матрицу случайными числами. На главной диагонали разместить суммы элементов, которые лежат на той же строке и том же столбце
Заполнить матрицу случайными числами. На главной диагонали разместить суммы элементов, которые лежат на той же строке и том же столбце. ...

Получить сумму элементов столбцов матрицы, являющихся простыми числами
нужна помощь в решении задачи(через динамичное выделение памяти) Дана матрица размерности nxm. Получить одномерный массив a, хранящий...

Вычислить суммы элементов столбцов матрицы
Помогите доработать программу,условие такое :Задана прямоугольная матрица В размера m*n.Вычислить суммы элементов столбцов,номера которых...

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru