Помощь - Поиск - Пользователи - Календарь
Полная версия: Среднее арифметическое N чисел
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Лена
Огромное спасибо тому человеку, который сделал мне прошлую программу!
Но сейчас нам задали еще одну и к завтрашнему дню: нужно найти среднее арифметическое n чисел. Причем n может быть любым. Сначала нужно спросить, сколько чисел надо.
Помогите, плиз.
hiv
Поиском надо пользоваться!
Подобная задача
Лена
Я это читала, но чем можно заменить array и extended? Мы это не проходили.
Можно ли написать программу по-другому?
volvo
Лена, Extended можно заменить на Real, а вот Array к сожалению заменить ни на что не получится :no: Массив должен быть описан...

Хотя зачем?
Код

var i, n: integer;
 sum, x: real;
begin
 write('n = '); readln(n);
 sum := 0.0;
 for i := 1 to n do
   begin
     write(i, '-е число = '); readln(x);
     sum := sum + x
   end;
 writeln('среднее арифметическое = ', (sum/n):8:5)
end.
Altair
Массив можно вообще убрать

в связи с тем, что Вольво подправил свой пост, этот уже не нужен smile.gif
Лена
Огромное всем Вам спасибо, кто мне помог, особенно Volvo.
Len
Это снова я и с этой же программой. Ситуация уже критическая. Завтра нам выставят двойки
за несданные программы. А у меня их две.
Среднее арифметическое вы написали абсолютно правильно. Но информатичке
не нравится sum:=0.0 и sum:=sum+x. Она говорит, что это не надо.
Ей нужна какая-то формула, вероятно вместо (sum/n).
Если убрать sum:=0.0 и sum:=sum+x, то программа начинает каждый раз выводить другое число, когда я спрашиваю, продолжить выполнение или нет.
Подскажите, пожалуйста, какая нужна формула?
volvo
Цитата(Len @ 16.03.05 10:49)
информатичке
не нравится sum:=0.0 и sum:=sum+x. Она говорит, что это не надо.
Ей нужна какая-то формула, вероятно вместо (sum/n).

blink.gif объясните Вашей информатичке, что если не сделать "sum := 0.0", то программа может начать подсчет суммы не с 0 (как положено), а с какого-то постороннего значения, т.к. компилятор Паскаля автоматически обнуляет переменные только тогда, когда программа запускается из среды Паскаля; если же она запускается из ОС, то в переменной sum может оказаться (и окажется) совершенно посторонее значение. Так что обнуление переменных - обязательно.

Что касается второй части вопроса, то возможно она хочет, чтобы это делалось так:
Код
 for i := 1 to n do
  begin
    write(i, '-е число = '); readln(x);
    sum := sum + x/n
  end;
writeln('среднее арифметическое = ', sum:8:5)

Если не так, то я просто не знаю, чего она от вас требует. Ну не придумали способа вычисления среднего арифметического без ввода и суммирования всех значений в цикле...

Кстати, если она все-таки соизволит рассказать, что это за способ, обязательно напишите о нем сюда... Очень хочется знать, как это - не вводя числа (или не суммируя их) - подсчитать их среднее арифметическое.
hiv
Вообще-то в старые советские времена нас учили оптимизации с самого начала. А сечас в школы выбирают учителей информатики из каких-то дворников. Самое простое - операция деления выполняется медленнее операции сложения на порядок (в 4-10 раз).
И учить школьников писать код:
Код
for i := 1 to n do
 begin
   write(i, '-е число = '); readln(x);
   sum := sum + x/n
 end;
writeln('среднее арифметическое = ', sum:8:5)

вместо:
Код
for i := 1 to n do
 begin
   write(i, '-е число = '); readln(x);
   sum := sum + x;
 end;
 sum:=sum/n;
writeln('среднее арифметическое = ', sum:8:5)

это просто издевательство!
В первом коде производится n суммирований и n делений, а во втором примере (как по началу писал Volvo) n суммирований и всего-то ОДНО деление. Нам в свое время за такие ошибки двойки ставили!

ЗЫ: Я конечно понимаю, что там ручной ввод данных, а если из файла? Учить надо сразу правильному кодингу. Да, мощности компов выросли немеренно, но и объемы обрабатываемых данных растут не отставая!
Len
Нет, не так...
Ей нужна формула, a sum:=sum+x и sum:=0.0 мне приказали убрать...
ПОМОГИТЕ, ПЛИЗ! :molitva:
volvo
Цитата(Len @ 16.03.05 14:27)
Ей нужна формула

В таком случае тут одно из 2-х: либо Вы неправильно даете задание (возможно, оно звучало не совсем так, как записано в первом посте), либо - Ваша информатичка просто хочет Вас что называется "завалить". (Есть еще третья опция, но я не буду вдаваться в подробности...)

hiv
Цитата
Нам в свое время за такие ошибки двойки ставили!

:zdorov:
Len
вроде это задание. у нас в классе один человек сделал такую программку и 5 получил, но увы, он очень жадный..
Ну как-нибудь можно нули убрать и чтобы все работало?
hiv
Увы больше ничем помочь не получится... Проще волшебную палочку найти или понять, чего женщины хотят...
Берите сделанную прогу и талкайте ее училке, и пусть проверяет верность ответа, ведь задача решена верно! Если будет отпираться - пожалуйся на нее директрисе, чего это она от вас требует от вас того, чего сама не объясняла и выполненное задание с правильными ответами не принемает. Ей влетит по первое число, особенно если заставить директрису посчитать среднее арифметическое 10 чисел и показать, что программа выдала такой же результат как у директрисы! smile.gif
Len
Легко так писать...
volvo
По-моему тема опять уходит в offtop. Давайте все-таки не отклоняться...
hiv
Нули убрать можно так:

Код
if n>0 then
begin
 write('1-е число = '); readln(sum);
 for i := 2 to n do
 begin
   write(i, '-е число = '); readln(x);
   sum := sum + x;
 end;
 sum:=sum/n;
 writeln('среднее арифметическое = ', sum:8:5)
end
else writeln('Данные отсутствуют! Среднее арифметическое посчитать не возможно!');
hydroxychloroquine purchase onli
Keflex Side Effects
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.