Народ, помогите плиз, из полного бреда сделать рабочую прогу
В массивах R1..R8, T1..T6 найти среднее арифметическое положительных и среднее арифметическое отрицательных элементов (среди обоих массивов). Заменить последние элементы в массивах на максимальное среднее арифметическое.
ты б эти отступы сделал, заметил что begin-а не хватает...
compiler
29.06.2007 20:35
Цитата(Kaliban @ 26.06.2007 13:57)
...из полного бреда сделать рабочую прогу
вобщем я(с помощью volvo) тут накидал...
program exam;//а можно узнать, где такие экзамены? type m=array [0..10] of real ;//подставишь сваи размеры... var R,T:m; sr1,sr2: real;
function Positive(const r:real):boolean;//проверяет является ли число положительным begin if r>=0 then Positive:=true else Positive:=false; //0 --положительное число end;
function More(const A,B:real):real; //возвращает большее из двух чисел begin if A>B then More:=A else More:=B; end;
procedure SrArP( const ar:array of real; var sr:real); // можна организовать функцию... var i:integer; sum:real; begin sum:=0; for i:=Low(ar) to High(ar) do if Positive(ar[i]) then sum:=sum+ar[i]; sr:=sum/(High(ar) - Low(ar)+1)(*(i+1)*);//High(ar) - Low(ar), можна заменить на (i+1 end;
procedure SrArN(const ar:m; var sr : real); var //... begin //напишешь по аналогии... end;
function Positive(const r:real):boolean;//проверяет является ли число положительным begin Positive:=(r>=0); end;
compiler
29.06.2007 21:38
опять... в соседней теме такая-же ошибка...
спасибо что поправляете.
klem4
30.06.2007 15:28
Positive:=(r>=0);
C каких пор 0 - положительное число ?
volvo
30.06.2007 15:46
Это, вообще говоря, не единственная ошибка:
for i:=Low(ar) to High(ar) do if Positive(ar[i]) then sum:=sum+ar[i]; sr:=sum/(High(ar) - Low(ar)+1); // <--- Вот тут меня интересует ...
... с каких пор, чтобы найти среднее арифметическое всех положительных, надо найти сумму только положительных, и разделить ее на общее число элементов?
(про использование того, что в комментариях - я вообще молчу: по окончании цикла For в его управляющей переменной может быть что угодно, Борланд крайне НЕ рекомендует после такого цикла обращаться к его счетчику)
compiler
30.06.2007 21:48
Цитата(volvo @ 30.06.2007 11:46)
... с каких пор, чтобы найти среднее арифметическое всех положительных, надо найти сумму только положительных, и разделить ее на общее число элементов?
тогда пишем
a:integer; ... a:=0; //можна и типизированной константой, но я их не люблю :) ...for i:=Low(ar) to High(ar) do if Positive(ar[i]) then begin sum:=sum+ar[i]; inc(a)end; sr:=sum/a;
Цитата(volvo @ 30.06.2007 11:46)
(про использование того, что в комментариях - я вообще молчу: по окончании цикла For в его управляющей переменной может быть что угодно, Борланд крайне НЕ рекомендует после такого цикла обращаться к его счетчику)
поэтому оно и в комментариях :) , имхо, так легче разбиратся в программе. а потом лично у меня оптимизатор ничего такого не творил не разу...
насчет нуля -- >= , меняем на >
теперь из моего бреда делают рабочую прогу :)
volvo
30.06.2007 22:08
Цитата
тогда пишем
...
, передаем массив, в котором НЕТ положительных элементов, и наслаждаемся видом ошибки Divizion By Zero ... Ну, такие вещи надо ловить все-таки, или как? Вот тут как раз лишнее условие не помешает.
compiler
30.06.2007 22:20
Цитата(volvo @ 30.06.2007 18:08)
Вот тут как раз лишнее условие не помешает.
а ну да... а вообще надоела эта ошибка надо бы переопределить операцию деления
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.