Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2022, 13:53   #1
himecu
Пользователь
 
Регистрация: 09.12.2021
Сообщений: 32
По умолчанию Найти количество положительных элементов в каждой строке матрицы

Ввести матрицу A(NxM), вывести ее. В каждой строке матрицы найти k –количество положительных элементов. В строках все элементы после k-го увеличить на сумму положительных элементов этой строки.
3.jpg
помогите, в чем может быть проблема, что программа неправильно выводит измененный массив
а должен он выводить следующее:
-2 2 6
-3 10 -3
Код:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian"); 
int n, m;
cout << "Введите количество строк: ";
cin >> n;
cout << "Введите количество столбцов: ";
cin >> m;
int A[10][10];
for (int i=0; i<n; i++)
        for (int j=0; j<m; j++) {
            cout<<"\nA["<<i<<"]["<<j<<"]=";
            cin>>A[i][j];
    }
 
cout << "\nМассив A:"; 
for (int i = 0; i < n; i++) {
    cout<<"\n";
for (int j = 0; j < m; j++)
    cout<<"\t"<<A[i][j];
}
cout<<endl;
int k;
for (int i = 0; i < n; i++)
{
    k=0;
        for (int j = 0; j < m; j++) 
            if(A[i][j]>0) 
            k++;
}
 
int sum;
for (int i=0; i<n; i++)
{
    sum=0;
        for (int j=0; j<m; j++)
            if (A[i][j]>0)
                sum+=A[i][j];
}
 
for (int i = k; i < n; i++) {
    for (int j = 0; j < m; j++)
        A[k][j] = A[i][j] + sum;
}
 
cout << "Измененный массив A:";
    for (int i = 0; i < n; i++) {
        cout << "\n";
        for (int j = 0; j < m; j++)
            cout << "\t" << A[i][j];
    }
}
himecu вне форума Ответить с цитированием
Старый 16.03.2022, 14:09   #2
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Код:
int sum;
for (int i=0; i<n; i++)
{
    sum=0;
        for (int j=0; j<m; j++)
            if (A[i][j]>0)
                sum+=A[i][j];
}
 
for (int i = k; i < n; i++) {
    for (int j = 0; j < m; j++)
        A[k][j] = A[i][j] + sum;
}
Это все должно быть в цикле выше
Код:
A[k][j] = A[i][j] + sum;
Вам же надо каждый элемент увеличивать на сумму, а у вас при А индексы разные.
ForenLi вне форума Ответить с цитированием
Старый 16.03.2022, 14:31   #3
himecu
Пользователь
 
Регистрация: 09.12.2021
Сообщений: 32
По умолчанию

ForenLi, можете подробнее это объяснить?
himecu вне форума Ответить с цитированием
Старый 16.03.2022, 14:39   #4
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Ну прочитайте свой код и сравните с условием.
Условие:
Код:
для каждой строки
  подсчитать кол-во положительных и их сумму
  к каждому элементу после кол-ва прибавить сумму
У вас:
Код:
для каждой строки
  подсчитать кол-во положительных
записать кол-во положительных в последней строке в переменную k
для каждой строки
  подсчитать сумму положительных
записать сумму  положительных в последней строке в переменную sum
в k строке присвоить элементам значения элемент последней строки + sum
ForenLi вне форума Ответить с цитированием
Старый 16.03.2022, 15:31   #5
himecu
Пользователь
 
Регистрация: 09.12.2021
Сообщений: 32
По умолчанию

Вложение 102362
когда сумму искалась, шло обнуление s перед вторым for.
himecu вне форума Ответить с цитированием
Старый 16.03.2022, 15:31   #6
himecu
Пользователь
 
Регистрация: 09.12.2021
Сообщений: 32
По умолчанию

0.jpg
когда сумму искалась, шло обнуление s перед вторым for.
himecu вне форума Ответить с цитированием
Старый 16.03.2022, 15:42   #7
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Цитата:
Сообщение от himecu Посмотреть сообщение
когда сумму искалась, шло обнуление s перед вторым for.
И? Естественно. Поэтому я и написал:

Цитата:
Сообщение от ForenLi Посмотреть сообщение
для каждой строки
подсчитать сумму положительных
ForenLi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить количество нечетных элементов в каждой строке матрицы Great_Stuff Паскаль, Turbo Pascal, PascalABC.NET 3 10.12.2013 05:07
Дан массив A(n,m). Найти количество элементов в каждой строке, меньшего диагонального в этой строке. Proskurina Помощь студентам 5 03.03.2013 20:41
Двумерные массивы. Найти среднее арифметическое положительных элементов в каждой строке. disel1 Паскаль, Turbo Pascal, PascalABC.NET 1 02.06.2012 18:10
Найти среднее геометрическое элементов в каждой строке матрицы soblaznitel Помощь студентам 0 20.05.2010 18:32
Дана матрица размера 5 x 10. В каждой строке найти количество элементов Executioner3 Помощь студентам 12 11.05.2010 16:27