28.02.2014, 00:07 | #1 (permalink) |
Member
Регистрация: 29.11.2013
Сообщений: 50
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Интересная задача, Паскаль
Разработать алгоритм и внешнюю функцию обработки одномерных массивов, используя единственный цикл. Разработать головной модуль для отладки составленной внешней функции. Все параметры индивидуальных задач передавать в функцию через список ее формальных параметров из головного модуля. При заданных A1,A2,...,An; B1,B2,...,Bn и C1,C2,...,Cn для каждой из n троек вида (Ai,Bi,Ci) проверить, может ли быть построен треугольник со сторонами Ai,Bi,Ci, при этом подсчитать число треугольников и сумму их периметров. Заранее спасибо) |
28.02.2014, 00:07 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Обратите внимание на этот пост, в нем схожие по содержанию с вашей темы Паскаль. Задача Задача Паскаль |
28.02.2014, 11:07 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
А, ничего интересного - так, глупая учебная задачка.
Код:
Const n=16; Var A,B,C:Array[1..n] of Real; P,Sum_P:Real; i,Nt:byte; Function Per(Q1,Q2,Q3:Real):Real; var b:Boolean; begin b:=(Q1>=0) and (Q2>=0) and (Q3>=0) and (Q1<=Q2+Q3) and (Q2<=Q1+Q3) and (Q3<=Q1+Q2); if b then Per:=Q1+Q2+Q3 else Per:=-1; end; Begin Nt:=0; Sum_P:=0; Randomize; For i:=1 to n do begin A[i]:=Random*10-1.0; write(A[i]:8:2); B[i]:=Random*10-1.0; write(B[i]:8:2); C[i]:=Random*10-1.0; write(C[i]:8:2); P:=Per(A[i],B[i],C[i]); if P<0 then writeln(' No...') else begin Inc(Nt); Sum_P:=Sum_P+P; writeln(' Yes! P= ',P:5:2); end; end; writeln; writeln(Nt,' triangulars'); writeln('Sum of their perimeters is ',Sum_P:0:2); Readln End. |
03.03.2014, 02:48 | #3 (permalink) |
Member
Регистрация: 29.11.2013
Сообщений: 50
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Большое спасибо)
Понял как делать)
Переделал без Rindomize и с некоторыми добавлениями. Может кому пригодится... PHP код:
PHP код:
|
03.03.2014, 08:33 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну, насчет "ошибки" - я попросил бы... Да, включены также вырожденные треугольники с одной нулевой стороной и двумя другими равными между собой, а также с суммой двух сторон, равной третьей. Площадь таких треугольников нулевая, а вот периметр вполне определенный. Включать или не включать такие треугольники в рассмотрение - дело Ваше, но, повторяю, никакой "ошибки" здесь нет.
Кроме того, ввод данных в Вашей программе не совсем соответствует условию. Ваша программа решает задачу типа "ввести тройку чисел и проверить, могут ли они быть сторонами треугольника, и если да, то...". В задаче же даны массивы, т.е. следовало бы вначале ввести их (все три), а уж потом делать из них выборки по тройкам. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|