Категория C1 • задача №1

 
 
 

Условие задачи

Дано:
окружность на плоскости задана координатами центра и радиусом. Даны две окружности. Требовалось определить, имеют ли они точку касания. Программист торопился и написал программу неправильно.

  1. var
  2.     x1, y1, r1, x2, y2, r2 : real;
  3. begin
  4.     clrscr;
  5.     writeln;
  6.     write('Введите координаты и радиус 1 - й окружности: ');
  7.     readln(x1, y1, r1);
  8.     write('Введите координаты и радиус 2 - й окружности: ');
  9.     readln(x2, y2, r2);
  10.     if (sqrt(sqr(x2 - x1) + sqr(y2 - y1)) = r1 + r2) or
  11.         (sqrt(sqr(x2 - x1) + sqr(y2 - y1)) = abs(r1 - r2)) then
  12.         write('Да')
  13.     else
  14.         write('Нет');

 

Найти:
последовательно  выполните  следующее:

  1. приведите пример таких исходных данных, при которых программа работает неправильно;

  2. укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы.

 

Решение

I этап: алгоритмическая часть.

Нужно детерминировать все случаи когда окружности имеют общую точку касания:

  1. окружности имеют внешнюю точку касания, то есть, когда ни одна из окружностей не находится внутри другой;

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

Программа не учитывает случая, когда одна окружность находится внутри другой и имеет внутреннюю точку касания. Например, рассмотрим две окружности с центрами и радиусами:

  • x1 = 2, y1 = 2, r1 = 2;

  • x2 = 2, y2 = 3, r2 = 1.

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

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

 

II этап: доработка исходной программы, используя язык программирования Turbo Pascal 7.0.

  1. program C1;
  2. uses
  3. {подключаем модуль crt – console run time. Данный модуль содержит специализированные подпрограммы для обработки текста, звука, клавиатурных событий}
  4.     crt;
  5. var
  6. {х1, y1 – координата абсциссы и ординаты первой окружности r1 – радиус первой окружности х2, y2 – координата абсциссы и ординаты второй окружности r2 – радиус второй окружности}
  7.     x1, y1, r1, x2, y2, r2 : real;
  8. begin
  9. {очистка дисплея монитора от прошлых выводов}
  10.     clrscr;
  11. {диалог о вводе характеристик первой окружности}
  12.     write('Введите координаты и радиус 1-й окружности: ');
  13. {считывание координат и радиуса 1-й окружности с клавиатуры}
  14.     readln(x1, y1, r1);
  15. {диалог о вводе характеристик второй окружности}
  16.     write('Введите координаты и радиус 2-й окружности: ');
  17. {считывание координат и радиуса 2-й окружности с клавиатуры}
  18.     readln(x2, y2, r2);
  19. {две окружности могут иметь общую точку касания в нескольких вариантах. Первый вариант: окружности имеют внешнюю точку касания. В данном случае, расстояние между их центрами должно быть ровно сумме их радиусов. Второй вариант: окружности имеют внутреннюю точку касания, то есть, когда одна из окружностей, полностью находится в области другой окружности. В этом случае, расстояние между их центрами должно быть равно модулю разности их радиусов.}
  20.     if (sqrt(sqr(x2 - x1) + sqr(y2 - y1)) = r1 + r2) or
  21.        (sqrt(sqr(x2 - x1) + sqr(y2 - y1)) = abs(r1 - r2)) then
  22.            write('Да')
  23.     else
  24.         write('Нет');
  25. {имитация задержки программы. Программа будет закрыта после нажатия произвольной клавиши на клавиатуре}
  26.     readkey;
  27. end.

 

Вывод:

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

Резюме

  1. произвели алгоритмизацию поставленной задачи;

  2. выяснили ситуации, когда программа не работала корректно;

  3. произвели доработку программного кода на языке программирования Turbo Pascal 7.0

 
 
Рейтинг:
 
Проголосовало: 0
Количество просмотров: 1398
 
 
 

Категория C1 • задача №1

 

Комментарии

Для комментирования или зарегистрируйтесь
 

Остальные решения из билета №1 для подготовки к ЕГЭ по информатике 2013

 
Условие задачи
(наведите курсор мыши на ссылку)
Аудиовизуальное
решение
Мультимедийная
видеопрезентация
Решение в формате
слайд-шоу
Текстовое
решение
Категория A1
/sites/default/files/slides/inf/1211/inf_A1_01_01_t4S.jpg
Перейти Перейти Перейти Перейти
Категория A2
/sites/default/files/slides/inf/804/inf_A2_01_01_knN.jpg
Перейти Перейти Перейти Перейти
Категория A3
/sites/default/files/slides/inf/805/inf_A3_01_01_53B.jpg
Перейти Перейти Перейти Перейти
Категория A4
/sites/default/files/slides/inf/806/inf_A4_01_01_HXr.jpg
Перейти Перейти Перейти Перейти
Категория A5
/sites/default/files/slides/inf/877/inf_A5_01_01_phpTD0463.jpg
Перейти Перейти Перейти Перейти
Категория A6
/sites/default/files/slides/inf/1225/inf_A6_01_01_CRr.jpg
Перейти Перейти Перейти Перейти
Категория A7
/sites/default/files/slides/inf/890/inf_A7_01_01_Ado.jpg
Перейти Перейти Перейти Перейти
Категория A8
/sites/default/files/slides/inf/898/inf_A8_01_01_JJV.jpg
Перейти Перейти Перейти Перейти
Категория A9
/sites/default/files/slides/inf/2159/inf_A9_01_01_phpUpivnW.jpg
Перейти Перейти Перейти Перейти
Категория A10
/sites/default/files/slides/inf/2170/inf_A10_01_01_phpl32P1w.jpg
Перейти Перейти Перейти Перейти
Категория A11
/sites/default/files/slides/inf/994/inf_A11_01_01_KyH.jpg
Перейти Перейти Перейти Перейти
Категория A12
/sites/default/files/slides/inf/1295/inf_A12_01_01_TJK.jpg
Перейти Перейти Перейти Перейти
Категория A13
/sites/default/files/slides/inf/1310/inf_A13_01_01_VsS.jpg
Перейти Перейти Перейти
Категория B1
/sites/default/files/slides/inf/899/inf_B1_01_01_php1fwK8N.jpg
Перейти Перейти Перейти Перейти
Категория B2
/sites/default/files/slides/inf/2193/inf_B2_01_01_phpUx4Mvg.jpg
Перейти Перейти Перейти Перейти
Категория B3
/sites/default/files/slides/inf/2202/inf_B3_01_01_phpUx4Mvg.jpg
Перейти Перейти Перейти Перейти
Категория B4
/sites/default/files/slides/inf/1364/inf_B4_01_01_iKq.jpg
Перейти Перейти Перейти Перейти
Категория B5
/sites/default/files/slides/inf/1341/inf_B3_01_01_i5V.jpg
Перейти Перейти Перейти Перейти
Категория B6
/sites/default/files/slides/inf/2213/inf_B6_01_01_phpEyxdxU.jpg
Перейти Перейти Перейти Перейти
Категория B7
/sites/default/files/slides/inf/2221/inf_B7_01_01_phpo5DDL8.jpg
Перейти Перейти Перейти Перейти
Категория B8
/sites/default/files/slides/inf/2228/inf_B8_01_01_phpLRZYf4.jpg
Перейти Перейти Перейти Перейти
Категория B9
/sites/default/files/slides/inf/2250/inf_B9_01_01_phpqjzRBb.jpg
Перейти Перейти Перейти Перейти
Категория B10
/sites/default/files/slides/inf/2271/inf_B10_01_01_phpBoQYXv.jpg
Перейти Перейти Перейти Перейти
Категория B11
/sites/default/files/slides/inf/2281/inf_B11_01_01_phpi8udor.jpg
Перейти Перейти Перейти Перейти
Категория B12
/sites/default/files/slides/inf/2290/inf_B12_01_01_phpE00GlF.jpg
Перейти Перейти Перейти Перейти
Категория B13
/sites/default/files/slides/inf/2310/inf_B13_01_01_phpwzFLNF.jpg
Перейти Перейти Перейти Перейти
Категория B14
/sites/default/files/slides/inf/2324/inf_B14_01_01_php64fzgb.jpg
Перейти Перейти Перейти Перейти
Категория B15
/sites/default/files/slides/inf/2330/inf_B15_01_01_phpKZvkiX.jpg
Перейти Перейти Перейти Перейти
Категория C2
/sites/default/files/slides/inf/902/inf_C2_01_01_DuJ.jpg
Перейти Перейти Перейти Перейти
Категория C3
/sites/default/files/slides/inf/903/inf_C3_01_01_P64.jpg
Перейти Перейти Перейти Перейти
Категория C4
/sites/default/files/slides/inf/904/inf_C4_01_01_kuu.jpg
Перейти Перейти Перейти Перейти
 
© 2011-2019 ООО "СтадиМен". Все права сохранены.
Перепечатка и использование материалов с данного сайта, разрешена только по согласию с владельцем.
Владелец оставляет за собой право воспользоваться 146 статьей УК РФ при нарушении авторских и смежных прав.
 
 
 
 
Авторизация на сайте
 
 
 
Обнаружили
ошибку на сайте?