- •Тема 1. Арифметика действительных чисел. Вычисления по формулам Задача 11 в
- •Тема 2. Разветвления
- •Задача 27б
- •Тема 3. Простейшая целочисленная арифметика
- •Задача 14в
- •Тема 4. Простейшие циклы Задача 11
- •Тема 5. Простейшие графические построения Задача 15
- •Тема 6. Пошаговый ввод данных и вывод результатов
- •Тема 7. Сочетания цикла и разветвления
- •Тема 8. Обработка последовательностей символов
- •Тема 9. Вычисления с сохранением последовательности значений
- •Тема 10. Вложенные циклы
- •Тема 11. Вложенные циклы в матричных задачах
- •Тема 12. Использование процедур
- •Тема 13.Файлы
- •Тема 14. Списки
Задача 27б
Задание :
Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рис. ) и вычислить
Математическое обоснование:
Область находится между линиями x*x+y*y=1 и y=x/2, причем внутри круга, образованного первой линией и под второй линией. Точки внутри круга задаются неравенством: y*y<=1-x*x, а точки под линией неравенством y<=x/2, таким образом, необходимо проверить одновременное выполнение обоих неравенств и в зависимости от этого вычислить u.
Алгоритм:
Вводим значения x, y
Проверяем введенные значения на выполнение условия (y*y<=1-x*x) и (y<=x/2)
Вычисляем значение u в зависимости от результата пункта 2
Выводим на экран u.
Блок-схема:
Реализация:
program t2_num27b;
var
x,y,u:real;
begin
Writeln('Введите действительные x, y');
Write('x=');
Readln(x);
Write('y=');
Readln(y);
if (sqr(y)<=(1-sqr(x))) and (y<=x/2) then u:=-3
else u:=sqr(y);
Writeln('Результат u=',u:8:4);
Readln;
end.
Протокол:
В процессе диалога вводим x=1, y=2
Значения координат не принадлежат точке, входящей в область Д: y>x/2 (2>0,5)
U=y*y=2*2=4
Печать результата на экран : «Результат : u= 4.0000»
Тема 3. Простейшая целочисленная арифметика
Задача 12
Задание :
Дано натуральное число n (n <100), определяющее возраст человека (в годах). Дать для этого числа наименования "год", "года" или "лет": например, 1 год, 23 года, 45 лет и т. д.
Обоснование:
Как известно, для написания возраста человека орфографически правильно необходимо учитывать последнюю цифру числа лет: для чисел 0, от 5 до 9 пишется «лет»; для числа 1 пишется «год»; для чисел от 2 до 4 пишем «года». Эти правила справедливы для всех чисел, кроме тех, что больше 10 и меньше 20, для них мы не зависимо от последней цифры пишем «лет».
Алгоритм:
Вводим число лет n (n<100)
Если n>20, то k равно остатку от деления n на 10, иначе k:=n
В зависимости от того, какому интервалу принадлежит k определяем правильное написание возраста
Выводим на печать сообщение о возрасте человека.
Блок-схема:
Реализация:
program t3_n12;
var
n,k:byte;
s:string;
begin
Writeln('Сколько вам лет?');
Readln(n);
if n>20 then k:=n mod 10
else k:=n;
case k of
1 : s:=' год';
2..4 : s:=' года';
else s:=' лет';
end;
Writeln('Поздравляем, вам ',n,s);
Readln;
end.
Протокол:
В процессе диалога вводим n=43
Т.к. n>20, то k=n mod 10=3
Т.к. k=3, то k принадлежит интервалу [2..4], т.е. s= «года»
Печать : «Поздравляем вам 43 года»
Задача 14в
Задание:
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое число- номер вертикали (при счете слева направо), второе: номер горизонтали (при счете снизу вверх). Даны натуральные числа k, l, m, n, каждое из которых не превосходит 8. На поле (k, l) расположен конь. Угрожает ли он полю (m, n)?
Математическое обоснование:
Известно, что конь ходит буквой «Г». Тогда, если считать, что конь находится в центре таблицы (см. ниже), то получается, что он угрожает полям, отмеченным красными «1».
-
1
1
1
1
1
1
1
1
1
Получаем, что конь угрожает полям, модули разности вертикальных координат которых равны либо 1 либо 2, и модули разности горизонтальных координат равны соответственно вертикальным 2 или 1.
Алгоритм:
Вводим значения k,l,m,n
Проверяем, соответствуют ли заданные координаты стандартному размеру доски 8х8 (да – продолжаем, нет - выходим)
Проверяем, угрожает ли конь на поле (k, l) полю (m, n)
Печатаем результат
Блок-схема:
Реализация:
program t3_num14v;
var
k,l,m,n:byte;
begin
Write('k=');
Readln(k);
Write('l=');
Readln(l);
Write('m=');
Readln(m);
Write('n=');
Readln(n);
if not ((k in [1..8]) and (l in [1..8]) and (m in [1..8]) and (n in [1..8]))
then
Writeln('Введены числа, не соответствующие размеру доски')
else
if ((abs(k-m)=1) and (abs(l-n)=2)) or ((abs(l-n)=1) and (abs(k-m)=2))
then
Writeln('Конь с клетки ',k,',',l,' может попасть на клетку ',m,',',n)
else
Writeln('Конь с клетки ',k,',',l,' не может попасть на клетку ',m,',',n);
Readln;
end.
Протокол:
В процессе диалога вводим k=2,l=3,m=5,n=4
k<8, l<8, m<8, n<8, заданные числа соответствуют размеру доски, идем дальше
abs(k-m)=2, abs(l-n)=1, значит конь с клетки (k,l) угрожает клетке (m,n)
Печать «Конь с клетки 2,3 может попасть на клетку 5,4»