Приветствуем читателей нашего сайта! С сегодняшнего дня две недели подряд мы решаем задачи из сборника Абрамяна. Сегодня мы наконец-то добьем 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.
На сегодня все! Не забудьте подписаться на наш сайт и покликать по кнопочкам. Если у вас возникли вопросы, задавайте их в комментариях.