begin clrscr; writeln('Что вы хотите сделать?'); writeln('1-сложить 2-отнять 3-разделить 4-умножить'); readln(c); if c = 1 then begin read(a, b); writeln(a + b) end else if c = 2 then begin read(a, b); writeln(a - b) end else if c = 3 then begin read(a, b); writeln(a / b) end else if c = 4 then begin read(a, b); writeln(a * b); end else write('Так, стоп, че за фигня? Где то тут меня надурили...'); readkey end.
Но короче и понятнее это написать так: uses crt;
var a, b, c: integer;
begin ClrScr; Writeln('Что вы хотите сделать?'); Write('1-сложить 2-отнять 3-разделить 4-умножить'); Readln(c); if (c >= 1) and (c <= 4) then begin Write('Введите через пробел два натуральных числа: '); Read(a, b); case c of 1: Writeln(a + b); 2: Writeln(a - b); 3: Writeln(a / b); 4: Writeln(a * b) end; end else Write('Так, стоп, че за фигня? Где то тут меня надурили...'); ReadKey end.
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)
var i:integer;
begin
for i:=1 to 100 do writeln(i*i);
end.