Можно ли переставлять операторы в приведённом алгоритме обмена значений двух переменных? Если нет, приведите контрпример, когда перестановка даст неверный результат.
Program msdos; uses crt; var r,sum: real; neg:integer; begin writeln('*** alphaues is thinking... ***'); writeln('*** OK ***'); neg:=0; sum:=0; r:=1; writeln('Введите ненулевое число'); writeln('(или введите 0 для конца последовательности) '); while r<>0 do begin write('Ввод:'); readln (r); if r<0 then neg:=neg+1; if r>0 then sum:=sum+r; end; writeln(); writeln('Количество отрицательных чисел ',neg); writeln('Сумма положительных чисел ',sum); end.
Кстати, похоже на какую-то ошибку в условии задачи: по формуле A(X,Y)=2X^2-Y^2 ни один элемент массива никогда не будет равен 0.
Program Lobu; uses crt; const n=2; var a:array[1..n,1..n] of real; neg,sum: real; i,j:integer; begin writeln('*** alphaues is thinking... ***'); writeln('*** OK ***'); neg:=0; sum:=0; for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=2*i*i-j*j; write (a[i,j]:7:2); if a[i,j]<0 then neg:=neg+1; if a[i,j]>0 then sum:=sum+a[i,j]; if a[i,j]=0 then writeln('Элемент А(',i,',',j,') равен 0'); end; writeln(); end; writeln(); writeln('Количество отрицательных чисел ',neg); writeln('Сумма положительных чисел ',sum); end.
Program msdos;
uses crt;
var
r,sum: real;
neg:integer;
begin
writeln('*** alphaues is thinking... ***');
writeln('*** OK ***');
neg:=0;
sum:=0;
r:=1;
writeln('Введите ненулевое число');
writeln('(или введите 0 для конца последовательности) ');
while r<>0 do
begin
write('Ввод:');
readln (r);
if r<0 then neg:=neg+1;
if r>0 then sum:=sum+r;
end;
writeln();
writeln('Количество отрицательных чисел ',neg);
writeln('Сумма положительных чисел ',sum);
end.
Проверено - работает на Паскаль АВС.
Кстати, похоже на какую-то ошибку в условии задачи: по формуле A(X,Y)=2X^2-Y^2 ни один элемент массива никогда не будет равен 0.
Program Lobu;
uses crt;
const n=2;
var
a:array[1..n,1..n] of real;
neg,sum: real;
i,j:integer;
begin
writeln('*** alphaues is thinking... ***');
writeln('*** OK ***');
neg:=0;
sum:=0;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=2*i*i-j*j;
write (a[i,j]:7:2);
if a[i,j]<0 then neg:=neg+1;
if a[i,j]>0 then sum:=sum+a[i,j];
if a[i,j]=0 then writeln('Элемент А(',i,',',j,') равен 0');
end;
writeln();
end;
writeln();
writeln('Количество отрицательных чисел ',neg);
writeln('Сумма положительных чисел ',sum);
end.