Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
9 / 4 / 2
Регистрация: 29.11.2018
Сообщений: 215

Вычислить сумму тех столбцов, в которых нет отрицательных элементов

27.11.2019, 10:08. Показов 1349. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я уже второй раз натыкаюсь на эти грабли, но никак не могу понять в чем дело. И через откладчик отслеживал, но так и не понял.
Подскажите, в чем проблема? Нужно вычислить сумму тех столбцов, в которой нету отрицательных элементов. С квадратной матрицей работает отлично, при прямоугольной выбивает ошибку. в строке
C++
1
if (matrix[i][j] < 0)
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
#include <iostream>
#include <math.h>
#include <time.h>
#include <Windows.h>
 
using namespace std;
void create(int** arr, int& m, int& n) {
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++)
            arr[i][j] = rand() % 25-5;
    }
}
void show(int** arr, int& m, int& n) {
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++)
            cout << arr[i][j] << "\t";
        cout << endl;
    }
}
void sum(int** matrix, int& m, int& n) {
    int sum, i;
    for (int j = 0; j < m; j++) {
        sum = 0;
        for (i = 0; i < n; i++) {
            if (matrix[i][j] < 0)
                break;
            sum += matrix[i][j];
        }
        if (i == n)
            cout << "sum" << j << " = " << sum << "\n";
    }
}
/*int findMax(int *&arr, int cap) {
    int Min = arr[0];
    for (int i = 0; i < cap; i++) {
        if (arr[i] < Min)
            Min = arr[i];
    }
    return Min;
}*/
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(0, "");
    srand(time(NULL));
 
    int n, m;
    cin >> m >> n;
    int** matrix = new int* [m];
    for (int i = 0; i < m; i++)
        matrix[i] = new int[n];
    //int cap = m + n - 1;
    //int* arr = new int[cap];
    
    create(matrix, m, n);
    show(matrix, m, n);
    sum(matrix, m, n);
    //cout << "FindMax: "<< findMax(arr, cap) << endl;
    
 
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.11.2019, 10:08
Ответы с готовыми решениями:

Определить сумму элементов в тех столбцах матрицы, в которых нет отрицательных элементов
Дана прямоугольная цельночисельная матрица. Определить: - сумму элементов у тех столбцах, в которых НЕТ отрицательных элементов, - минимум...

Найти сумму в тех строках матрицы, в которых нет отрицательных элементов
Программа должна найти сумму в тех строках в которых нету отрицательных элементов и вывести их .

Вычислить сумму элементов тех столбцов, у которых 1-й элемент положителен
Друзья помогите пожалуйста, очень надо, преподаватель дал задачи, а я вообще Паскаль не знаю. Если можно напишите текст программы...

13
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
27.11.2019, 10:30
Цитата Сообщение от Pavlory Посмотреть сообщение
С квадратной матрицей работает отлично, при прямоугольной выбивает ошибку. в строке
Перепутал размерности, везде
if (matrix[j][i] < 0)

Добавлено через 3 минуты
Обычно циклы делаются наоборот
C++
1
2
3
for (int i = 0; i < m; ++i) //Строки
    for (int j = 0; j < n; ++j) //Столбцы
          matrix[i][j] = .........
0
Just Do It!
 Аватар для XLAT
4189 / 2644 / 654
Регистрация: 23.09.2014
Сообщений: 8,898
Записей в блоге: 3
27.11.2019, 10:41
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Перепутал размерности, везде
там афтор желает(я телепат) пройтись отдельно по каждому столбцу,

Цитата Сообщение от oleg-m1973 Посмотреть сообщение
C++
1
2
3
for (int i = 0; i < m; ++i) //Строки
 for (int j = 0; j < n; ++j) //Столбцы
 matrix[i][j] = .........
это должно выглядеть так:

C++
1
2
3
for (int i = 0; i < n; ++i) //Столбцы
    for (int j = 0; j < m; ++j) //Строки
          matrix[j][i] = .........

Кликните здесь для просмотра всего текста

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
#include <iostream>
#include <math.h>
#include <time.h>
#include <Windows.h>
 
using namespace std;
void create(int** arr, int& m, int& n)
{   for (int i = 0; i < m; i++)
    {   for (int j = 0; j < n; j++)
            arr[i][j] = rand() % 25-5;
    }
}
void show(int** arr, int& m, int& n)
{   for (int i = 0; i < m; i++)
    {   for (int j = 0; j < n; j++)
            cout << arr[i][j] << "\t";
        cout << endl;
    }
}
void sum(int** matrix, int& m, int& n)
{   int sum;
    for (int i = 0; i < n; i++)
    {   sum = 0;
        for (int j = 0; j < m; j++)
        {   if (matrix[j][i] < 0)
                break;
            sum += matrix[j][i];
        }
        if (i == n-1)
            cout << "sum[" << i << "]"<< " = " << sum << "\n";
    }
}
    
    int main()
    {   SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        setlocale(0, "");
        srand(time(NULL));
 
        int n, m;
        cin >> m >> n;
        int** matrix = new int* [m];
        for (int i = 0; i < m; i++)
            matrix[i] = new int[n];
        //int cap = m + n - 1;
        //int* arr = new int[cap];
 
        create(matrix, m, n);
        show(matrix, m, n);
        sum(matrix, m, n);
        //cout << "FindMax: "<< findMax(arr, cap) << endl;
 
 
        return 0;
    }
0
Модератор
Эксперт С++
 Аватар для zss
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,234
27.11.2019, 10:59
Цитата Сообщение от XLAT Посмотреть сообщение
if (i == n-1)
надо
C++
1
if(j==m)
(т.е. условие того, что не было преждевременного выхода из цикла по j)

Добавлено через 2 минуты
Цитата Сообщение от Pavlory Посмотреть сообщение
#include <Windows.h>
...
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale(0, "");
Цитата Сообщение от Pavlory Посмотреть сообщение
#include <math.h>
Pavlory, Где в Вашей программе это используется?
0
9 / 4 / 2
Регистрация: 29.11.2018
Сообщений: 215
27.11.2019, 11:05  [ТС]
Цитата Сообщение от zss Посмотреть сообщение
Pavlory, Где в Вашей программе это используется?
Только сейчас добавил строчки на кириллице. А math.h действительно лишняя.

Добавлено через 16 секунд
Цитата Сообщение от XLAT Посмотреть сообщение
афтор
Прозвучало, как оскорбление.
0
Just Do It!
 Аватар для XLAT
4189 / 2644 / 654
Регистрация: 23.09.2014
Сообщений: 8,898
Записей в блоге: 3
27.11.2019, 12:10
Цитата Сообщение от Pavlory Посмотреть сообщение
Прозвучало, как оскорбление.
это такие учителя у меня были,
кстати очень приличные,
в моих проэктах всегда так меня называли.
чсв моё от этого никак не пострадало.

Пока вы пишете кривой код, то вы будете афтором.
когда ваш проэкт превратится в проект то только тогда станете автором.
Т.е. афторы пишут проэкты, а авторы пишут проекты.

моё имхо, извините за правду, тут ничего личного.

Цитата Сообщение от zss Посмотреть сообщение
(т.е. условие того, что не было преждевременного выхода из цикла по j)
это условие того, что нужно(не мне) распечатать сумму последнего столбца.
0
9 / 4 / 2
Регистрация: 29.11.2018
Сообщений: 215
27.11.2019, 12:11  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
Пока вы пишете кривой код, то вы будете афтором.
Значит буду афтором до конца жизни
Программист из меня не выйдет, а задачки эти решаю чисто из-за учебы, практика сейчас у меня.
0
Just Do It!
 Аватар для XLAT
4189 / 2644 / 654
Регистрация: 23.09.2014
Сообщений: 8,898
Записей в блоге: 3
27.11.2019, 12:16
Цитата Сообщение от Pavlory Посмотреть сообщение
Программист из меня не выйдет
вы не правы,
потому что
любая человеческая деятельность есть планирование.
А в широком контексте планирование и программирование есть синонимы.

Если же контекст приземлить,
то на самом деле всё будет решать опыт.
"Опыт это сын ошибок трудных..."

Очень много умных людей не умеют писать программы,
только потому, что их никогда не писали!


Упорные тренировки, это не только в хокее или в балете,
но и в программировании тоже.

Тренируйтесь, на сколько вам будет позволять ваша ВОЛЯ!
0
9 / 4 / 2
Регистрация: 29.11.2018
Сообщений: 215
27.11.2019, 12:20  [ТС]
Спасибо за мотивационные слова, но я уже второй год замечаю, что с трудом у меня получается. Я хоть и делаю это, но не без интернета и помощи одногруппников, и не редко прошу помощи на этом форуме. В то время, как мой одногруппник уже почти год работает во фронт-энд разработке и в свои 17 имеет 400$ в месяц.
Меня больше интересует сфера тестирования. Я не сильно туда вникал, но уже точно вижу, что как программист я закончился, толком не начавшись.
0
Just Do It!
 Аватар для XLAT
4189 / 2644 / 654
Регистрация: 23.09.2014
Сообщений: 8,898
Записей в блоге: 3
27.11.2019, 12:24
а вот ещё,
если вас назвали бы нубом, вы обиделись бы?
А вот многие наоборот, даже хвастаются этим, хотя бы только потому, что это просто забавно.
В общем Гагарин, тоже не сразу в космос полетел.
Через этап новичка проходят абсолютно все!!!

Добавлено через 2 минуты
Цитата Сообщение от Pavlory Посмотреть сообщение
но уже точно вижу
все ясно,
почему у вас такая реакция.
у вас сильно занижена чсв.

срочно надо его повышать,
методом задач, которые вы уже решите.
0
9 / 4 / 2
Регистрация: 29.11.2018
Сообщений: 215
27.11.2019, 12:29  [ТС]
Даа, я начинаю гореть, когда у меня что-то не получается... Отец хотел отдать меня в академию "Шаг" на курс фронт-энда. Я боялся, что он потратит много денег, а я не оправдаю надежду. Это же чувству было, когда мне покупали ноутбук для учебы.
0
Just Do It!
 Аватар для XLAT
4189 / 2644 / 654
Регистрация: 23.09.2014
Сообщений: 8,898
Записей в блоге: 3
27.11.2019, 13:00
Pavlory,
на самом деле всё бывает гораздо проще:
вот ваш код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void sum(int** matrix, int& m, int& n) {
    int sum, i;
    for (int j = 0; j < m; j++) {
        sum = 0;
        for (i = 0; i < n; i++) {
            if (matrix[i][j] < 0)
                break;
            sum += matrix[i][j];
        }
        if (i == n)
            cout << "sum" << j << " = " << sum << "\n";
    }
}
а теперь назовем вещи своими именами:
m переменуем в ROW
n переменуем в COL

i в r
j в с

Также вы знаете, что
в двумерном массиве сначала идут строки, а потом столбцы:
Обявление массива должно выгялеть так: matrix[ROW][COL]
итого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void sum(int** matrix, int& ROW, int& COL) {
    int sum, r;
    for     (int c = 0; c < ROW; c++) {
        sum = 0;
        for (    r = 0; r < COL; r++) {
            if (matrix[c][r] < 0)
                break;
            sum += matrix[r][c];
        }
        if (r == n)
            cout << "sum" << c << " = " << sum << "\n";
    }
}
Теперь даже беглого взгляда достаточно, чтобы увидеть ошибку.

О чем это?
Я о том, что в хаосе достаточно сложно разбираться.
0
9 / 4 / 2
Регистрация: 29.11.2018
Сообщений: 215
27.11.2019, 13:14  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
хаосе достаточно сложно разбираться
Да, я заметил, спасибо
Примите мои огромные благодарствия за ваши слова. Вы много времени уделили этой теме, мне аж неловко, что незнакомый человек так меня мотивирует
Спасибо Вам большое.
0
Just Do It!
 Аватар для XLAT
4189 / 2644 / 654
Регистрация: 23.09.2014
Сообщений: 8,898
Записей в блоге: 3
27.11.2019, 13:27
Цитата Сообщение от Pavlory Посмотреть сообщение
Да, я заметил
далее вам этот подход нужно не просто запомнить и знать что он есть,
а регулярно применять в задачах с двумерными массивами, где нужно крутить их индексы.

Вы удивитесь, как резко возрастет ваша скорость в выпекании решения проходящего тесты.

И так во всем!
Правильные методологии с достаточным набором техник, определят ваш успех.
В этом и есть смысл любой учебы.

Дальше просто идет ремесло, рутинное закручивание гаек на конвейере.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.11.2019, 13:27
Помогаю со студенческими работами здесь

Вычислить сумму тех элементов матрицы, номера строк и столбцов которых принадлежат множествам s1 и s2
Просьба писать простые программы, объясняя каждое действие. Вычислить сумму тех элементов матрицы, номера строк и столбцов которых...

Вычислить сумму тех элементов матрицы, номера строк и столбцов которых принадлежат некоторым множествам / С++
Дана квадратная матрица А и два непустых множества S1 и S2, состоящие из каких-то элементов от 1 до 10, например S1= и S2=. Вычислить сумму...

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

Вычислить сумму элементов тех столбцов матрицы, первый элемент которых превосходит заданное число a
Вычислить сумму элементов тех столбцов двухмерного массива(3*4),первый элемент которых превосходит заданное число a. с процедурами и...

Вычислить сумму тех элементов матрицы, номера строк и столбцов которых принадлежат соответственно непустым множествам S1 и S2.
Вычислить сумму тех элементов матрицы, номера строк и столбцов которых принадлежат соответственно непустым множествам S1 и S2.


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru