
Приветствуем читателей нашего сайта! С сегодняшнего дня две недели подряд мы решаем задачи из сборника Абрамяна. Сегодня мы наконец-то добьем if16-30. А вообще мы решим все задачи из While и For и, может быть, Series.
If16. Даны три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Вывести новые значения переменных A, B, C.
Program If_16;
var a, b, c: integer;
begin
write('Введите A, B и C: ');
readln(a, b, c);
if (b<c) and (a<b) then
begin
a := 2 * a;
b := 2 * b;
c := 2 * c;
end
else begin
a := -a;
b := -b;
c := -c;
end;
writeln (a,' ', b,' ', c);
end.If17. Даны три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию или убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Вывести новые значения переменных A, B, C.
Program If_17;
var
a, b, c: integer;
begin
write('Введите A, B и C: ');
readln(a, b, c);
if (b < a) and (c < b) or (b < c) and (a < b) then
begin
a := 2 * a;
b := 2 * b;
c := 2 * c;
end
else
begin
a := -a;
b := -b;
c := -c;
end;
writeln(a, ' ', b, ' ', c);
end.If18. Даны три целых числа, одно из которых отлично от двух других, равных между собой. Определить порядковый номер числа, отличного от остальных.
Program If_18; var a, b, c: integer; begin readln(a, b, c); if a = b then write(3); if b = c then write(1); if a = c then write(2); end.
If19. Даны четыре целых числа, одно из которых отлично от трех других, равных между собой. Определить порядковый номер числа, отличного от остальных.
Используем метод полностью противоположный предыдущему. Проверяем числа на неравенство, а не на равенство.
program if19;
var
a, b, c, d: integer;
begin
read(a, b, c, d);
if (a <> b) and (a <> c) then write(1) {проверяем неравенство два раза. вдруг это b другое число.}
else
if (a <> b) and (b <> c) then write(2)
else
if (c <> a) and (c <> b) then write(3)
else write(4); {если все варианты совпадают, следовательно 4 другой}
end.If20. На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту точку и ее расстояние от точки A.
Для того чтобы решить эту задачу, используем модуль, ведь модуль — это расстояние. В Паскаль есть специальная функция для превращения любого числа в положительное число — abs.
program if20;
var
A, B, C, ras1, ras2: integer;
begin
write('Введите A: ');
read(A);
write('Введите B и C: ');
read(B, C);
ras1 := Abs(A - B);
ras2 := Abs(A - C);
if ras1 < ras2 then Write('Ближайшая к точке А точка B и растояние между ними - ', ras1)
else write('Ближайшая к точке А точка C и растояние между ними - ', ras2);
end.If21. Даны целочисленные координаты точки на плоскости. Если точка совпадает с началом координат, то вывести 0. Если точка не совпадает с началом координат, но лежит на оси OX или OY, то вывести соответственно 1 или 2. Если точка не лежит на координатных осях, то вывести 3.
program if21; var x, y: integer; begin read(x, y); if (x = 0) and (y = 0) then write(0) else if x = 0 then write(2) else if y = 0 then write(1) else write(3); end.
If22°. Даны координаты точки, не лежащей на координатных осях OX и OY. Определить номер координатной четверти, в которой находится данная точка.
Если кто-то не помнит как располагаются координатные четверти, вот небольшая картинка.
program if22;
var
X, Y: integer;
begin
write('Введите X: ');
read(X);
write('Введите Y: ');
read(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. If23. .аны целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным осям. Найти координаты его четвертой вершины.
Очень много if. Суть метода в том, что сравнивая введенные x и y друг с другом, мы находим, какие точки лежат на одной прямой, какие нет, а затем в зависимости от их положения находим неизвестный x и y.
program if23;
var
x1, y1, x2, y2, x3, y3, x4, y4: integer;
begin
write('Введите x1. y1: ');
readln(x1, y1);
write('Введите x2, y2: ');
readln(x2, y2);
write('Введите x3, y3: ');
readln(x3, y3);
if x1 = x2 then x4 := x3;
if x1 = x3 then x4 := x2;
if x2 = x3 then x4 := x1;
if y1 = y2 then y4 := y3;
if y1 = y3 then y4 := y2;
if y2 = y3 then y4 := y1;
writeln('Координаты четвертой вершины: (', x4, ';', y4,')' );
end. If24. Для данного вещественного x найти значение следующей функции f, принимающей вещественные значения: f(x) =
2·sin(x), если x > 0,
6 – x, если x ≤ 0.
program if24;
var
x, f: real;
begin
write('Введите X: ');
readln(x);
if x > 0 then f := 2 * Sin(x)
else f := 6 - x;
writeln('f(x) = ', f:1:2);
end. If25. Для данного целого x найти значение следующей функции f, принимающей значения целого типа: f(x) =
2·x, если x < –2 или x > 2,
–3·x, в противном случае.
program if25;
var
x, f: integer;
begin
write('Введите X: ');
readln(x);
if (x < -2) or (x > 2) then f := 2 * x
else f := -3 * x;
writeln('f(x) = ', f);
end. If26°. Для данного вещественного x найти значение следующей функции f, принимающей вещественные значения: f(x) =
–x, если x ≤ 0,
x2, если 0 < x < 2,
4, если x ≥ 2.
program if26;
var
x, f: real;
begin
write('Введите X: ');
readln(x);
if (x <= 0) then f := -x else if (x >= 2) then f := 4
else f := Sqr(x);
writeln('f(x) = ', f:1:2);
end.If27. Для данного вещественного x найти значение следующей функции f, принимающей значения целого типа: f(x) =
0, если x < 0,
1, если x принадлежит [0, 1), [2, 3), …,
–1, если x принадлежит [1, 2), [3, 4), ….
Как решать эту задачу? Давайте поразмышляем. Посмотрите на второе условие, нижняя граница полуинтервала — четное число. Любое число в этом интервале задается формулой — четное число. набор цифр. Тогда наша цель — достать целую часть из вещественного числа. Для этого используем функцию trunc. Осталось только узнать четность числа, в этом нам помогут div и mod.
program if27;
var
f, x: real;
begin
write('Введите X = '); {предположим вы ввели 1.5}
readln(X);
if (x < 0) then f := 0
else
if (Trunc(x) mod 2 = 0) then f := 1 { trunk(1.5) = 1, 1 mod 2 <> 0}
else f := -1;
writeln('f(x) = ', f); { вывод: -1}
end.If28. Дан номер года (положительное целое число). Определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный — 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 — являются).
program if28;
var
year: integer;
begin
write('Введите год: ');
readln(year);
if year mod 4 = 0 then
if year mod 100 = 0 then
if year mod 400 <> 0 then write('365 дней')
else write('366 дней')
else write('366 дней')
else write('365 дней');
end.If29. Дано целое число. Вывести его строку-описание вида «отрицательное четное число», «нулевое число», «положительное нечетное число» и т. д.
program if29;
var
number: integer;
begin
write('Введите число: ');
readln(number);
if number = 0 then
begin
write('нулевое число');
exit // обрывает работу программы
end
else
if number > 0 then write('Положительное ') else write('Отрицательное ');
if number mod 2 = 0 then write('четное ') else write('нечетное ');
end.If30. Дано целое число, лежащее в диапазоне 1–999. Вывести его строку-описание вида «четное двузначное число», «нечетное трехзначное число» и т. д.
program if30;
var
a: integer;
begin
write('Введите число: ');
read(a);
if Odd(a) then write('Нечетное ') else write('Четное ');
if a >= 100 then write('трехзначное число') else
if a < 10 then write('однозначное число') else write('двухзначное число');
end.На сегодня все! Не забудьте подписаться на наш сайт и покликать по кнопочкам. Если у вас возникли вопросы, задавайте их в комментариях.
