begin21-30

Решение задач. День третий. Задачи Begin21-30.

Здравствуйте, дорогие читателинашего сайта. На этой недели счетчик посещаемости наконец-то сдвинулся с мертвой точки. Это не может не радовать. Если вы новоиспеченный постоянный посетитель этого сайта, оставьте комментарий к любому посту, чтобы мы не думали, что на нашем сайте обитают только боты 🙂 Ну что ж, приступим к решению задач Begin21-30.

Begin21. Даны координаты трех вершин треугольника: (x1, y1), (x2, y2), (x3, y3). Найти его периметр и площадь, используя формулу для расстояния между двумя точками на плоскости (см. задание Begin20). Для нахождения площади треугольника со сторонами a, b, c использовать формулу Герона:          S = √(p ⋅ ( p − a) ⋅ ( p − b) ⋅ ( p − c)), где p — полупериметр.

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

  1. Для того, чтобы найти периметр треугольника, находим расстояния между всеми вершинами (ведь расстояния между вершинами это и есть стороны) по формуле √((x2 — x1)2+(y2 — y1)2), а затем суммируем их.
  2. Для того, чтобы найти площадь, используем формулу Герона.
Решение Показать

Begin22°. Поменять местами содержимое переменных A и B и вывести новые значения A и B.

Эта классическая задача является основой более сложных алгоритмов. Представьте, у Вас есть два кувшина: первый наполнен водой, второй — соком. Требуется поменять жидкости местами, то есть, перелить воду во второй кувшин, а сок — в первый. Как Вы решите данную проблему? Скорее всего, Вы возьмете третий кувшин и временно перельете в него содержимое одного из кувшинов. Так и в Паскале: сначала мы присваиваем значение любой из двух переменных третьей, а уже потом перемещаем значения переменных.

Задачи
Вода и персиковый сок
Решение Показать

Begin23. Даны переменные A, B, C. Изменить их значения, переместив содержимое A в B, B — в C, C — в A, и вывести новые значения переменных A, B, C.

И снова мы используем дополнительную переменную.

Решение Показать

Begin24. Даны переменные A, B, C. Изменить их значения, переместив содержимое A в C, C — в B, B — в A, и вывести новые значения переменных A, B, C. 

Задача, противоположная предыдущей.

Решение Показать

Begin25. Найти значение функции y = 3·x6 – 6·x2 – 7 при данном значении x.

И снова мы прибегаем к помощи функций power и sqr.

Решение Показать

Begin26. Найти значение функции y = 4·(x–3)6 – 7·(x–3)3 + 2 при данном значении x.

Решение Показать

Begin27°. Дано число A. Вычислить A8, используя вспомогательную переменную и три операции умножения. Для этого последовательно находить A2A4, A8. Вывести все найденные степени числа A. 

В данной задачи требуется использовать вспомогательную переменную и три операции умножения, поэтому мы не можем использовать функцию power.

Решение Показать

Begin28. Дано число A. Вычислить A15, используя две вспомогательные переменные и пять операций умножения. Для этого последовательно находить A2, A3, A5, A10, A15. Вывести все найденные степени числа A. 

Эта задача аналогична предыдущей, но немного сложнее.

Решение Показать

Begin29. Дано значение угла α в градусах (0 < α < 360). Определить значение этого же угла в радианах, учитывая, что 180° = π радианов. В качестве значения π использовать 3.14.

Две следующие задачи является актуальными для нас. Ведь функции  sin, cos, arctan работают только с радианами. И программа, которая быстро переводит градусы в радианы или радианы в градусы, очень ценна. А теперь формула: Радианы = Градусы * pi / 180.

Решение Показать

Begin30.Дано значение угла α в радианах (0 < α < 2·π). Определить значение этого же угла в градусах, учитывая, что 180° = π радианов. В качестве значения π использовать 3.14.

Формула нахождения градусов следует из предыдущей формулы : Градусы = Радианы * 180 / pi. Кстати, в решении данной задачи я использую стандартное значение Pi = 3.14159265358979

Решение Показать

На сегодня все! Мы с вами решили целых десять задач. Конечно, они не очень сложные, но ведь цель этих задач познакомить вас с основными функциями , вводом и выводом и показать вам то, как легко и интересно программировать на любом из языков программирования.

  • Andrey Leshenko

    Begin28- Power (2,15)=32768, а у вас B := B * C; {8192}

    writeln(A, ‘ в пятнадцатой степени — ‘, B);

    • ой. а вы можете исправить?

  • ку

    не соглашусь с решением 22 задачи

    подставьте вот эту строчку
    writeln(‘tmp ‘,tmp);
    и попробуйте выполнить алгоритм снова

    tmp остался равен последнему присвоенному значению, т.е «а»

    • ww

      получается так. сначала было две ёмкости по литру. а на выходе получается 3 ёмкости по литру

    • Решение правильное. Я даже не понимаю суть вопроса.

      • Никита

        Данил,есть же решение этой задачи без добавления буферной переменной.Код получается более коипактный

        • Никита, Нет решения задачи без добавления буферной переменной. или вы про способ с плюсованием? Если числа будут большими, то одна из переменных может переполниться; и этот способ слишком запупыренный.
          Но вы можете скинуть этот кусочек кода, чтобы все заценили.

          • Никита

            Вот
            a:=b+a;
            b:=a-b;
            a:=a-b;

          • Спасибо

  • Speed

    Пока что только начала пользоваться сайтом, но хочу выразить благодарность! Спасибо за ваши курсы по Паскалю 🙂 Очень помогают)

  • Омар Шайхалиев

    Извините, как быть с ограничениями указанными в условии задач.

  • Евгений Головейко

    Мы не ищем легких путей))) в задании 21 можно обойтись лишь переменными координат точек, периметром и площадью.
    правда это усложняет формулы до вида:
    P:=(sqrt(sqr(x2-x1)+sqr(y2-y1)))+(sqrt(sqr(x3-x2)+sqr(y3-y2)))+(sqrt(sqr(x3-x1)+sqr(y3-y1)));
    S:=sqrt((P/2)*(P/2-(sqrt(sqr(x2-x1)+sqr(y2-y1))))*(P/2-(sqrt(sqr(x3-x2)+sqr(y3-y2))))*(P/2-(sqrt(sqr(x3-x1)+sqr(y3-y1)))));

    • alen_marzz

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

  • Андрей Зуев

    > Здравствуйте, дорогие читателинашего сайта. На этой недели
    Вы пропустили пробел))
    Удачи вам там!

  • Андрей Зуев

    Здравствуйте,в 22-ю задачу можно решить используя только две переменные.
    program Begin22;

    var
    a, b : real;

    begin
    write(‘Введите A и B: ‘);
    readln(a, b);
    a := a + b;
    b := a — b;
    a := a — b;
    writeln(‘A = ‘, a);
    writeln(‘B = ‘, b);
    end.
    P.S.Надеюсь ,что сам не совершил ошибок))))

    • Андрей Зуев

      Ой,нашел этот же способ ниже,простите за беспокойство.

      • alen_marzz

        🙂