Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
gaard9n
0 / 0 / 1
Регистрация: 09.01.2018
Сообщений: 30
1

Найти наибольший элемент среди элементов главной и побочной диагоналей

28.02.2018, 20:09. Просмотров 750. Ответов 6
Метки нет (Все метки)

Сколько раз выполняется цикл for (int j = r - i - 1; j >= r - i - 1; j--), не зависимо от того, что он находится ещё в одном цикле и как можно без него обойтись в плане диагоналей, то есть сделать max1 и max2 через один цикл в соответствии с заданием?
Дана действительная квадратная матрица порядка 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "stdafx.h"
#include <iostream>
#include <locale>
using namespace std;
 
int main()
{
    setlocale(NULL, "Rus");
    const int r = 4;
    float **x = new float*[r];
    for (int i = 0; i < r; i++) {
        x[i] = new float[r];
    }
 
    srand(time(NULL));
    for (int i = 0; i < r; i++) {
        for (int j = 0; j < r; j++) {
            x[i][j] = 1 + rand() % 9; x[0][0] = 9;
            cout << x[i][j] << "  ";
        }
        cout << endl;
    }
 
    int max1 = x[0][0];
    int max2 = 0;
    for (int i = 0; i < r; i++) {
        if (x[i][i] > max1) {
            max1 = x[i][i];
        }
        for (int j = r - i - 1; j >= r - i - 1; j--) // !
            if (x[i][j] > max2) {
                max2 = x[i][j];
            }
    }
 
    cout << endl;
    cout << endl;
 
    cout << "Наибольший элемент главной диагонали равен " << max1 << endl;
    cout << "Наибольший элемент побочной диагонали равен " << max2 << endl;
    if (max1>max2) {
        cout << "Наибольший элемент среди двух диагоналей равен " << max1 << endl;
    }
    else if (max1 < max2) {
        cout << "Наибольший элемент среди двух диагоналей равен " << max2 << endl;
    }
    else {
        cout << "Наибольший элемент среди двух диагоналей равен " << max1 << endl;
    }
 
    cout << endl;
    cout << endl;
 
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2018, 20:09
Ответы с готовыми решениями:

Найти наибольший элемент среди элементов главной и побочной диагонали
Ребят помогите очень нужно пожалуйста !!! задачи по С++ 1 Найти наибольший элемент среди...

Найти наибольший элемент среди элементов главной и побочной диагонали динамической матрицы
Дана действительная квадратная матрица. Найти наибольший элемент среди элементов главной и побочной...

Найти наибольший элемент матрицы среди стоящих на главной и побочной диагоналях
Дана действительная квадратная матрица n (n-нечетное),все элементы которой различны....найти...

Найти наибольший элемент среди стоящих на главной и побочной диагоналях матрицы
Дана действительная квадратная матрица порядка N (N – нечетное), все элементы которой различны....

Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять местами с элементом на их пересечении
Дана действительная квадратная матрица порядка N(N-не четное),все элементы которой различны.Найти...

6
Hitoku
Модератор
1715 / 1311 / 1403
Регистрация: 28.10.2016
Сообщений: 4,265
Завершенные тесты: 4
28.02.2018, 21:38 2
Лучший ответ Сообщение было отмечено gaard9n как решение

Решение

Вместо второго for
C++
30
31
if (x[i][r - i - 1] > max2)
    max2 = x[i][r - i - 1];
1
Yetty
1622 / 1174 / 869
Регистрация: 18.12.2017
Сообщений: 4,060
01.03.2018, 00:50 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
32
33
34
35
#include <iostream>
#include <algorithm>
#include <ctime>
using namespace std;
 
int main()
{
    srand(time(0));
    setlocale( LC_ALL,"Russian" );
    
    size_t N;
    double max1, max2;
    cout <<"Enter N: "; cin >>N;
    
    double **a = new double*[N];        
    for (size_t i = 0; i < N; i++) 
       a[i] = new double[N];
    
    for (size_t i = 0; i < N; i++)     
    {
        for (size_t j = 0; j < N; j++)
        {
            a[i][j] = rand()%9 + 1; 
            cout << a[i][j] << "  ";           
        }
        if (i==0 || a[i][i] >= max1) max1=a[i][i];
        if (i==0 || a[i][N-i-1] >= max2) max2=a[i][N-i-1];
        cout << endl;
    }
    cout <<"max1="<<max1<<endl;
    cout <<"max2="<<max2<<endl;
    cout <<"max="<<max(max1, max2)<<endl; 
system("pause");
return 0;
}
1
gaard9n
0 / 0 / 1
Регистрация: 09.01.2018
Сообщений: 30
01.03.2018, 14:06  [ТС] 4
Цитата Сообщение от Hitoku Посмотреть сообщение
Вместо второго for
C++
30
31
if (x[i][r - i - 1] > max2)
    max2 = x[i][r - i - 1];
Сколько раз выполняется цикл for (int j = r - i - 1; j >= r - i - 1; j--), не зависимо от того, что он находится ещё в одном цикле?
0
Hitoku
Модератор
1715 / 1311 / 1403
Регистрация: 28.10.2016
Сообщений: 4,265
Завершенные тесты: 4
01.03.2018, 14:08 5
Цитата Сообщение от gaard9n Посмотреть сообщение
for (int j = r - i - 1; j >= r - i - 1; j--)
С такой формулировкой 1 раз
1
gaard9n
0 / 0 / 1
Регистрация: 09.01.2018
Сообщений: 30
01.03.2018, 14:24  [ТС] 6
Цитата Сообщение от Hitoku Посмотреть сообщение
С такой формулировкой 1 раз
Странно, потому что преподаватель такой ответ не принял, когда я сказал ему это до создания этой темы.
0
Hitoku
Модератор
1715 / 1311 / 1403
Регистрация: 28.10.2016
Сообщений: 4,265
Завершенные тесты: 4
01.03.2018, 14:25 7
В сумме столько же раз, сколько и цикл по i. Поэтому, как такового, смысла в нём нет.
Сами посудите: r - i - 1 = r - i - 1 Это как выполнять от 1 до 1.
Либо преподаватель имеет в виду совсем другое, либо он некомпетентен
1
01.03.2018, 14:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2018, 14:25

Дана действительная квадратная матрица порядка n, все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диаг
Дана действительная квадратная матрица порядка n, все элементы которой различны. Найти наибольший...

Найти максимальный элемент среди элементов на главной и побочной диагоналях
Дан массив А. Найти максимальный элемент среди элементов на главной и побочной диагоналях. ...

Массивы. Найти наибольший и наименьший элементы, среди расположенных на главной и побочной диагоналях
Заполнить матрицу А размера 10*10 случайными числами от -5 до 23. Найти наибольший и наименьший...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru