Помощь - Поиск - Пользователи - Календарь
Полная версия: нахождение нечетных номеров массива
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
BOT
здравствуйте уважаемые.
помогите найти среднее арифметическое нечетных одномерного массива.
BOT
поправка,
нечетных элементов массива
volvo
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
blink.gif извини, а что у тебя "k"?

размерность массива?
volvo
Размерность массива = N
К это число найденных нечетных чисел...
BOT
почему то у меня на k выдает ошбику, когда делим s:=s/k
пишет type mismatch
все стоит integer.и масив и все переменные, что не так? unsure.gif
volvo
При делении не будет Integer... S опиши как Real ...
Дож
BOT
Напиши: s:=round(s/k)
volvo
Дож,
ты уверен, что получить при <1, 3, 3> ответ 2 вместо 2.333... это то, что нужно?
Дож
Цитата
ты уверен, что получить при <1, 3, 3> ответ 2 вместо 2.333... это то, что нужно?

В поставленной задаче ни слова о точности результата.
volvo
Правда? А голова тебе зачем? ЦЕЛЫМ делать среднее арифметическое?
BOT
Код
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? даже когда нуля нет на нечетных позициях?
Дож
Bot
ЗАЧЕМ ты объявил переменную s как real а потом округляешь ее?
BOT
убрал round, все равно s=0
volvo
Потому что
if k <> 0 then
s := s / k; { НЕ делать Round !!! }


и приведи свои данные, что ты вводишь?

Дож, убедился?
BOT
ввожу любое число, например 5, заполняется массив числами, даж если нет нуля, все равно пишет что S=0
Дож
Цитата(volvo @ 3.12.2005 20:07)
Дож, убедился?

Ага... yes2.gif
volvo
У тебя генерируются отрицательные числа... С ними такое не проходит... Бери еще и по модулю:
if abs(M[b]) mod 2=1 then
BOT
СПАСИБО! +)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.