Minmax14. Дано число $$B (> 0)$$ и набор из десяти чисел. Вывести минимальный из тех элементов набора, которые больше $$B$$, а также его номер. Если чисел, больших $$B$$, в наборе нет, то дважды вывести $$0$$.
Решение:
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 28 29 30 31 32 33 |
program MinMax14; var B,R,Min:Real; MinNum,i:Integer; begin Write('B:'); Readln(B); Min:=-1; for i:=1 to 10 do begin Write(i,' ÷èñëî:'); Readln(R); if (R>B) AND (Min<0) then begin Min:=R; MinNum:=i; end; if (R>B) AND (R<Min) then begin Min:=R; MinNum:=i; end; end; if Min<0 then begin Min:= 0; MinNum:=0; end; Writeln(MinNum,' ',Min); end. |
Решение Newton:
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
program MinMax14; // ---------------------------------- Begin of procedure Quit Procedure Quit; begin writeln; writeln; writeln('Press Enter to Quit'); readln; writeln; end; // ----------------------------------- End of procedure Quit const RandLimit = 20; Number = 10; var Counter, CountRes : byte; Foo, B, Result : integer; FirstEnc : boolean; begin write('Enter B: '); readln(B); FirstEnc := true; CountRes := 0; Result := 0; for Counter := 1 to Number do begin Foo := random(RandLimit); writeln(Counter :2, '.', Foo :5); if Foo > B then if FirstEnc then begin Result := Foo; FirstEnc := false; CountRes := Counter; end else if Foo < Result then begin Result := Foo; CountRes := Counter; end; end; writeln(CountRes :4, Result :4); Quit; end. |
Другие задачи из раздела Minmax можно посмотреть здесь.
Использовал тот же подход, что и в одной из предыдущих задач:
Добавил в шапку.