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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Ernest
0 / 0 / 0
Регистрация: 17.09.2009
Сообщений: 5
#1

Найти min и max матрицы - C++

17.09.2009, 12:31. Просмотров 1355. Ответов 18
Метки нет (Все метки)

Допоможіть розвязати задачу на С++.Задана квадратна матриця А=(Aij)i=1,...4;j=1,...4.Знайти min i max цієї матриці.
Перевод:
Помогите решить задачу на с++. Задана квадратная матрица А=(Aij)i=1,...4;j=1,...4., найти min и max этой матрицы
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2009, 12:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти min и max матрицы (C++):

Найти max и min, если min левее max, то среднее арифметическое между ними - C++
#include <iostream.h> #include <stdio.h> #include <conio.h> #include <math.h> void main() { int n,a; int...

Найти min по каждой строке матрицы и max по каждому столбцу - C++
Вводится порядок квадратной матрицы n. Вводятся элементы квадратной матрицы построчно. Необходимо найти min по каждой строке и max по...

В каждой строке матрицы найти min и max, поменять местами - C++
Условие: В каждой строке матрицы A=(aij)mxn найти максимальный и минимальный элементы. Сформировать матрицу B=(bij)mxn, переставляя в...

В каждом столбце матрицы найти min элемент, а потом среди найденных мин значений найти max значение - C++
Условие Написать программу , которая находит в каждом столбце заданной матрицы размеренностью 5х5 мин элемент , а потом среди найденых...

Найти сумму элементов той строки матрицы, в которой разница между max и min элементами максимальна - C++
Дана вещественная, квадратная матрица порядка N. Найти сумму элементов той строки в которой разница между максимальным и минимальным...

Найти сумму max элементов столбцов, и номер строки, в которой находится элемент матрицы с min значением - C++
Дана вещественная матрица A(n,m). Найти сумму максимальных элементов столбцов и номер строки, в которой находится элемент матрицы с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
vadyxa
3 / 3 / 1
Регистрация: 23.03.2009
Сообщений: 36
17.09.2009, 13:00 #2
C++
1
2
3
4
5
6
7
8
int min(100), max(0);
 
for(int i=1,i<=4, i++)
for(int j=1,j<=4,j++)
{
if(A[i][j]>max) max = A[i][j];
if(A[i][j]<min) min = A[i][j];
}
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
17.09.2009, 13:06 #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
#include <iostream>
int main()
{
    setlocale(LC_ALL, "Russian");
    const int n(4);
    int matr[n][n], i, j, min(INT_MAX), max(INT_MIN);
    std::cout<<"Введите матрицу:\n";
    for (i = 0; i < n; ++i)
        for(j = 0; j < n; ++j)
            std::cin>>matr[i][j];
    system("cls");
    std::cout<<"Введенная матрица:\n";
    for (i = 0; i < n; ++i, std::cout<<'\n')
        for(j = 0; j < n; ++j)
            std::cout<<matr[i][j]<<' ';
    for (i = 0; i < n; ++i)
        for(j = 0; j < n; ++j)
        {
            if(matr[i][j] > max)
                max = matr[i][j];
            if(matr[i][j] < min)
                min = matr[i][j];
        }
    std::cout<<"Максимальный элемент матрицы:\t"<<max;
    std::cout<<"\nМинимальный элемент матрицы:\t"<<min<<std::endl;
    system("pause");
    return 0;
}


Добавлено через 1 минуту
vadyxa, а если я введу матрицу со значениями все больше 1000, тогда что? Или все меньше 0?
0
easybudda
Модератор
Эксперт CЭксперт С++
9622 / 5570 / 946
Регистрация: 25.07.2009
Сообщений: 10,695
17.09.2009, 13:22 #4
Цитата Сообщение от M128K145 Посмотреть сообщение
а если я введу матрицу со значениями все больше 1000, тогда что? Или все меньше 0?
C
1
2
3
4
5
#include <limits.h>
...
min = INT_MAX;
max = INT_MIN;
...
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
17.09.2009, 13:26 #5
easybudda, посмотри 6 строку моего кода
0
mamedovvms
2917 / 838 / 93
Регистрация: 30.04.2009
Сообщений: 2,627
17.09.2009, 13:26 #6
Цитата Сообщение от M128K145 Посмотреть сообщение
а если я введу матрицу со значениями все больше 1000, тогда что? Или все меньше 0?
для этого я обычно делаю так
C++
1
2
3
min=a[0][0];
max=a[0][0];
for .. ...
а вообще на любителя кому что нравится
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
17.09.2009, 13:31 #7
mamedovvms, вариант хороший, но он отлично подходит для одномерных массивов. Иначе в твоем варианте идет на первой итерации сравнение себя с собой. Так что лучше инициализировать как минимальное и максимальное значение типа
0
easybudda
Модератор
Эксперт CЭксперт С++
9622 / 5570 / 946
Регистрация: 25.07.2009
Сообщений: 10,695
17.09.2009, 13:31 #8
M128K145, я в том смысле - в с++ limits.h не нужно включать? (ну или <climits> какой-нибудь) в с не работало бы...

mamedovvms, я этого не говорил!
0
GAV_13
81 / 81 / 4
Регистрация: 14.09.2009
Сообщений: 252
17.09.2009, 13:38 #9
Цитата Сообщение от M128K145 Посмотреть сообщение
mamedovvms, вариант хороший, но он отлично подходит для одномерных массивов. Иначе в твоем варианте идет на первой итерации сравнение себя с собой.
А чем плохо? сравнение происходит, присвоения - нет) В твоем варианте - на первой итерации ты уже присваиваешь) +1 операция.

PS я не жадный, я экономный
0
easybudda
Модератор
Эксперт CЭксперт С++
9622 / 5570 / 946
Регистрация: 25.07.2009
Сообщений: 10,695
17.09.2009, 13:39 #10
а и действительно никакого limits.h не нужно включать, и так работает...
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
int main(){
    int imax(INT_MAX);
    int imin(INT_MIN);
    
    std::cout << "Max int: " << imax << "\tMin int: " << imin << std::endl;
    return(0);
}
M128K145 Извините, погорячился
0
mamedovvms
2917 / 838 / 93
Регистрация: 30.04.2009
Сообщений: 2,627
17.09.2009, 13:45 #11
Цитата Сообщение от M128K145 Посмотреть сообщение
mamedovvms, вариант хороший, но он отлично подходит для одномерных массивов. Иначе в твоем варианте идет на первой итерации сравнение себя с собой. Так что лучше инициализировать как минимальное и максимальное значение типа
ну а если у тебя будет первый элемент равен int_max или int_min, что тогда, да ничего тоже самое и в моем случае, там же идет только сравнение и никакого присваивания, так что все нормально, я не раз так делал, и все нормально работает
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
17.09.2009, 13:52 #12
Цитата Сообщение от GAV_13 Посмотреть сообщение
А чем плохо? сравнение происходит, присвоения - нет) В твоем варианте - на первой итерации ты уже присваиваешь) +1 операция.
А вот почему:
C++
1
2
3
4
5
6
7
8
9
10
        int matr[n][n], i, j, min(INT_MAX), max(INT_MIN);//два присвоения
        /* код */
        for (i = 0; i < n; ++i)//идет полная проверка
                for(j = 0; j < n; ++j)
                {
                        if(matr[i][j] > max)
                                max = matr[i][j];
                        if(matr[i][j] < min)
                                min = matr[i][j];
                }
C++
1
2
3
4
5
6
7
8
9
10
11
12
        int matr[n][n], i, j;
        /* код */
        min=a[0][0];//по количеству присвоений
        max=a[0][0];//сравнялись, здесь тоже два
        for (i = 0; i < n; ++i)//идет полная проверка
                for(j = 0; j < n; ++j)
                {
                        if(matr[i][j] > max)
                                max = matr[i][j];
                        if(matr[i][j] < min)
                                min = matr[i][j];
                }
Я не сказал, что плохо! Да и количество операций одинаково. Но суть присвоения первого элемента в том, чтоб меньше проходить элементов! В одномерном массиве индексация начиналась бы не с 0, а с 1 и экономился бы один проход цикла. А здесь первый проход впустую, поэтому я так и сказал, чтобы это сравнение не было пустым и не было так обидно
0
mamedovvms
2917 / 838 / 93
Регистрация: 30.04.2009
Сообщений: 2,627
17.09.2009, 13:57 #13
зато если у тебя все элементы будут одинаковы то при использовании моего кода не будет ни одной операции присвоение в цикле в отличие если использовать твой код )))
0
GAV_13
81 / 81 / 4
Регистрация: 14.09.2009
Сообщений: 252
17.09.2009, 13:58 #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
 int matr[n][n], i, j;
        /* код */
        min=a[0][0];//по количеству присвоений
        max=a[0][0];//сравнялись, здесь тоже два
        for (i = 0; i < n; ++i)//идет полная проверка
                for(j = 0; j < n; ++j)
                {
                        if(matr[i][j] > max)
                                max = matr[i][j]; // на первой итерации есть присвоение. в первом варианте - нет)
                        if(matr[i][j] < min)
                                min = matr[i][j]; // на первой итерации есть присвоение. в первом варианте - нет)
                }
итого 1 присвоение лишнее))))
0
mamedovvms
2917 / 838 / 93
Регистрация: 30.04.2009
Сообщений: 2,627
17.09.2009, 14:03 #15
да и вообще в твоем коде присваивание происходит на две операции больше раз, так как в начале цикла минимальный и максимальный все равно присваиваются первому элементу, так что получается что у меня даже как бы эффективнее

Добавлено через 2 минуты
Цитата Сообщение от GAV_13 Посмотреть сообщение
int matr[n][n], i, j; /* код */ min=a[0][0];//по количеству присвоений max=a[0][0];//сравнялись, здесь тоже два for (i = 0; i < n; ++i)//идет полная проверка for(j = 0; j < n; ++j) { if(matr[i][j] > max) max = matr[i][j]; // на первой итерации есть присвоение. в первом варианте - нет) if(matr[i][j] < min) min = matr[i][j]; // на первой итерации есть присвоение. в первом варианте - нет) }
вот как раз в первом варианте будет присваивание а во втором нет
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2009, 14:03
Привет! Вот еще темы с ответами:

Найти min(max(x, y), max(x, z), max(z, d) - C++
Даны различные действительные числа x, y, z, d. Найти min(max(x, y), max(x, z), max(z, d)).

Найти max {min (a, b), min (c, d)}. - C++
Найти max {min (a, b), min (c, d)}.

Определить max и min элементы матрицы - C++
Определить мах и мин элементы матрицы вещественных чисел размерностью 6х6 и поменять их местами Ввод элементов матрицы с клавиатуры а...

Среднее арифметическое min и max элементов матрицы - C++
В целочисленном массиве A для каждого столбца найти среднее арифметическое max и min элементов.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.09.2009, 14:03
Ответ Создать тему
Опции темы

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