Персональная страничка
Диканева Тараса
Викторовича

Главная \ Преподавательское \ Программирование для начинающих

2. Логические выражения и условный оператор

Предыдущий раздел:

Следующий раздел:

Задание 2: Составление логических выражений, условный оператор

1. Напишите программу, которая запрашивает два числа и, а затем выводит их в порядке возрастания, сначала меньшее затем большее.

2. Создайте программу, которая запрашивает у пользователя три числа, а затем сообщает ему, какое из этих чисел наибольшее.

3. Создайте программу, которая запрашивает у пользователя число и сообщает, является ли это число четным.

4. Даны три числа a, b, c. Если среди них есть отрицательные, возведите их в квадрат. Если после возведения в квадрат число стало больше 20, умножьте его на 2.

5. Напишите программу, которая запрашивает значение x, а затем выводит значение следующей функции от x:

\mathrm{sign}(x)=\left\{ \begin{array}{r}  -1, ~x<0\\  0, ~x=0\\  1, ~x>0  \end{array} \right.

6. Напишите программу, которая запрашивает значения x, y, z, а затем выводит значение следующих функций: \max(x,\min(y,z)) и \min(\min(x,y),z).

7. Модифицируйте вашу программу расчета корней квадратного уравнения, добавив к ней проверку неотрицательности дискриминанта. Если дискриминант отрицательный, сообщайте пользователю, что уравнение не имеет корней.

8. Модифицируйте вашу программу расчета корней квадратного уравнения, добавив к ней проверку того, что первый коэффициент не равен нулю. В противном случае сообщайте пользователю, что уравнение не квадратное, а линейное и вычислите его единственный корень. Если первые два коэффициента оба равны нулю, а третье не равно, сообщите пользователю, что корней нет. А если все коэффициенты равны нулю, сообщите, что любое число является корнем.

9. Пользователь вводит три числа. Сообщите ему, упорядочены ли введенные числа по возрастанию.

10. Пользователь вводит три числа – длины сторон треугольника. Программа должна сообщить пользователю:

является ли треугольник равносторонним;
является ли треугольник равнобедренным;
является ли треугольник разносторонним;
является ли треугольник прямоугольным;
существует ли вообще такой треугольник (такого треугольника не может быть, если сумма любых двух сторон окажется меньше третьей стороны).

11. «Узник замка Иф»
За многие годы заточения узник замка Иф проделал вилкой в стене прямоугольное отверстие размером d x e. Замок Иф сложен из кирпичей размером a x b x c. Узник хочет узнать, сможет ли он выбрасывать кирпичи в море из этого отверстия, чтобы сделать подкоп. Снабдите его необходимым для решения задачи софтом. На вход программе подаются 5 чисел (a, b, c, d, e), программа должна давать ответ YES или NO.

12. Напишите программу, которая в зависимости от введенного возраста добавляет слова «год», «года» или «лет». Например, при вводе возраста 1, программа сообщает «1 год», при числе 2 – «2 года», при числе 125 – «125 лет».

Следующий раздел:

Предыдущий раздел:

37 комментариев

  1. Володя

    №5 Подскажите, правильно ?

    var
      x: real;
    begin
      writeln('Введи значение ');
      readln(x);
      if x < 0 then
      begin
        x:= -1;
      end
      else if x = 0 then
      begin
        x:= 0;
      end
      else 
      begin
        x:= 1;
      end;
      writeln (sin(x))
    end.
  2. Taras

    x ты считаешь правильно, но sin(x) это синус от x. А он тебе не нужен. В общем, выводи либо x без затей, либо пиши что-то вроде:

      writeln('sign(x) = ', x);
    
  3. Володя

    Понравилась задача № 12
    Выложу ка своё решение (со второго раза). Первый раз запутался в условных операторах, да и сам алгоритм неправильно составил
    var
    age : integer;
    begin
    writeln(‘Введи возраст ‘);
    readln(age);
    if (((age mod 100)mod 10) = 1) or ((age mod 10) = 1) then
    begin
    writeln(‘Возвраст ‘ , age, ‘ год’);
    end
    else if ((age mod 100)mod 10 = 2) or ((age mod 100)mod 10 = 3) or ((age mod 100)mod 10 = 4) then
    begin
    writeln(‘Возвраст ‘ , age, ‘ года’);
    end
    else
    begin
    writeln(‘Возвраст ‘ , age, ‘ лет’);
    end;

    end.

  4. Taras

    Пара замечаний:
    1) "(age mod 100)mod 10" это то же самое, что "age mod 10".
    2) Программа соврет для 11 лет.

  5. Аноним

    Точно, спасибо.
    Тогда дописываем ветку If age = 11 then
    writeln(‘Возвраст ‘ , age, ‘ лет’)

  6. Taras

    Еще не будет работать для 12, 13, 14, 111, 112 и т.д.

  7. Артур

    Ух ты, прикольно, я еще когда решал задачи из первого пункта мне пришлось решить подобную задачу, чтобы к ответам дать правильные окончания, и чтобы придумать код, я думал именно на примере лет и годов. Счас просматриваю задачки и смотрю тут такая задачка))))))

  8. Артур

    Аноним и володя(или вы один и тот же персонаж), вычисли сначала последнюю одну цифру и последние две(напр.125 эт 25, 2463 эт 63) и привяжи их к переменным, двузначную к своей и однозначную к своей. . . ну а потом составляй логические условия. В первую очередь ставь условие на двузначное число. не разберешься, спрашивай

  9. оксана

    Здравствуйте, Тарас Викторович, проверьте, пожалуйста, 12 задание.
    program age;
    var
    x: integer;
    begin
    readln(x);
    if ((x-1) mod 10=0) and (not (x mod 10=1)) then
    begin
    write(x, ‘ god’);
    end;
    if ((x-2) mod 10=0) or ((x-3) mod 10=0) or ((x-4) mod 10=0) then
    begin
    write(x, ‘ goda’);
    end;
    if (x mod 10=1) or ((x-5) mod 10=0) or ((x-6) mod 10=0) or ((x-7) mod 10=0) or ((x-8) mod 10=0) or ((x-9) mod 10=0) or (x mod 10=0) then
    begin
    write(x, ‘ let’);
    end;
    end.

  10. оксана

    ой, после исправления перестало работать для 1, 21 и т.д.

  11. Алексанлдр

    12 задача

    program vozrast;
    var
    n,d,b : real ;

    begin
    readln(n);
    b:= ((n/100) — trunc(n/100))*100;
    d:= ((b/10)-trunc(b/10))*10;
    if ((b>4)and( b5) or (d=0)then
    begin
    writeln( n , ‘ лет’);
    end else
    begin
    if (d>=2) then
    writeln(n , ‘года ‘)
    else

    writeln(‘год’);

    end;
    end.

  12. АленА

    Задача №1
    program zadacha_1;
    var
    x, y: integer;
    begin
    writeln (‘Введите два числа’);
    readln (x, y);
    write (‘Ваши числа в порядке возростания: ‘);
    if x<y then
    write (x, ', ',y) else
    write (y,', ', x)
    end.

  13. АленА

    Задачп №2
    program zadacha_2;
    var
    x, y, z: integer;
    begin
    writeln (‘Введите три числа’);
    readln (x, y, z);
    write (‘Наибольшее из этих чисел: ‘);
    if (x>y) and (x>z) then
    write (x);
    if (y>x) and (y>z) then
    write (y);
    if (z>x) and (z>y) then
    write (z)
    end.

  14. АленА

    Задача №3
    program zadacha_3;
    var
    x, y: integer;
    begin
    writeln (‘Введите число’);
    readln (x);
    y:= x mod 2;
    if (y>0) then
    write (x, ‘ — число непарное’)
    else
    write (x, ‘ — число парное’)
    end.

  15. АленА

    Задача №4
    program zadacha_3;
    var
    a, b, c: integer;
    begin
    writeln (‘Введите три числа’);
    readln (a, b, c);
    if (a<0) then
    a:= sqr(a);
    if (b<0) then
    b:= sqr(b);
    if (c20) then
    a:=a*2;
    if (b>20) then
    b:=b*2;
    if (c>20) then
    c:=c*2;
    write (‘a = ‘, a, ‘, b = ‘, b, ‘, c = ‘, c);
    end.

  16. АленА

    Задача №5
    program zadacha_5;
    var
    x: real;
    begin
    write (‘x = ‘);
    readln (x);
    if (x>0) then
    x:=1;
    if (x=0) then
    x:=0;
    if (x<0) then
    x:=-1;
    write ('sign(x) = ', x);
    end.

  17. АленА

    Задача №6
    program zadacha_6;
    var
    a, b, x, y, z: real;
    begin
    writeln (‘Введите x, y, z’);
    readln (x, y, z);
    begin
    write (‘max(x,min(y,z)) = ‘);
    if (yx) then a:= y;
    if (x>y) and (x>z) then a:= x;
    if (zx)then a:=z;
    writeln (a);
    end;
    begin
    write (‘min(min(x,y),z) = ‘);
    if (y<x)and (y<z) then b:= y;
    if (x<y) and (x<z) then b:= x;
    if (z<y) and (z<x)then b:=z;
    writeln (b);
    end;
    end.

  18. АленА

    Опять «съедает» комментарий элементы с решения задачи

  19. Аноним

    помогите пожалуйста с 7

  20. Алексей

    а с 11 можете помочь?

  21. АленА

    program zadacha_11;
    var
    a, b, c, d, e: integer;
    begin
    writeln(‘размер отверстия ‘);
    readln(d, e);
    writeln(‘размер кирпича ‘);
    readln(a, b, c);
    if (a<=d) and (b<=e) or (a<=e) and (b<=d)
    or (c<=d) and (b<=e) or (c<=e) and (b<=d)
    or (c<=d) and (a<=e) or (c<=e) and (a<=d)
    then
    begin
    writeln('YES')
    end else
    begin
    writeln('NO')
    end;
    end.

  22. Роман

    В задаче №5 написано sign(x) это тоже, что и sin(x) или я что-то путаю?

  23. Роман

    Алена, в задаче №6, в первой части, если ввести значения х=5, у=8, z=9 ответ выдает 9, а должен быть 8.

  24. Роман

    правильна ли задача №8?
    var
    D,a,b,c:real;
    begin
    writeln(‘введите три числа ‘);
    readln(a);
    readln(b);
    readln(c);
    D:=sqr(b)-4*a*c;
    if (a=0)and(b0)then
    begin
    writeln(‘это уравнение линейное с корнем ‘,(sqr(b)-c)/b);
    end else
    if (a=0)and(b=0)and(c0)then
    begin
    writeln(‘квадратное уравнение корней не имеет’);
    end else
    if (a=0)and(b=0)and(c=0)then
    begin
    writeln(‘корнем является любое число’);
    end else
    if (a0)and(D<0)then
    begin
    writeln('квадратное уравнение корней не имеет');
    end else
    if (a0)and(D>0)then
    begin
    writeln(‘первый корень ‘,(-b-D)/2*a,’ второй корень ‘,(-b+D)/2*a);
    end else
    if (a0)and(D=0)then
    begin
    writeln(‘корень уравнения ‘,-b/2*a);
    end;
    end.

  25. Роман

    Алена в задаче 11, если размер отверстия будет совпадать с размером кирпича, то кирпич в такое отверстие вряд ли пройдет.

  26. Роман

    задача 12
    var
    x:integer;
    begin
    writeln(‘введите возраст ‘);
    readln(x);
    if ((x mod 10)=1)and((x mod 100)11) then
    begin
    writeln(‘введенный возраст ‘,x,’ год.’)
    end else
    if((x mod 10)1)then
    begin
    writeln(‘введенный возраст ‘,x,’ года.’)
    end else
    begin
    writeln(‘введенный возраст ‘,x,’ лет.’);
    end;
    end.

  27. Роман

    Опять скушало кусочек.:-)

  28. АленА

    Роман, по поводу №6 при х=5, у=8, z=9 , правильный ответ 8 и 5, читайте условие. Нужно найти в первом случае max(x,min(y,z)) — максимум из двух чисел
    1-е: x =5
    2-е: min(y,z) = 8 (минимум от 8 и 9 = 8),
    а значит максимум из 5 и 8 = 8.

    Понятно написала?

    А что касается кирпича равного по размеру отверстия, то на мой взгляд он пройдет.

  29. АленА

    Ой, Роман, вы так и написали 8 , проверила моей программой тоже 8. Тогда в чем был вопрос?

  30. Виктор

    Напишите Решение Задачи №11

  31. Сая

    Задача 11. если сделать так, правильно?

    program Program9;

    var
    a, b, c, d, e: real;

    begin
    writeln(‘введите размер отверстия, числа «d» и «e»‘);
    readln(d, e);
    writeln(‘введите размер кирпеча, из которого сложен замок, числа «a», «b», «c»‘);
    readln(a, b, c);
    if (d > a) and (d > b) and (d > c) and (e > a) and (e > b) and (e > c) then
    writeln(‘YES’)
    else
    writeln(‘NO’);

    end.

  32. Сая

    12 задача. Решила поделиться своим решением )

    program Program12;

    var
    b, c, s: integer;

    begin
    writeln(‘сколько вам лет?’);
    readln(b);
    c := b mod 100;
    s := b mod 10;
    if (c = 11) or (c = 12) or (c = 13) or (c = 14) or (c = 15) or (c = 16) or (c = 17) or (c = 18) or (c = 19) then
    begin
    writeln(‘вам ‘, b, ‘ лет’);
    end else
    begin
    if s = 1 then
    writeln(‘вам ‘, b, ‘ год’);
    if (s = 2) or (s = 3) or (s = 4) then
    writeln(‘вам ‘, b, ‘ года’);
    if (s = 5) or (s = 0) then
    writeln(‘вам ‘, b, ‘ лет’);
    end;

    end.

  33. Ruslan

    //12. Напишите программу, которая в зависимости от введенного возраста добавляет слова «год», «года» или «лет».
    //Например, при вводе возраста 1, программа сообщает «1 год», при числе 2 – «2 года», при числе 125 – «125 лет».
    program два_двенадцать;
    var
    x, y: integer;
    begin
    writeln (‘Введите возраст’);
    read (x);
    if x<1 then
    begin
    write ('Ошибка, возраст должен быть больше нуля')
    end else
    if x=1 then
    begin
    write (x, ' год')
    end else
    if x=5 then
    begin
    write (x, ‘ лет’)
    end;
    end.

  34. Pavel

    program vozrast;
    var
    x,y:integer;
    begin
    writeln(‘vvedite vozrast’);
    readln(x);
    if x10) and (y=5) and (y=2) and (y<=4) then
    writeln(x,' goda');
    end.

  35. Danil

    n6
    Думаю так))

    var
    a:integer;
    begin
    Writeln(‘Введите ваш возраст:’);
    readln(a);
    if a1) and (a<=4) then
    Writeln('Вам ',a,'года')
    else
    Writeln('Вам ',a,'лет');
    end.

  36. Nord

    12-й номер.
    Хоть и сделан способом вырезания чисел и не оди из самы простых,но программа работает для всех чисел и цель ее работы достигнута.
    Var
    x,z:integer;
    y:real;
    begin;
    write(‘Введите число:’);
    readln(x);
    if (x=3) or (x=4)or (x=2) then begin
    writeln(x,’ ‘,’года’);
    end;
    if (x=6)or (x=5)then begin
    writeln(x,’ ‘,’лет’);
    end;
    if (x=1) then begin
    writeln(x,’ ‘,’год’);
    end;
    if x>6 then begin
    y:=(x mod 5)-1;
    if (y0) then begin
    writeln(x,’ ‘,’лет’);
    end;
    if (y=0) then begin
    writeln(x,’ ‘,’год’);
    end;
    end;
    end.

  37. Аноним

    А какое правильное решение на 11 задачу?

Добавить комментарий