Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
posobie.doc
Скачиваний:
27
Добавлен:
31.03.2015
Размер:
1.43 Mб
Скачать

2. Входные данные

цел n– число точек; простая переменная; 0<n<=100; формат XXX (:3);

вещ r– критическое удаление; простая переменная; 0<r<=10; точность 0,1; формат XX.X (:4:1);

вещ x– абсциссы точек; одномерный массив;x[i]<=10; точность 0,1; формат +ХХ.Х (:5:1);

вещ y– ординаты точек; одномерный массив;y[i]<=10; точность 0,1; формат +ХХ.Х (:5:1).

3. Выходные данные

вещ p- искомый процент точек; простая переменная; 0<p<=100; точность0,1; форматXXX.Х(:5:1);

вещ sa- среднее удаление точек от начала координат; простая переменная; 0<sa<=sqrt(10*10+10*10)<=10*sqrt(2)<20; точность 0,1; форматXX.X(:4:1).

Замечание. Одно из требований задачи - найти точки с положительными координатами вне окружности. Как оценивать ситуацию отсутствия таких точек среди заданных?

Если в задаче речь идет о поиске объекта согласно некоторому условию, будем считать, что отсутствие искомого – возможный вариант решения задачи, и предусматривать его. Как именно – зависит от конкретной задачи.

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

Это частный, далеко не всегда возможный вариант диагностики результата поиска, но для начала мы им воспользуемся в силу его простоты. Далее (см. § 2.3, «Альтернативные ситуации») будет предложен универсальный прием.

4. Аномалиипока не рассматриваем

5. Функциональные тесты

Входные данные

Результат

Смысл теста

1

n=5; r=3.0

x

2

2

4

-1

-5

y

-2

1

3

-2

-5

p=20 (обр9)

sa=3.9 (обр10)

Искомые точки есть;

данные взяты из примера

2

n=5; r=3.0

x

2

2

2

-1

-2

y

-2

1

2

-2

-1

p=0 (обр9)

sa=2.5 (обр10)

Искомых точек нет;

тест построен на основе теста 1

6. Метод

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

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

Схема решения задачи будет выглядеть следующим образом.

Здесь ввод-вывод (подзадачи А0.1 и А0.3) тривиален и представляет собой чисто техническую задачу. Его можно сразу описать в алгоритме, а затем закодировать, что мы и сделаем.

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

Для ввода-вывода массивов потребуется промежуточная переменная - индекс элемента.

Пусть i- текущий индекс элемента массива.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]