Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2011, 02:32   #1
netiv
Пользователь
 
Регистрация: 12.10.2011
Сообщений: 33
По умолчанию Мин и макс элеметы

Вот к примеру дан код:
Код:
program mass;
uses crt;
var a:array[1..10000] of real;
    i,n:integer;
    min,max:real;
begin
clrscr;
write('n=');
readln(n);
writeln('zapolnite massiv');
for i:=1 to n do
begin
readln(a[i]);
end;
for i:=1 to n do
begin
write(a[i]:6:2,'');
end;
writeln;
min:=32767; {Почему так}
for i:=1 to n do
begin if a[i]<min then min:=a[i];
end;
writeln;
writeln('min element=',min:6:2);
max:=-32767; {Почему так}
for i:=1 to n do
begin
if a[i]>max then max:=a[i];
end;
writeln;
writeln('max element=',max:6:2);
writeln;
for i:=1 to n do
begin
a[1]:=min;
write(a[i]:6:2,' ');
end;
max:=99999;
writeln;
write('max=',max:6:2);
readln;
end.
Сообственно вопрос:
Вопрос касается этих двух строк (min:=32767 и max:=-32767)
Часто замечаю что в разных задачах (программах) мин и макс элементам присваиваются значения от (30000 , 32500, вплоть до 32767)
Почему так ? С чем это связано? И можно ли эти числа записать как нибудь по другому?
netiv вне форума Ответить с цитированием
Старый 26.10.2011, 07:27   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Представь себе, что тебе надо определить человека (например, в классе) с минимальным ростом. Ты берешь _длинный_ шест подходишь к каждому. Если он ниже зарубки- делаешь новую. Если нет - пусть идет себе. Так? Но, поскольку ты заранее не знаешь, то шест (начальная зарубка как бы на его конце) должен быть как можно больше (вдруг это класс баскетболистов?))

Поэтому переменной, в которой будет минимум, перед циклом поиска присваивают значение как можно большее. Если речь идет о целых (тип integer), то для них максимальное возможное число равно 32767 (это 2^15-1), оно же $7FFF. Но писать это значение явно лучше не надо. На другой машине целое может быть не двухбайтовое, скажем, а 4-байтовое. В Pascal обычно есть константа MaxInt, которая дает нужное значение, ее и надо использовать. Еще можно (и лучше всего) использовать High(integer).

То же самое применимо к поиску максимума - только с точностью до наоборот (и еще, у тебя там ошибка - минимальное целое равно -32768, а не -32767). Но константы MinInt не существует, нужно писать либо -MaxInt-1, либо Low(integer).
Предпочитаю на "ты".

Последний раз редактировалось TinMan; 26.10.2011 в 07:41.
TinMan вне форума Ответить с цитированием
Старый 26.10.2011, 08:48   #3
netiv
Пользователь
 
Регистрация: 12.10.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
Представь себе, что тебе надо определить человека (например, в классе) с минимальным ростом. Ты берешь _длинный_ шест подходишь к каждому. Если он ниже зарубки- делаешь новую. Если нет - пусть идет себе. Так? Но, поскольку ты заранее не знаешь, то шест (начальная зарубка как бы на его конце) должен быть как можно больше (вдруг это класс баскетболистов?))

Поэтому переменной, в которой будет минимум, перед циклом поиска присваивают значение как можно большее. Если речь идет о целых (тип integer), то для них максимальное возможное число равно 32767 (это 2^15-1), оно же $7FFF. Но писать это значение явно лучше не надо. На другой машине целое может быть не двухбайтовое, скажем, а 4-байтовое. В Pascal обычно есть константа MaxInt, которая дает нужное значение, ее и надо использовать. Еще можно (и лучше всего) использовать High(integer).

То же самое применимо к поиску максимума - только с точностью до наоборот (и еще, у тебя там ошибка - минимальное целое равно -32768, а не -32767). Но константы MinInt не существует, нужно писать либо -MaxInt-1, либо Low(integer).
А если max и min Вещественные (real), что в таком случае должно быть?
netiv вне форума Ответить с цитированием
Старый 26.10.2011, 08:55   #4
Dush
Форумчанин
 
Регистрация: 29.09.2011
Сообщений: 116
По умолчанию

установите минимальный и максимальный элементы равными первому элементу массива.
и поиск минимального и максимального элементов можно засунуть в один цикл.

Последний раз редактировалось Dush; 26.10.2011 в 09:36.
Dush вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение Мин и Макс по условию bskjohn Microsoft Office Excel 1 04.06.2011 20:55
двумерный массив макс мин bwooyaka Помощь студентам 17 19.05.2011 13:17
нахождение мин и макс числа Данил1986 Паскаль, Turbo Pascal, PascalABC.NET 3 07.06.2010 05:46
мин,макс,нод,нок на делфи melville Помощь студентам 8 10.11.2009 00:20
Ограничение формул МИН и МАКС Bu$ter Microsoft Office Excel 2 29.05.2008 09:21