2 / 2 / 1
Регистрация: 22.01.2015
Сообщений: 17
1

Дан двумерный массив. Максимальные элементы строк заменить нулями и вывести на экран

20.02.2015, 23:36. Показов 5512. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Подскажите как правильно написать код под такое условие задания: "Дан двумерный массив размерностью NхN. Максимальные элементы строк заменить нулями и вывести на экран измененный массив."
Мой вариант не работает, т.к. не могу сделать правильно замену.

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
#include <iostream>
#include <time.h>
using namespace std;
void main()
{   srand(time(NULL));
int const m=5,n=5;
int mas [m][n];//объявл. двумерного массива
for (int i=0;i<m;i++)
{
for (int j=0;j<n;j++)
{
mas[i][j]=rand()%36;//заполняем массив автоматически цифрами от 0 до 35
cout<<mas[i][j]<<"\t";//вывод массива на экран
}
cout<<"\n\n";
}
 
for(int i=0; i<m; i++)
{int max = mas[i][0];   // перебираем отдельные строки
for(int j=0; j<n;j++)
{
if (mas[i][j]> max)//поиск максимальных элементов
max=mas[i][j];
}
cout<<"max element "<<i<<" -oi stroki = "<<max<<"\n\n";
}
 
for (int i=0;i<m;i++)
{int max = mas[i][0];
for (int j=0;j<n;j++)
{
if (mas[i][j]> max)
max=mas[i][j]==0;
mas[i][j];//максимальные значения в строке должны замениться нулями
cout<<mas[i][j]<<"\t";//вывод массива на экран
} cout<<"\n\n";
}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2015, 23:36
Ответы с готовыми решениями:

Дан двумерный массив размерностью 4х4. Заменить все элементы массива = С нулями. В случае если таких элементов нет, вывести соответствующее сообще
Дан двумерный массив размерностью 4х4. Заменить все элементы массива = С нулями. В случае если...

Двумерный массив. Заменить максимальные элементы строк на противополжные по знаку
Дан двумерный массив. Максимальные элементы строчек найдены. Помогите заменить максимальные...

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

Дан двумерный массив Вывести на экран его элементы следующем образом
Здравстуйте, помогите пожалуйста написать прогу, и разобраться в ней.(С#) Дан двухмерный массив....

4
37 / 37 / 22
Регистрация: 18.01.2014
Сообщений: 150
21.02.2015, 00:53 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
#include <iostream>
#include <time.h>
using namespace std;
 
void main()
{   
    srand(time(NULL));
    int const m=5,n=5;
    int mas [m][n];//объявл. двумерного массива
    int max_arr[m];//массив, для хранения максимальных элементов массива
    int count=0;//счетчик, ведущий подсчет максимальных элементов, занесённых в массив
 
    for (int i=0;i<m;i++)
    {
        for (int j=0;j<n;j++)
        {
            mas[i][j]=rand()%36;//заполняем массив автоматически цифрами от 0 до 35
            cout<<mas[i][j]<<"\t";//вывод массива на экран
        }
        cout<<"\n\n";
    }
 
    
    for(int i=0; i<m; i++)
    {
       int max = mas[i][0];// перебираем отдельные строки
        for(int j=0; j<n;j++)
        {
            if (mas[i][j]> max)//поиск максимальных элементов
                max=mas[i][j];
        }
        cout<<"max element "<<i<<" -oi stroki = "<<max<<"\n\n";
        max_arr[count++]=max;
    }
    
    cout << endl;
 
    
    for (int i=0;i<m;i++)
    {
        for (int j=0;j<n;j++)
        {
            if (mas[i][j]==max_arr[i])
                mas[i][j]=0; //максимальные значения в строке должны замениться нулями
            cout<<mas[i][j]<<"\t";//вывод массива на экран
        }
        cout<<"\n\n";
    }
}
Просто нужно было все максимальные элементы строк массива занести в отдельный массив, а потом уже сравнивая его значения с значениями элементов соответствующих строк двумерного массива, при совпадении заменить их нулём.
0
Модератор
Эксперт С++
13670 / 10882 / 6462
Регистрация: 18.12.2011
Сообщений: 29,025
21.02.2015, 12:29 3
19dmitry, перемудрили: у Вас в цикле count равен i.
Так что выбрасываем count и пишем
C++
1
 max_arr[i]=max;
1
37 / 37 / 22
Регистрация: 18.01.2014
Сообщений: 150
21.02.2015, 13:27 4
Цитата Сообщение от zss Посмотреть сообщение
19dmitry, перемудрили: у Вас в цикле count равен i.
Да, так и есть, спасибо.
0
2 / 2 / 1
Регистрация: 22.01.2015
Сообщений: 17
23.02.2015, 10:39  [ТС] 5
19dmitry, спасибо что уделили время и подсказали вариант написания кода.
Переделал на вариант без объявления нового массива. Ниже часть кода, в которой находятся максимальные элементы строки массива и сразу меняются на ноль с последующим выводом массива на экран.
code
[code]
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
}
   for(int i=0; i<m; i++)
    {
            int max = mas[i][0]; // перебираем отдельные строки
        for(int j=0; j<n;j++)
        {
            if (mas[i][j]> max) //поиск максимальных элементов
                max=mas[i][j];
        }
        for(int j=0; j<n;j++)
        {
            if (mas[i][j]== max)//поиск максимальных элементов
                mas[i][j]=0;//замена макс.элементов на ноль
        }
        cout<<"max element "<<i<<" -oi stroki = "<<max<<"\n\n";
    }
        for (int i=0;i<m;i++)
           {
               for (int j=0;j<n;j++)
                  {
                   cout<<mas[i][j]<<"\t";
               }
        cout<<"\n\n";
                 }
     }
[\code]
1
23.02.2015, 10:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.02.2015, 10:39
Помогаю со студенческими работами здесь

Дан двумерный массив. Вывести на экран все элементы s-го столбца массива, большие k
Дан двумерный массив. Вывести на экран все элементы s-го столбца массива, большие k.

Дан двумерный числовой массив размера N*M, необходимо вывести на экран только уникальные элементы
Дан двумерный числовой массив размера N*M, необходимо вывести на экран только уникальные элементы в...

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

Дан одномерный массив, заменить нулями одинаковые элементы
Дан одномерный массив, заменить нулями одинаковые элементы. Поможете?


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

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

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