1) Независимо от условия будет выполнен оператор присваивания. a:=b 2) Условие ложное, значит будет выполнен оператор после else write('b') 3) Условие истинное, значит будет выполнен оператор после then write('a') 4) Функции операторов присваивания одинаковы, значит не зависят от условия (a + b - 14 = b - 14 + a) a := a + b - 14 5) Оператор a := a практически ничего не изменяет, значит можно избавится от него if a<b then a:=b 6) То же самое, что и в пункте 5, только нужно поменять истину на ложь if not(a>b) then a:=b 7) Остаток деления на 2 не может быть равен трем, значит условие всегда ложно. Else нет, значит условный оператор можно смело откинуть 8) Остаток от деления на может быть равен или 0 или 1, значит в любом случае условие истинно. Первый условный оператор можно смело откинуть, но вложеннный остается! if a<0 then a:=-a 9) Если a отрицательное, тогда b = a, то есть тоже отрицательно. Если a неотрицательное, тогда b = -a, то есть b отрицательное. Можно записать как модуль числа a, умноженный на -1 b := -abs(a)
uses Crt; const n=11; type Mas = array [1..n] of real; var A: Mas; i: integer; Sum, Sred: real; begin ClrScr;
Sum:=0; for i:=1 to n do begin A[i]:= 100+random(1000)/27; Sum:=Sum+A[i]; end; Sred:=Sum/n; WriteLn ('Old Massiv: '); for i:=1 to n do Write (A[i]:6:2,' ');
WriteLn; WriteLn; WriteLn ('Sred = ', Sred:6:2); WriteLn; WriteLn ('New Massiv: '); for i:=1 to n do begin if A[i]>Sred then A[i]:=A[i]+40; Write (A[i]:6:2,' '); end; WriteLn;