Помощь - Поиск - Пользователи - Календарь
Полная версия: Максимальный и минимальный элемент массива
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
PORTUGAL
Программа нкоректно находит макс и мин, не могу понять в чем проблема!?
Код

VAR  i,maxi,mini,dob,kol:integer;
       a:array[1..4] of integer;
BEGIN
for i:= 1 to 4 do
begin
write('Vvedite chislo N',i,': ');
readln(a[i]);
end;
  maxi:=1;
  mini:=1;
  dob:=1;
  for i:=1 to 4 do
  begin
           if maxi < a[i] then maxi:=i;
           if mini > a[i] then mini:=i;
  end;
       if maxi<mini then
        begin
            i:=maxi; maxi:=mini; mini:=i;
        end;
  for i:=mini  to maxi do
     dob:=dob*a[i];
  Writeln('Dobutok = ',dob);
  readln;
END.
volvo
Цитата
не могу понять в чем проблема!?
Ты должен или работать с индексами:
  maxi:=1; mini:=1;
for i:=1 to 4 do begin
if a[maxi] < a[i] then maxi:=i;
if a[mini] > a[i] then mini:=i;
end;

или с элементами:
  maxi:= -maxint; mini:= maxint; { <--- Смотри чему равно в начале !!! }
for i:=1 to 4 do begin
if maxi < a[i] then maxi:=i;
if mini > a[i] then mini:=i;
end;
PORTUGAL
Поменял! всеравно не хочет работать!



VAR i,maxi,mini,dob,kol:integer;
a:array[1..4] of integer;
BEGIN
for i:= 1 to 4 do
begin
write('Vvedite chislo N',i,': ');
readln(a[i]);
end;
maxi:=1;
mini:=1;
dob:=1;
for i:=1 to 4 do
begin
if a[maxi] < a[i] then maxi:=i;
if a[mini] > a[i] then mini:=i;
end;
if maxi<mini then
begin
i:=maxi; maxi:=mini; mini:=i;
end;
for i:=mini to maxi do
dob:=dob*a[i];
Writeln('Dobutok = ',dob);
readln;

END.

volvo
А я не телепат, чтобы понять, ЧТО именно ты пытаешься сделать, и какой результат тебе нужно получить... Задание ты не привел, так что...
PORTUGAL
Короче задача такая: нужно найти произведение элементов массива которые находятся между максимальным и минимальным элементами этого массива. Но программа выдает неверный результат!
Ozzя
При нахождении min и max запоминать также и их индексы
Код
   if a[maxi] < a[i] then maxi:=i;
    if a[mini] > a[i] then mini:=i;

if mini > maxi then
{ поменять их местами }
А затем подсчитать произведение
Код
p:=1;
for i:=mini to maxi
  p:=p*a[i];
PORTUGAL
Так я это и делаю! Но прога не работает, вернее работает только выдает неверный результат!
Ozzя
Ты будешь сметяься sad.gif
Но она у тебя прекрасно работает, только что проверил
На каких числах ты проверяшь?
PORTUGAL
Точно! Это я торможу а не прога! Просто я проверял результат не включая максимальный и минимальные элементы!
Все спасибо! good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.