Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример выполнения заданий на Pascale.doc
Скачиваний:
17
Добавлен:
15.02.2015
Размер:
421.89 Кб
Скачать

Задача 27б

Задание :

Даны действительные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (рис. ) и вычислить

Математическое обоснование:

Область находится между линиями x*x+y*y=1 и y=x/2, причем внутри круга, образованного первой линией и под второй линией. Точки внутри круга задаются неравенством: y*y<=1-x*x, а точки под линией неравенством y<=x/2, таким образом, необходимо проверить одновременное выполнение обоих неравенств и в зависимости от этого вычислить u.

Алгоритм:

  1. Вводим значения x, y

  2. Проверяем введенные значения на выполнение условия (y*y<=1-x*x) и (y<=x/2)

  3. Вычисляем значение u в зависимости от результата пункта 2

  4. Выводим на экран 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.

Протокол:

  1. В процессе диалога вводим x=1, y=2

  2. Значения координат не принадлежат точке, входящей в область Д: y>x/2 (2>0,5)

  3. U=y*y=2*2=4

  4. Печать результата на экран : «Результат : u= 4.0000»

Тема 3. Простейшая целочисленная арифметика

Задача 12

Задание :

Дано натуральное число n (n <100), определяющее возраст человека (в годах). Дать для этого числа наименования "год", "года" или "лет": например, 1 год, 23 года, 45 лет и т. д.

Обоснование:

Как известно, для написания возраста человека орфографически правильно необходимо учитывать последнюю цифру числа лет: для чисел 0, от 5 до 9 пишется «лет»; для числа 1 пишется «год»; для чисел от 2 до 4 пишем «года». Эти правила справедливы для всех чисел, кроме тех, что больше 10 и меньше 20, для них мы не зависимо от последней цифры пишем «лет».

Алгоритм:

  1. Вводим число лет n (n<100)

  2. Если n>20, то k равно остатку от деления n на 10, иначе k:=n

  3. В зависимости от того, какому интервалу принадлежит k определяем правильное написание возраста

  4. Выводим на печать сообщение о возрасте человека.

Блок-схема:

Реализация:

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.

Протокол:

  1. В процессе диалога вводим n=43

  2. Т.к. n>20, то k=n mod 10=3

  3. Т.к. k=3, то k принадлежит интервалу [2..4], т.е. s= «года»

  4. Печать : «Поздравляем вам 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.

Алгоритм:

  1. Вводим значения k,l,m,n

  2. Проверяем, соответствуют ли заданные координаты стандартному размеру доски 8х8 (да – продолжаем, нет - выходим)

  3. Проверяем, угрожает ли конь на поле (k, l) полю (m, n)

  4. Печатаем результат

Блок-схема:

Реализация:

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.

Протокол:

  1. В процессе диалога вводим k=2,l=3,m=5,n=4

  2. k<8, l<8, m<8, n<8, заданные числа соответствуют размеру доски, идем дальше

  3. abs(k-m)=2, abs(l-n)=1, значит конь с клетки (k,l) угрожает клетке (m,n)

  4. Печать «Конь с клетки 2,3 может попасть на клетку 5,4»