Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
defeltz
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 13
#1

Найти наибольший элемент массива в каждой строке. - C++

01.07.2012, 21:58. Просмотров 842. Ответов 9
Метки нет (Все метки)

Дан массив из n x m элементов. Найти наибольший элемент массива в каждой строке.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2012, 21:58     Найти наибольший элемент массива в каждой строке.
Посмотрите здесь:

В каждой строке двухмерного массива определить наибольший элемент и подсчитать сумму этих максимальных элементов C++
Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали C++
В каждой строке матрицы A (n, n) найти наибольший элемент и поменять его местами с соответствующим диагональным элементом. C++
Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали C++
Найти в каждой строке матрицы наибольший элемент и записать его в одномерный массив C++
C++ Найти наибольший элемент двумерного массива в каждой его строке
C++ Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Doctor_
233 / 233 / 70
Регистрация: 03.02.2011
Сообщений: 1,408
01.07.2012, 22:42     Найти наибольший элемент массива в каждой строке. #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
50
51
52
53
54
55
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include <iomanip>
 
using namespace std;
 
class Matrix {
      private:
              int **array, n, m;
      public:
             Matrix();
             void Input();
             //void Print();
             void Max();
};
 
Matrix :: Matrix() : array(0), n(0), m(0) {
       }
      
void Matrix :: Input() {
     cout << "Vvedite n i m" << endl;
     cin >> n >> m;
     array = new int*[n];
     for(int i=0; i<n; i++) {
             array[i] = new int [m];
             for(int j=0; j<m; j++) {
                     array[i][j] = rand()%60;
                     }
             }
     cout << "Matrix:" << endl;
     for(int i=0; i<n; i++) {
             for(int j=0; j<m; j++) {
                     cout << setw(5) << array[i][j] << " ";
                     }
                     cout << endl;
             }
     }             
 
void Matrix :: Max() {
     int temp = array[0][0];
     for(int i=0; i<n; i++)
     for(int j=0; j<m; j++)
     if(array[i][j] > temp)
     temp = array[i][j];
     cout << "Maximal: " << temp << endl;
     }
 
int main() {
    Matrix M1;
    M1.Input();
    M1.Max();
    getche();
}
Dragokas
Эксперт WindowsАвтор FAQ
14903 / 6506 / 792
Регистрация: 25.12.2011
Сообщений: 10,042
Записей в блоге: 15
01.07.2012, 23:41     Найти наибольший элемент массива в каждой строке. #3
Еще один пробный:
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
#include <iostream>
 
using namespace std;
 
int main()
{
    system("chcp 1251>>null");
    
    const int m=7;
    const int n=7; //от 1 до 10
    const int maxRng=10; //макс. граница ранжирования
    int mass[m][n], i, j, max[m];
    //заполняем случайными числами
    for (i=0; i<m; i++) for (j=0; j<n; j++) mass[i][j]=rand()%(maxRng+1);
    //находим макс.
    for (i=0; i<m; i++) {
        max[i]=mass[i][1];
        for (j=1; j<n; j++) {
            if (mass[i][j]>max[i]) max[i]=mass[i][j];
        }
    }
    //выводим массив
    cout<<"Сгенерированный массив:\n";
    for (i=0; i<m; i++) for (j=0; j<n; j++) if (j==0) printf("\n%3d",mass[i][j]); else printf("\t%3d",mass[i][j]);
    //выводим макс. в строках
    cout<<"\n\nМаксимальные значения в строках:\n\n";
    for (i=0; i<m; i++) printf("  %d) %d\n", i, max[i]);
 
    getchar();
    return 0;
}
Скажите, пожалуйста, почему я получаю переполнение памяти при таком написании:
C++ (Qt)
1
for (i=0; i<=m; i++)
а также:
C++ (Qt)
1
for (i=0; i<(m+1); i++)
Разве такие вариации в Си недопустимы?
Catstail
Модератор
22163 / 10637 / 1732
Регистрация: 12.02.2012
Сообщений: 17,688
02.07.2012, 00:26     Найти наибольший элемент массива в каждой строке. #4
В С/С++ массивы индексируются с нуля. Поэтому если написано:

C++
1
int X[10]
то правильными индексами будут 0,1,...9. А 10 - уже за пределами.
Dragokas
Эксперт WindowsАвтор FAQ
14903 / 6506 / 792
Регистрация: 25.12.2011
Сообщений: 10,042
Записей в блоге: 15
02.07.2012, 01:12     Найти наибольший элемент массива в каждой строке. #5
Catstail, спасибо, знал, но прохлопал. Грешил на for.

Тогда строку 17 нужно записать так:
C++
1
        max[i]=mass[i][0];
HeqpuJIuM
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 25
02.07.2012, 01:56     Найти наибольший элемент массива в каждой строке. #6
Да... у меня это всё намного меньше было в плане строчек, да и функция была всего одна... скинул бы, да ноут сгорел...
Dragokas
Эксперт WindowsАвтор FAQ
14903 / 6506 / 792
Регистрация: 25.12.2011
Сообщений: 10,042
Записей в блоге: 15
02.07.2012, 02:46     Найти наибольший элемент массива в каждой строке. #7
HeqpuJIuM, достаточно коротко?
C++
1
2
3
4
5
#include <iostream>
void main() {
int a[7][7], i, j, m=0;
for (i=0;i<7;i++) {for (j=0;j<7;j++) {a[i][j]=rand()%9; printf("%d ",a[i][j]); if (a[i][j]>m) m=a[i][j];}
    printf("\n%d\n",m); m=0;} getchar();}

Не по теме:

Цитата Сообщение от HeqpuJIuM Посмотреть сообщение
ноут сгорел...
сочувствую

neske
1463 / 830 / 69
Регистрация: 26.03.2010
Сообщений: 2,830
02.07.2012, 02:59     Найти наибольший элемент массива в каждой строке. #8
Diskretor, что за ужасный стиль оформлять код?
Dragokas
Эксперт WindowsАвтор FAQ
14903 / 6506 / 792
Регистрация: 25.12.2011
Сообщений: 10,042
Записей в блоге: 15
02.07.2012, 17:14     Найти наибольший элемент массива в каждой строке. #9
Так, что-ли:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main() {
    int a[7][7], i, j, m=0;
    for (i=0; i<7; i++) {
        for (j=0; j<7; j++) {
            a[i][j]=rand()%9;
            printf("%d ", a[i][j]);
            if (a[i][j]>m) m=a[i][j];
        }
        printf("\n%d\n", m); m=0;
    } 
    getchar();
    return 0;
}
Я же написал - пробный.
Как по мне в № 3 все достаточно понятно и компактно (строка 14); а 24 - ну да строчку сэкономил
Ваше право поправить, я для этого сюда и запостил, тренируюсь.
Ну извиняюсь, если оскорбил стандарт.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2012, 17:19     Найти наибольший элемент массива в каждой строке.
Еще ссылки по теме:

C++ Найти наибольший элемент каждой пары из массива А и записать их в новый массив
C++ Найти максимальный элемент в каждой строке массива
Найти наибольший элемент в каждой строке матрицы, после чего поменять его местами с диагональным C++
Найти в каждой строке наибольший элемент и удалить строку с наименьшим элементом C++
В каждой строке найти наибольший элемент двумерного массива C++

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

Или воспользуйтесь поиском по форуму:
neske
1463 / 830 / 69
Регистрация: 26.03.2010
Сообщений: 2,830
02.07.2012, 17:19     Найти наибольший элемент массива в каждой строке. #10
Diskretor,
Цитата Сообщение от Diskretor Посмотреть сообщение
for (i=0; i<m; i++) for (j=0; j<n; j++) mass[i][j]=rand()%(maxRng+1);
это не есть хорошо, а вот последний ваш код оформлен как надо
только вот, ошибка
если пИшите на с++, то и используйте std::cin/cout, не надо мешать си и с++
Yandex
Объявления
02.07.2012, 17:19     Найти наибольший элемент массива в каждой строке.
Ответ Создать тему
Опции темы

Текущее время: 20:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru