» Программирование>Помогите дописать последнюю строчку в легкой программе на Паскале
Grendex 16:22 21.03.2007
Помогите дописать последнюю строчку - программа вообще детская, а вот что-то зациклило меня - сумму посчитал, а вот среднее арифметическое посчитать не могу.
Вот условие задачи:
"Ввести с клавиатуры произвольную последовательность целых чисел (количество вводимых чмсел должно задаваться в ходе диалога с программой), используя для ввода цикл с предусловием (while do). Отыскать среди введённых чисел нечётные и вычислить их среднее арифметическое. Полученное значение вывести на экран".
Вот текст программы (???????? - это и есть средннее арифметическое, которое я никак не могу найти)
Program Proba_sred_arifmed;
Var
x:array [1..100] of integer;
i,n,s:integer;
begin
writeln('Ввеедите размер массива*');
readln(n);
s:=0;
i:=1;
while (i<=n) do
begin
write('x(',i,')= ');
readln (x[i]);
i:=i+1;
end;
begin
for i:=1 to n do
begin
if x[i] mod 2 =0 then
s:=s+x[i];
{????????}
end;
end;
writeln('s= ',s );
end.
P.S Не надо писать, что я ламер - я это и так знаю, просто помогите советом. Заранее всем спасибо.
Grendex 16:29 21.03.2007
Страно вроде код программы писал со всеми отступами, а получился единным текстом, так что извените, за неудобства
MHC 16:35 21.03.2007
я немного изменил программу. там, где я что-нибудь изменил - оставлены комментарии
Program Proba_sred_arifmed;
Var
x:array [1..100] of integer;
i,n:integer; (*убрал отсюда s*)
s : real; (*здесь у нас будет не целочисленное число*)
m : integer; (*m будет количеством нечетных * )
begin
writeln('Ввеедите размер массива*');
readln(n);
s:=0;
i:=1;
while (i<=n) do
begin
write('x(',i,')= ');
readln (x[i]);
i:=i+1;
end;
m := 0; (*обнулить счетчик*)
begin
for i:=1 to n do
begin
if x[i] mod 2 <> 0 then (*нам нужны НЕЧЕТНЫЕ, по-этому я заменил "=" на "<>"*)
begin
s:=s+x[i];
m := m + 1 (*увеличиваем счетчик нечетных элементов*)
end;
{????????}
end;
s := s/m; (*теперь s хранит не общую сумму, а среднее арифметическое значение*)
end;
writeln('s= ',s );
end.
Yandex 18:38 21.03.2007
Grendex,
> Помогите дописать последнюю строчку - программа вообще детская, а вот что-то зациклило меня - сумму посчитал, а вот среднее арифметическое посчитать не могу
Гонево. Не сам писал.
Mylana 19:07 21.03.2007
Сообщение от MHC:
Program Proba_sred_arifmed;
Var
x:array [1..100] of integer;
i,n:integer; (*убрал отсюда s*)
s : real; (*здесь у нас будет не целочисленное число*)
m : integer; (*m будет количеством нечетных * )
begin
........................
end;
s := s/m; (*теперь s хранит не общую сумму, а среднее арифметическое значение*)
end;
writeln('s= ',s );
end.
if m=0 then writeln('net nechetnih chisel')
else begin s := s/m; (*теперь s хранит не общую сумму, а среднее арифметическое значение*); writeln('s= ',s );
end;
readln;
end.
так красивше)) ИМХО
Grendex 22:10 21.03.2007
МНС - огромное спасибо. Как говорится "а ларчик просто открывался". Блин ещё ошибки нашёл, которые я по глупости наделал: "if x[i] mod 2 <> 0 then (*нам нужны НЕЧЕТНЫЕ, по-этому я заменил "=" на "<>"*)". Короче огромное человеческое спасибо, очень помог. Mylana тоже спасибо за доведение программы до ума.
Yandex
В это трудно поверить, но писал сам от начала до конца.