здравствуйте уважаемые. помогите найти среднее арифметическое нечетных одномерного массива.
BOT
3.12.2005 18:59
поправка, нечетных элементов массива
volvo
3.12.2005 19:01
s := 0; k := 0; for i := 1 to n do if a[i] mod 2 = 1 then begin s := s + a[i]; k := k + 1; end; if k <> 0 then s := s / k;
BOT
3.12.2005 19:30
извини, а что у тебя "k"?
размерность массива?
volvo
3.12.2005 19:33
Размерность массива = N К это число найденных нечетных чисел...
BOT
3.12.2005 19:46
почему то у меня на k выдает ошбику, когда делим s:=s/k пишет type mismatch все стоит integer.и масив и все переменные, что не так?
volvo
3.12.2005 19:47
При делении не будет Integer... S опиши как Real ...
Дож
3.12.2005 19:48
BOT Напиши: s:=round(s/k)
volvo
3.12.2005 19:52
Дож, ты уверен, что получить при <1, 3, 3> ответ 2 вместо 2.333... это то, что нужно?
Дож
3.12.2005 19:55
Цитата
ты уверен, что получить при <1, 3, 3> ответ 2 вместо 2.333... это то, что нужно?
В поставленной задаче ни слова о точности результата.
volvo
3.12.2005 19:57
Правда? А голова тебе зачем? ЦЕЛЫМ делать среднее арифметическое?
BOT
3.12.2005 20:02
Код
uses crt; var M: array [1..100] of integer; var a,b,k:integer; s:real; BEGIN randomize; clrscr; writeln('enter a'); readln(a); for b:=1 to a do begin M[b]:=random(11)-10; writeln(' Vivod Massiva ',M[b]); end; s:=0;k:=0; for b:=1 to a do begin if M[b] mod 2=1 then begin s:=s+M[b]; k:=k+1; end;
if k<>0 then begin s:=Round(s/k); end; end; writeln('S= ',S:5:1);
readkey; END.
почему S постоянно равна 0? даже когда нуля нет на нечетных позициях?
Дож
3.12.2005 20:05
Bot ЗАЧЕМ ты объявил переменную s как real а потом округляешь ее?
BOT
3.12.2005 20:07
убрал round, все равно s=0
volvo
3.12.2005 20:07
Потому что
if k <> 0 then s := s / k; { НЕ делать Round !!! }
и приведи свои данные, что ты вводишь?
Дож, убедился?
BOT
3.12.2005 20:10
ввожу любое число, например 5, заполняется массив числами, даж если нет нуля, все равно пишет что S=0
Дож
3.12.2005 20:11
Цитата(volvo @ 3.12.2005 20:07)
Дож, убедился?
Ага...
volvo
3.12.2005 20:11
У тебя генерируются отрицательные числа... С ними такое не проходит... Бери еще и по модулю:
if abs(M[b]) mod 2=1 then
BOT
3.12.2005 20:16
СПАСИБО! +)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.