Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
1

массив min

14.11.2011, 11:43. Показов 793. Ответов 18
Метки нет (Все метки)

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
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
int main()
{
randomize();
    int a[5][5];
    int b=0;
    int max=a[0][0];
    int min=a[0][0];
    for(int i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
        {
            a[i][j]=random(50);
            cout<<a[i][j]<<" ";
            if(a[i][j]==9) b++;
            if(a[i][j]>max) max=a[i][j];
            if(a[i][j]<min) min=a[i][j];
        }
        cout<<endl;
    }
    cout<<endl<<endl<<b;
    cout<<endl<<endl<<max;
    cout<<endl<<endl<<min;
    getch();
}
обясните почему в этом коде MIN всегда показывает 0?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.11.2011, 11:43
Ответы с готовыми решениями:

Массив: Получить min(a1;a2;a3)+min(a4;a5;a6)+min(a7;a8;a9)+min(a10;a11;a12) .
Заполнить массив а1,а2,а3...а12 случайными числами от 0 до 20. Получить ...

Рассчитать значение z=min(2a,b+a)+min(2a-b,b) определив и использовав функцию Min(x,y) - минимальное из двух чисел
Рассчитать значение z=min(2a,b+a)+min(2a-b,b) определив и использо- вав функцию Min(x,y) –...

Даны действительные числа a, b, c. Получить r = (min (a, a + b)+min(a,b+c)/1+min(a+bc,b)
Для решении использовать функцию! Даны действительные числа a, b, c. Получить r = (min (a, a +...

Даны натуральные цифры a,b,c. Вычислите (min(a+c, a+b)+min(a-b,b-c))/(1-min(ab+c,1.2)
На С++.

18
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
14.11.2011, 11:51 2
Потому что
C++
1
a[i][j]=random(50);
генерирует числа из [ 0, 49 ]. А так как у Вас в матрице будет 25 элементов, то хотя бы один ноль точно встретится.

Добавлено через 1 минуту
лучше напишите так:
C++
1
a [ i ][ j ] = rand() % 50 + rand() % 12 + 5;
например...
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
14.11.2011, 11:53 3
Цитата Сообщение от GoldDragon Посмотреть сообщение
int min=a[0][0];
Потому что вы min приравняли изначально к неизвестной шняге.
C++
1
int min=60;
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
14.11.2011, 11:55  [ТС] 4
Отнюдь, вот вам скрин с этим кодом, и где вы там нолик видите??? хотя всё равно показывает MIN = 0, кстати нолик который там есть это показывает сколько раз показывает в матрице встретилось число 9
Миниатюры
массив min  
0
40 / 40 / 7
Регистрация: 12.05.2011
Сообщений: 109
14.11.2011, 11:55 5
У вас min изначально 0. А элементы матрицы все положительные.
Поэтому элемент меньше min не встречается.
0
199 / 142 / 57
Регистрация: 06.07.2011
Сообщений: 300
14.11.2011, 11:55 6
И ещё, введите сначало нулевой элемент, а потом делайте присваивание..
C++
1
2
3
4
5
        a[0][0] = random(50);
 
        int max=a[0][0];
        int min=a[0][0];
        ...
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
14.11.2011, 11:57  [ТС] 7
Цитата Сообщение от mimicria Посмотреть сообщение
Потому что вы min приравняли изначально к неизвестной шняге.
Код C++
1
int min=60;
вообще то у меня в задании написано использовать рандум а не менять значения переменных вручную...

Добавлено через 48 секунд
Цитата Сообщение от Dar101 Посмотреть сообщение
У вас min изначально 0. А элементы матрицы все положительные.
Поэтому элемент меньше min не встречается.
А где именно показывает что Min присвоено 0???
0
40 / 40 / 7
Регистрация: 12.05.2011
Сообщений: 109
14.11.2011, 11:57 8
GoldDragon
Перенесите это отдельным циклом в начало перед определением начальных значений min и max:
C++
1
for(int j=0;j<5;j++)a[i][j]=random(50);
Вот это плохо:
C++
1
2
3
4
  int a[5][5];
        int b=0;
        int max=a[0][0];
        int min=a[0][0];
Вы присваиваете min и max неинициализированные значения.
У меня компилятор вообще ругается на такое.
0
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
14.11.2011, 11:59 9
или присвойте
C++
1
min = INT_MAX;
0
199 / 142 / 57
Регистрация: 06.07.2011
Сообщений: 300
14.11.2011, 12:01 10
Цитата Сообщение от GoldDragon Посмотреть сообщение
А где именно показывает что Min присвоено 0???
C
1
int min=a[0][0];
Элемент до этого не задан следовательно равен нулю.
Сначало введите a[0][0], а потом делайте вычисления.
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
14.11.2011, 12:03 11
Цитата Сообщение от Serejke_qq Посмотреть сообщение
Элемент до этого не задан следовательно равен нулю.
Вот это далеко не факт.
0
soon
14.11.2011, 12:03
  #12

Не по теме:

Элемент до этого не задан следовательно равен нулю.
Ни фига. Все зависит от компилятора.

0
40 / 40 / 7
Регистрация: 12.05.2011
Сообщений: 109
14.11.2011, 12:04 13
Serejke_qq
Мне кажется это опасный код:
C++
1
2
3
a[0][0] = random(50);
        int max=a[0][0];
        int min=a[0][0];
Например, a[0][0] стало единицей.

А потом после определения элементов массива они все окажутся больше единицы. В таком случае, определение минимума будет неверным.
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
14.11.2011, 12:04 14
В общем, ТС, алгоритм следующий. Генерируете массив в промежутке [0;49]. Задаете min = 50, max = -1. На каждой итерации цикла сравниваете, если arr[i][j] < min => min = arr[i][j]. Max аналогично. И это я просто обобщил все то, что вам говорят на 2-страницах.
0
199 / 142 / 57
Регистрация: 06.07.2011
Сообщений: 300
14.11.2011, 12:08 15
Знаю что "Далеко не факт что будет равен нулю" -_- Думал вы поймёте
Цитата Сообщение от Dar101 Посмотреть сообщение
А потом после определения всех элементов массива они все окажутся больше единицы. Тогда определение минимума будет неверным.
Ога.. когда писал, думал об отдельных циклах на ввод и вычисления.. А щас внезапно понял что там всё в одном
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
14.11.2011, 12:30  [ТС] 16
Ну что Народ что мне делать то???
просто бывает даже там самая маленькая цифра это 2 а он показывает 0, кстати если поставить в рандуме вот так

a[i][j]=random(50);

то он всё норм работает, я вот не могу понять где в этом коде я присвоил переменной 0 хотя такого там нет, а он откуда то его берёт
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
14.11.2011, 12:34 17
Цитата Сообщение от GoldDragon Посмотреть сообщение
где в этом коде я присвоил переменной 0
Объясняю популярно
C++
1
2
3
4
        int a[5][5]; // объявили массив, он на данный момент заполнен мусором или нулями в зависимости от компилятора
        int b=0;
        int max=a[0][0]; 
        int min=a[0][0]; // и тут бабах, уже мусор или 0 попадает в min
А можно просто:
C++
1
2
        int max=0; 
        int min=60; // рандом всё равно до 50
1
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
14.11.2011, 12:38 18
mimicria, извините, можно узнать, какой именно компилятор это делает? Ну в смысле если массив не инициализирован, то неявно инициализирует его нулями.
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
14.11.2011, 13:19  [ТС] 19
комрилятор XE
0
14.11.2011, 13:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2011, 13:19
Помогаю со студенческими работами здесь

Дан одномерный массив A[N]. Найти max(a2,a4,...a2*k)+min(a1,a3,...,a2*k+1
Дан одномерный массив A. Найти max(a2,a4,...a2*k)+min(a1,a3,...,a2*k+1=-O)

Описать ф-ию min(x) для определения min элемента линейного массива
Описать ф-ию min(x) для определения min элемента линейного массива X введя вспомогательную...

Даны целые числа а, b, с. Вычислить в-сумму у = min (a, b + c) + max (ac, b)-min (a2, c)
Даны целые числа а, b, с. Вычислить в-сумму у = min (a, b + c) + max (ac, b)-min (a2, c). Как эту...

Замена нахождения min среди двумерного массива, на нахождение min в каждой строке
Помогите пожалуйста изменить программу так чтобы вместо того чтобы находился min среди двумерного...


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

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