0 / 0 / 0
Регистрация: 22.02.2019
Сообщений: 112
1

Найти максимальный элемент строки матрицы и заменить его суммой цифр этого элемента

29.09.2019, 13:17. Показов 1595. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
программа заменяет максимальный элемент суммой цифр, проблема в том , что заменяется только последнее число в строке
ошибку не вижу
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 "stdafx.h"
#include <Windows.h>
#include <conio.h>
#include <iostream>
#include <ctime>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[]) {
    setlocale(LC_ALL, "rus");
    srand(time(0));
    cout << "Введите размерность массива" << endl;
    int m, n;
    cin >> n >> m;
    cout << "Введите промежуток расположения случайных чисел" << endl;
    int a, b;
    cin >> a >> b;
    int ** x = new int *[n];
 
    for (int i = 0; i < n; i++)
        x[i] = new int[m];
 
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            x[i][j] = (a+rand()%(b-a));
    cout << "Начальная матрица:" << endl << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << x[i][j] << " ";
        cout << endl;
    }
    int jmax;
    for (int i = 0; i < n; i++)
    {
        int Max = x[i][0];
        for (int j = 0; j < m; j++)
        {
            if (x[i][j] >= Max)
            {
                Max = x[i][j];
                jmax = j;
            }
        }
        x[i][jmax] = 0;
        while (Max != 0) {
            x[i][jmax] += Max % 10;
            Max /= 10;
        }
 
    }
    cout << "Конечная матрица:" << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << x[i][j] << " ";
        cout << endl;
    }
    getch();
    return 0;
 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2019, 13:17
Ответы с готовыми решениями:

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

Максимальный элемент каждого столбца заменить суммой цифр модуля минимального элемента матрицы
Задана матрица целых чисел B(nxm). Максимальный элемент каждого столбца заменить суммой цифр модуля...

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

В каждой строке заменить максимальный элемент суммой цифр минимального элемента
Помогите решить задачу на с++ 1. Задана матрица целых чисел A (n*m). В каждой строке заменить...

6
Модератор
Эксперт С++
13622 / 10846 / 6448
Регистрация: 18.12.2011
Сообщений: 28,921
29.09.2019, 13:46 2
C++
1
2
3
4
5
6
7
    for (int i = 0; i < n; i++)
    {
        int jmax=0;
        int Max = x[i][0];
        for (int j = 1; j < m; j++)
        {
           ....
0
0 / 0 / 0
Регистрация: 22.02.2019
Сообщений: 112
29.09.2019, 14:28  [ТС] 3
Прошу прощения, неправильно ошибку объяснил
последнее максимальное меняется
0
Модератор
Эксперт С++
13622 / 10846 / 6448
Регистрация: 18.12.2011
Сообщений: 28,921
29.09.2019, 15:27 4
Цитата Сообщение от papillon83 Посмотреть сообщение
последнее максимальное меняется
Цитата Сообщение от papillon83 Посмотреть сообщение
if (x[i][j] >= Max)
Раз написано >=, то как раз и будет находиться последний максимальный элемент.
0
0 / 0 / 0
Регистрация: 22.02.2019
Сообщений: 112
29.09.2019, 15:31  [ТС] 5
Я пробовал просто знак >, получается всегда первый максимальный
Так же пытался занести все под while, тоже не получалось
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
29.09.2019, 19:46 6
Лучший ответ Сообщение было отмечено papillon83 как решение

Решение

papillon83, Вам нужно заменить все max если их в строке несколько ? просто добавьте ещё один цикл
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 <cstdlib>
#include <ctime>
using namespace std; 
 
int main() 
{    
    srand((int)time(0));
    int m, n, a, b, max, max1, sum_dig;    
   
    cout << "n="; cin >> n;
    cout << "m="; cin >> m;
    cout << "Enter limits:\n";
    cout << "a="; cin >> a;
    cout << "b="; cin >> b;
    
    double **x = new double*[n]; 
    for (int i = 0; i < n; i++)
       x[i] = new double[m];
    
    cout << "Matrix:\n";
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            x[i][j]=rand()%(b-a+1)+a;   
            cout << x[i][j] << " ";
        }
        cout << "\n";        
    }
    
    for (int i = 0; i < n; i++)
    {
        max=x[i][0], sum_dig=0;
        for (int j = 0; j < m; j++)        
            if (x[i][j]>max) max=x[i][j];
            
        max1=max;    
        while (max) 
        {
            sum_dig+=max%10;
            max/=10;
        }        
        // добавляем цикл
        for (int j = 0; j < m; j++)        
            if (x[i][j]==max1) x[i][j]=sum_dig; 
    }
    
    cout << "Modified matrix:\n";
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << x[i][j] << " ";
        cout << "\n";
    }
    
    for (int i = 0; i < n; i++)
    delete [] x[i];
    delete [] x;
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 22.02.2019
Сообщений: 112
30.09.2019, 09:50  [ТС] 7
Привык, что массив это 1 или 2 цикла for. Думал, что добавление 3 будет ошибкой. Спасибо за помощь
0
30.09.2019, 09:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2019, 09:50
Помогаю со студенческими работами здесь

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

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

Каждый из элементов одномерного массива заменить суммой цифр этого элемента
Буду очень признателен, если поможете. Я только начал обучаться c++ и нашел такую задачку, мне...

Каждый из элементов одномерного массива заменить суммой цифр этого элемента
Буду очень признателен, если поможете. Я только начал обучаться c++ и нашел такую задачку, мне...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru