Решение задач блока If 21-30
Решение задач из задачника по программированию М. Э. Абрамяна. Задачи из блока If: «Условный оператор».
Задача If21
Даны целочисленные координаты точки на плоскости. Если точка совпадает с началом координат, то вывести 0. Если точка не совпадает с началом координат, но лежит на оси OX или OY, то вывести соответственно 1 или 2. Если точка не лежит на координатных осях, то вывести 3.

uses PT4;
var
x, y: integer;
begin
Task('If21');
Read(x, y);
if (x = 0) and (y = 0) then Write(0);
if (y = 0) and (x <> 0) then Write(1);
if (x = 0) and (y <> 0) then Write(2);
if (x <> 0) and (y <> 0) then Write(3);
end.
Pascaluses PT4;
var
x, y, k: integer;
begin
Task('If21');
Read(x, y);
if (x = 0) and (y = 0) then k := 0;
if (y = 0) and (x <> 0) then k := 1;
if (x = 0) and (y <> 0) then k := 2;
if (x <> 0) and (y <> 0) then k := 3;
Write(k);
end.
Pascaluses PT4;
var
x, y, k: integer;
begin
Task('If21');
Read(x, y);
if (x = 0) and (y = 0) then k := 0
else if (y = 0) and (x <> 0) then k := 1
else if (x = 0) and (y <> 0) then k := 2
else k := 3;
Write(k);
end.
PascalЗадача If22
Даны координаты точки, не лежащей на координатных осях OX и OY. Определить номер координатной четверти, в которой находится данная точка.

uses PT4;
var
x, y: real;
k: integer;
begin
Task('If22');
Read(x, y);
if (x > 0) and (y > 0) then k := 1;
if (x < 0) and (y > 0) then k := 2;
if (x < 0) and (y < 0) then k := 3;
if (x > 0) and (y < 0) then k := 4;
Write(k);
end.
Pascaluses PT4;
var
x, y: real;
begin
Task('If22');
Read(x, y);
if (x > 0) and (y > 0) then Write(1);
if (x < 0) and (y > 0) then Write(2);
if (x < 0) and (y < 0) then Write(3);
if (x > 0) and (y < 0) then Write(4);
end.
PascalЗадача If23
Даны целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным осям. Найти координаты его четвертой вершины.

uses PT4;
var
x, y, x1, y1, x2, y2, x3, y3: integer;
begin
Task('If23');
Read(x1, y1, x2, y2, x3, y3);
if x1 = x2 then x := x3
else if x1 = x3 then x := x2
else x := x1;
if y1 = y2 then y := y3
else if y1 = y3 then y := y2
else y := y1;
Write(x, y);
end.
PascalЗадача If24
Для данного вещественного x найти значение следующей функции f, принимающей вещественные значения: f(x) = 2·sin(x), если x > 0, 6 − x, если x ≤ 0.

uses PT4;
var
x, f: real;
begin
Task('If24');
Read(x);
if x > 0 then f := 2 * sin(x)
else f := 6 - x;
Write(f);
end.
PascalЗадача If25
Для данного целого x найти значение следующей функции f, принимающей значения целого типа: f(x) = 2·x, если x < −2 или x > 2, −3·x в противном случае.

uses PT4;
var
x, f: integer;
begin
Task('If25');
Read(x);
if (x < -2) or (x > 2) then f := 2 * x
else f := -3 * x;
Write(f);
end.
PascalЗадача If26
Для данного вещественного x найти значение следующей функции f, принимающей вещественные значения: −x, если x ≤ 0, f(x) = x2, если 0 < x < 2, 4, если x ≥ 2.

uses PT4;
var
x, f: real;
begin
Task('If26');
Read(x);
if x <= 0 then f := -x
else if (x > 0) and (x < 2) then f := sqr(x)
else f := 4;
Write(f);
end.
PascalЗадача If27
Для данного вещественного x найти значение следующей функции f, принимающей значения целого типа: 0, если x < 0, f(x) = 1, если x принадлежит [0, 1), [2, 3), …, −1, если x принадлежит [1, 2), [3, 4), … .

uses PT4;
var
x: real;
f: integer;
begin
Task('If27');
Read(x);
if x < 0 then f := 0
else if trunc(x) mod 2 = 0 then f := 1
else f := -1;
Write(f);
end.
Pascaluses PT4;
var
x: real;
begin
Task('If27');
Read(x);
if x < 0 then Write(0)
else if trunc(x) mod 2 = 0 then Write(1)
else Write(-1)
end.
PascalЗадача If28
Дан номер года (положительное целое число). Определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный — 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 — являются).

uses PT4;
var
year: integer;
begin
Task('If28');
Read(year);
if year mod 4 = 0 then
if (year mod 100 = 0) and (year mod 400 <> 0) then Write(365)
else Write(366)
else Write(365);
end.
PascalЗадача If29
Дано целое число. Вывести его строку-описание вида «отрицательное четное число», «нулевое число», «положительное нечетное число» и т. д.

uses PT4;
var
x: integer;
k: string;
begin
Task('If29');
read(x);
if x = 0 then k := 'нулевое число'
else begin
if x > 0 then k := 'положительное '
else k := 'отрицательное ';
if x mod 2 = 0 then k := k + 'четное число'
else k := k + 'нечетное число';
end;
write(k);
end.
Pascaluses PT4;
var
x: integer;
begin
Task('If29');
read(x);
if x = 0 then Write('нулевое число')
else begin
if x > 0 then
if x mod 2 = 0 then write('положительное четное число')
else write('положительное нечетное число')
else if x mod 2 = 0 then write('отрицательное четное число')
else write('отрицательное нечетное число');
end;
end.
PascalЗадача If30
Дано целое число, лежащее в диапазоне 1–999. Вывести его строку-описание вида «четное двузначное число», «нечетное трехзначное число» и т. д.

uses PT4;
var
x: integer;
k: string;
begin
Task('If30');
read(x);
if x mod 2 = 0 then k := 'четное '
else k := 'нечетное ';
if x >= 100 then k := k + 'трехзначное число'
else if x < 10 then k := k + 'однозначное число'
else k := k + 'двузначное число';
write(k);
end.
Pascaluses PT4;
var
x: integer;
begin
Task('If30');
Read(x);
if x mod 2 = 0 then
if x >= 100 then Write('четное трехзначное число')
else if x < 10 then Write('четное однозначное число')
else Write('четное двузначное число')
else
if x >= 100 then Write('нечетное трехзначное число')
else if x < 10 then Write('нечетное однозначное число')
else Write('нечетное двузначное число');
end.
Pascal