Задана последовательность N чисел. N<=1000. Найдите наибольшее число в этой последовательности и укажите на какой позиции оно находится. Если число повторяется, то указать все его позиции.
Например: для последовательности 569 3 567 94 569 219 546
Ответ:
569
1 5
Впорос: как выглядит функция определения наибольшего числа и расчета его размещений?
Последовательность как хранится? В массиве? Или массивы использовать нельзя?
один из ваирантов;
var a,b:array [1..7] of integer; max,i,j:integer;
begin
max:=1;
j:=1;
for i:=1 to 7 do
if a[i]>max then max:=a[i]; //находим в цикле максимальный элемент
for i:=1 to 7 do
if a[i]=max then
begin
b[j]:=i; //нормируем новый массив состоящий из позиций максимального элеммента
j:=j+1;
end;
// вывод позиции
// for i:=1 to j-1 do wrie(' ',j);
//
Это можно сделать за один проход по основной последовательности... В случае, когда N может достигать 1000, это желательно делать именно за один, а не за два прохода...
P.S. К тому же, amega, твой вариант не отработает, если в исходной последовательности нет чисел больше 0...
тогда поменять прото начальное max:=0;
а можеш выложить алгоритм за один проход ?
max := a[1];
j := 0;
for i := 1 to n do begin
if a[i] = max then begin
inc(j); b[j] := i;
end
else
if a[i] > max then begin
max := a[i];
j := 1; b[j] := i;
end;
end;
for i := 1 to j do
write(b[i]:5);
смотри а если у нас 1ий елент максимальный И он только один что происходит (например 99 1 2 3 2 1 1 5)
max := a[1];
j := 0; <------------------------------------------------ j=0
for i := 1 to n do begin
if a[i] = max then begin <-------------------------------------------- 1ий елемент максимальній
inc(j); b[j] := i; <------------------------------------------- b[0]:=1;
end
else
if a[i] > max then begin <---- вариант на елс выполнятся не будет
max := a[i];
j := 1; b[j] := i; <---- а значит j не присвоится 1
end;
end;
for i := 1 to j do <------------------------------------------ кода выводим начинаем выводить с b[1] !!!!!
write(b[i]:5);
if a[i] = max then begin
inc(j); //а вот это что по твоему? как раз таки увеличение j на 1цу
b[j] := i;
а, ну да недогледел чуть-чуть
Да, все правильно. Вот полное решение, всем спасибо.