Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Поиск в массиве

Автор: Дима 9.12.2006 13:41

program lab01;
uses crt;
var i,sh:integer;
m:array[1..50] of real;
max:integer;

const a=-150;
b=150;
begin
ClrScr;
writeln('zadaetsta masiv sluchainim obrazom -150 do 150 ');
writeln('Najmite <ENTER> dlyz generacii');
readln;
randomize;

for i:=1 to 50 do begin m[i]:=random(b-a)+a;
write(m[i]:3 :0,'....');
sh:=sh+1;

if sh=10 then begin
readln;
writeln;
sh:=0;
end;



end;
max := 0;

for i := 1 to 50 do
if (m[i] < 0) and (abs(m[i]) > abs(m[max])) then max := i;

writeln('i = ', max, ' m[', max, '] = ', m[max]:3 :0);
readln;
end.

Дан неупорядочный массив, найти максимальный отрицательный элемент по модулю, мне вот кто-то помог на этом сайте с помощью пиременной макс вот в таком ввиде, кто может объясните пожалуйста какая смысловая нагрузка на переменну max т.е что за что отвечает немогу понять как оно работает! пожалуйста подскажите, я вот читал про линейный поиск ну что то не понял, почему max=0? и не может принять значение real

Автор: volvo 9.12.2006 16:42

Цитата
почему max=0? и не может принять значение real
Изначально ты не знаешь, какой элемент максимальный, поэтому обнуляешь индекс... А не может принять значение типа Real - потому, что я уже сказал: это не сам максимальный элемент, а его позиция (индекс) в массиве.

Автор: Дима 9.12.2006 19:38

т.е получается что переменна "макс" несет смысловую нагрузку как индекс, т.е получается что если элемент меньше 0 и по модулю этот элемент больше чего ?? вот не могу понять больше чего, т.е оно как сравнивает между ссобой это?

if (m[i] < 0) and (abs(m[i]) > abs(m[max])) then max := i;


Автор: Дима 9.12.2006 19:40

Т.е простыми словами как работает цикл нахождение макс. отриц. элемента по модулю

Автор: Дима 10.12.2006 19:08

ребят что сложно помочь? просто я плохо разбираюсь в паскале а здавать лабы надо (

Автор: мисс_граффити 10.12.2006 19:29

если элемент меньше 0 и по модулю больше ранее найденного максимального, то он становится новым максимальным.
З.Ы. максимальный отрицательный элемент по модулю - это не то же самое, что найти минимальный, который обязательно должен быть отрицательным?

Автор: Дима 10.12.2006 19:59

да вот что то не понятно, я ему вначале сделал как ты сказал т.е нашел самый минимальный отриц элемент, он мол говорит это не по модулю, вот я решил по другому сделать, спасиб ну вроде что то понял!

Автор: мисс_граффити 10.12.2006 20:18

мог бы и посмотреть на пол... :-/

Автор: Дима 10.12.2006 20:31

таакс ну т.е я понял получается первоночально макс =0 т.е сравнивается элемент с нулем потом занимает максимальное и сравнивается дальше пока не будет самое большое по модулю чило?! так? если я не прав поправте меня, т.е логический смысл макс это занимать самое большое и сранивать его далее