1.Определить значение переменных i и S после выполнения следующих операторов:
a)S:=l; i:=0;
б) S:=l; i:=0;
в) S:=0; i:=l;
while i<=5 do while i<=3 do while i<2 do
i:=i+l; begin i:=i+2; S:=S+l/i;
S:=S+l/i; S:=S+i; end; i:=i+l;
г) S:=l; i:=0;
д)S:=1;i:=2;
e) S:=0; i:=l;
while false do while (i>3) or (i<6) do while (i>0) and (i<=l) do
i:=i+l; begin i:=i +2; begin S:=S+ l/i;
S:=S+ l/i; S:=S+i; end; i:=i+l; end;
Тогда a⊕b→a; a⊕b→b; a⊕b→a - это был обмен значениями a ↔ b
Теперь по этой же схеме обменяем местами b и с:
b⊕c→b; b⊕c→с; b⊕c→b.
Результат: b→a; c→b; a→c
Программа для иллюстрации:
// PascalABC.NET 3.1, сборка 1218 от 12.04.2016
begin
var a:=50;
var b:=-20;
var c:=0;
Println('Исходные значения: a=',a,'b=',b,'c=',c);
a:=a xor b; b:=a xor b; a:=a xor b;
b:=b xor c; c:=b xor c; b:=b xor c;
Println('Результат обмена: a=',a,'b=',b,'c=',c)
end.
Результат:
Исходные значения: a= 50 b= -20 c= 0
Результат обмена: a= -20 b= 0 c= 50
Var
ar:array of integer;
n,i,min,mini:integer;
begin
randomize;
min:=2147483647;
writeln('Введите размерность:');
readln(n);
setlength(ar,n);
writeln('Array:');
for i:=0 to n-1 do
begin
ar[i]:=random(-30,30);
write(ar[i]:4);
if min>=ar[i] then
begin
min:=ar[i];
mini:=i;
end;
end;
for i:=0 to mini-1 do
if ar[i]<0 then ar[i]:=0;
writeln;
writeln('Final array:');
for i:=0 to n-1 do
write(ar[i]:4);
end.
Пример ввода:
5
Пример вывода:
Array:
-3 -26 -2 18 -21
Final array:
0 -26 -2 18 -21