Информатика
  Результаты ЕГЭ
  ОБЖ
  Специалистам
  Форум
  Советы
  Internet
  Химия
  Поиск друзей
  Задачи по программированию

  Задача № 1. Вывести название дня недели по его номеру Формулировка. Вывести название дня недели по его номеру. Решение. Задача простейшим образом решается с помощью оператора выбора case. Напомним, что этот оператор позволяет организовать ветвления в зависимости от значений некоторой переменной, для каждого из которых можно предусмотреть выполнение различных действий. Причем если значению переменной не соответствует ни один вариант, выполняется else-блок (если он присутствует). Кстати, не стоит забывать, что после перечисления всех вариантов оператора case необходимо написать ключевое слово end (выходит, ключевое слово case является еще и открывающей операторной скобкой). Для того чтобы воспользоваться оператором case, нам необходимо произвести ввод номера дня недели в некоторую переменную i типа byte и по этому номеру вывести название текущего дня недели. Кстати, благодаря else-блоку в этой программке мы впервые предусмотрим сообщение об ошибке, связанной с некорректно введенным номером, которому не соответствует ни один из дней недели.
  
program DaysOfTheWeek;
var i: byte;
begin
readln(i);
case i of
1: writeln('Monday');
2: writeln('Tuesday');
3: writeln('Wednesday');
4: writeln('Thursday');
5: writeln('Friday');
6: writeln('Saturday');
7: writeln('Sunday')
else writeln('This day of the week does not exist!')
end
end.
   Задача № 2. Вычислить экспоненту с заданной точностью
Формулировка. Дано действительное число x. Вычислить значение экспоненциальной функции (то есть, показательной функции ex, где e – математическая константа, ) в точке x с заданной точностью eps с помощью ряда Тейлора: Примечание 1: показательными называются функции вида ax, где a – некоторое действительное число, x – независимая переменная, являющаяся показателем степени. Примечание 2: ряд Тейлора – это представление функции в виде суммы (возможно, бесконечной) некоторых других функций по особым правилам (требующим детального математического обоснования, что в данном случае нам не нужно). Решение. Не вникая в теоретическую часть и полагая представленную формулу корректной, попробуем разобраться в том, что же нам необходимо сделать для того, чтобы решить эту задачу: 1) Нам дана некоторая точка на оси Ox, и мы должны вычислить значение функции ex в этой точке. Допустим, если x = 4, то значение функции в этой точке будет равно ; 2) При этом вычисление необходимо реализовать с помощью заданной бесконечной формулы, в которой прибавление каждого очередного слагаемого увеличивает точность результата; 3) Точность должна составить вещественное число eps, меньшее 1 – это означает, что когда очередное прибавляемое к сумме слагаемое будет меньше eps, то необходимо завершить вычисление и выдать результат на экран. Это условие обязательно выполнится, так как математически доказано, что каждое следующее слагаемое в ряде Тейлора меньше предыдущего, следовательно, бесконечная последовательность слагаемых – это бесконечно убывающая последовательность. Теперь разберемся с вычислением самого ряда. Очевидно, что любое его слагаемое, начиная со 2-го, можно получить из предыдущего, умножив его на x и разделив на натуральное число, являющееся номером текущего шага при последовательном вычислении (примем во внимание то, что тогда шаги нужно нумеровать с нуля). Значение x нам известно на любом шаге, а вот номер текущего шага (будем хранить его в переменной n) придется фиксировать. Создадим вещественную переменную expf (от англ. exponential function – экспоненциальная функция) для накопления суммы слагаемых. Будем считать нулевой шаг уже выполненным, так как первое слагаемое в ряду – константа 1, и в связи с этим expf можно заранее проинициализировать числом 1: expf := 1; Так как мы начинаем вычисления не с нулевого, а с первого шага, то также нужно инициализировать значения n (числом 1, так как следующий шаг будет первым) и p (в ней будет храниться значение последнего вычисленного слагаемого):
n := 1;
p := 1;
Теперь можно приступить к разработке цикла. С учетом заданной точности eps условием его продолжения будет abs(p) >= eps, где abs(p) – модуль числа p (модуль нужен для того, чтобы не возникло ошибки, если введено отрицательное x). В цикле необходимо домножить p на x и доделить его на текущий номер шага n, чтобы обеспечить реализацию факториала в знаменателе, после чего прибавить новое слагаемое p к результату expf и увеличить n для следующего шага:
while abs(p) >= eps do begin
p := p * x / n;
expf := expf + p;
inc(n)
end;
После выхода из цикла нужно осуществить форматированный вывод результата expf на экран с некоторым количеством цифр после точки, например, пятью. Отметим, что если при этом введенное eps содержало меньше 5 цифр после точки, то сформированное значение expf будет, соответственно, неточным.
  

program ExpFunc;
var x, eps, expf, p: real;
n: word;
begin
readln(x, eps);
expf := 1;
n := 1;
p := 1;
while abs(p) >= eps do begin
p := p * x / n;
expf := expf + p;
inc(n)
end;
writeln(expf:0:5) end.


  О чем может сказать вода из крана
• Зеленые и бурые подтеки - наличие в воде минеральных кислот


• Мутная вода - либо высокое содержание воздуха из-за неисправного насоса, либо присутствие метана


• Металлический привкус - высокое содержание железа


• Солоноватый привкус - высокое содержание солей магния и натрия


• Рыбный, затхлый, землистый или древесный запах - присутствие в воде органических соединений


• Образование темных пятен на посуде, желтоватых или черных пятен на поверхности раковины - присутствие в воде сероводорода


• "Химический запах" - попадание промышленных сточных вод в системы водоснабжения


Сайт создан в системе uCoz