Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Алгоритмы _ помогите пожалуйста разобраться с алгоритмом

Автор: 1147 8.09.2008 19:55

Дан алгоритм программы, объясните пожалуйста по возможности подробней для чего предназначена эта программа (она находит площадь какой-то фигуры-это единственное что мне известно). Мне не понятно как она вычисляет площадь (по какому принципу), что это за значения a, b и Q (почему вначале такое условие что а>Q*Q???). Может это величины сторон фигуры? но какой?


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: мисс_граффити 8.09.2008 20:55

оригинальное условие: abs(Q)>0

Автор: andriano 8.09.2008 21:56

Цитата(мисс_граффити @ 8.09.2008 17:55) *

оригинальное условие: abs(Q)>0

На самом деле не такое уж оригинальное: эквивалентно Q<>0. Очевидно нужно, чтобы избежать деления на 0.

Автор: мисс_граффити 9.09.2008 1:28

Цитата
На самом деле не такое уж оригинальное: эквивалентно Q<>0

Я вообще про то же.
if StrToInt(BoolToStr(flag))=-1 then

тоже в глубине души эквивалентно
if flag then


...появилось подозрение, что это абстрактная блок-схема для какой-нить работы по дисциплине типа "технология разработки ПО"

Автор: 1147 9.09.2008 20:53

этот алгоритм нужно протестировать по методу "черного ящика". для этого нужно выделить правильные и неправильные классы эквивалентности (правильные, неправильные данные). я не могу этого сделать не поняв алгоритм. Поэтому я и прошу разъяснить мне, если кто понимает


Добавлено через 2 мин.
а дисциплина называется технология программирования

Автор: мисс_граффити 10.09.2008 6:42

Ну почти угадала.
Какая тебе разница, ЧТО программа считает? Думаю, что ничего конкретного (потому что при подсчете площади явное присваивание конкретного значения, не зависящего от параметров, выглядит странно).
Обычно для таких заданий дают алгоритмы, не предназначенные для решения конкретной задачи.
Мы в прошлом году подобное делали, формулировка задания была такой:

Цитата
1. Написать подлежащую тестированию программу, в соответствии с заданным алгоритмом. (Алгоритм составляется студентом самостоятельно и согласовывается с преподавателем. Алгоритм должен содержать не менее пяти условных вершин, причем одна из них должна быть со сложным условием “и” другая с условием ”или”, к примеру (“f<h & a=c”).
2. ...



Автор: 1147 10.09.2008 19:31

но как же мне тогда понять какие входные значения правильные, а какие нет?

Автор: мисс_граффити 11.09.2008 1:25

Я так понимаю, неправильные - это те, которые приводят в блок S -?

Автор: andriano 11.09.2008 11:08

Цитата(1147 @ 10.09.2008 16:31) *

но как же мне тогда понять какие входные значения правильные, а какие нет?

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

Автор: Lapp 19.09.2008 17:12

Н-дааа, задачка презабавненькая.. Тот, кто сочинял ее, откровенно развлекался smile.gif. Я извиняюсь за встревание в давно утихший спор, но у меня есть два соображения..

1. Если считать, что сведения о том, что алгоритм вычисляет площадь - это часть условия, то единственный разумный кандидат на это действие есть S=a*Q (a и Q - стороны прямоугольника, скажем, или сторона и высота). Остальные как-то не проходят на эту роль.. Если так, то "правильные" данные должны приводить в этот блок. Тогда "правильными" нужно считать нечто вроде:
(a <= Q*Q) and ((a<=b) or (Q=0))

2. Задача находится в неподобающем разделе.
М
Переношу в Алгоритмы