Дана непустая последовательность натуральных чисел, за которой следует 0. Составить программу поиска в данной непустой последовательности порядкового номера наименьшего элемента.
x, i - очередной член последовательности и его номер;
min, k - минимальный член последовательности и его номер.
Считывание членов последовательности производится до тех пор, пока не будет введен 0, то есть пока x<>0. Начальное значение минимума определяется значением первого члена последовательности.
Очередное вводимое число требуется сравнивать с текущим значением минимума, и если текущее значение min окажется больше очередного члена последовательности, то его нужно изменить.
Var x, i, min, k : Integer;
Begin
Read(x); // первый член последовательности
k:=1;
min:=x; i:=1;
While x<>0 Do
Begin
If x<min Then
Begin
min:=x;
k:=i
End;
Read(x); // i элемент последовательности
i:=i+1;
End;
Writeln(k); //номер минимального элемента
End.
ОПЕРАТОР ЦИКЛА С ПОСТУСЛОВИЕМ REPEAT ... UNTIL (повторять…)
Цикл с постусловием всегда будет выполнен хотя бы один раз!
В цикле repeat действует алгоритм: выполняется тело цикла, пока не станет истинным условие, то есть пока условие ложно, выполнять цикл.
Repeat
begin
<условие>;
end;
until <оператор>;
ЗАДАЧА.Дана непустая последовательность натуральных чисел, которая заканчивается 0.
Вычислить сумму положительных элементов последовательности.
Var a,s:integer;
begin
readln(a);
s:=0;
while a<>0 do
begin
if (a>0) then s:=s+a;
readln(a);
end;
writeln(s);
end.
Var a,s:integer;
begin
readln(a);
s:=0;
Repeat
begin
if (a>0) then s:=s+a;
readln(a);
end;
untila=0;
writeln(s);
end.
ЗАДАЧА.Используя все три цикла, написать программу, выводящую таблицу умножения на 9.
FOR … DO
var i, p: integer;
begin
for i:=1 to 10 do
begin
p:=9*i;
writeln('9x',i,'=',p);
end; end.
WHILE
var i, p, z:integer;
begin
i:=0;
while i<>10 do
begin
i:=i+1;
p:=9*i;
writeln ('9x',i,'=',p);
end; end.
REPEAT
var i, p, z: integer;
begin
i:=0;
begin
repeat
i:=i+1;
p:=9*i;
writeln ('9x',i,'=',p);
until i>9;
end; end.
Составить программу планирования закупки товара в магазине на сумму, не превышающую заданную величину.
Var x, k, p, s : Integer;
Begin
S:=0;
Repeat
WriteLn('Введите цену товара и его количество');
ReadLn(x,k);
s:=s+x*k;
WriteLn('Стоимость покупки равна ',s);
Until s>p;
WriteLn('Суммарная стоимость покупки превысила предельную сумму');