Версия для печати темы
Форум «Всё о Паскале» _ Задачи _ Среднее арифметическое N чисел
Автор: Лена 2.03.2005 18:08
Огромное спасибо тому человеку, который сделал мне прошлую программу!
Но сейчас нам задали еще одну и к завтрашнему дню: нужно найти среднее арифметическое n чисел. Причем n может быть любым. Сначала нужно спросить, сколько чисел надо.
Помогите, плиз.
Автор: hiv 2.03.2005 19:10
Поиском надо пользоваться!
http://forum.pascal.net.ru/index.php?showtopic=3880&hl=%F1%F0%E5%E4%ED%E5%E5+%E0%F0%E8%F4%EC%E5%F2%E8%F7%E5%F1%EA%EE%E5
Автор: Лена 2.03.2005 20:24
Я это читала, но чем можно заменить array и extended? Мы это не проходили.
Можно ли написать программу по-другому?
Автор: volvo 2.03.2005 20:28
Лена, 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 2.03.2005 20:30
Массив можно вообще убрать
в связи с тем, что Вольво подправил свой пост, этот уже не нужен
Автор: Лена 2.03.2005 22:31
Огромное всем Вам спасибо, кто мне помог, особенно Volvo.
Автор: Len 16.03.2005 15:49
Это снова я и с этой же программой. Ситуация уже критическая. Завтра нам выставят двойки
за несданные программы. А у меня их две.
Среднее арифметическое вы написали абсолютно правильно. Но информатичке
не нравится sum:=0.0 и sum:=sum+x. Она говорит, что это не надо.
Ей нужна какая-то формула, вероятно вместо (sum/n).
Если убрать sum:=0.0 и sum:=sum+x, то программа начинает каждый раз выводить другое число, когда я спрашиваю, продолжить выполнение или нет.
Подскажите, пожалуйста, какая нужна формула?
Автор: volvo 16.03.2005 16:27
Цитата(Len @ 16.03.05 10:49)
информатичке
не нравится sum:=0.0 и sum:=sum+x. Она говорит, что это не надо.
Ей нужна какая-то формула, вероятно вместо (sum/n).
объясните Вашей информатичке, что если не сделать "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 16.03.2005 19:24
Вообще-то в старые советские времена нас учили оптимизации с самого начала. А сечас в школы выбирают учителей информатики из каких-то дворников. Самое простое - операция деления выполняется медленнее операции сложения на порядок (в 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 16.03.2005 19:27
Нет, не так...
Ей нужна формула, a sum:=sum+x и sum:=0.0 мне приказали убрать...
ПОМОГИТЕ, ПЛИЗ! :molitva:
Автор: volvo 16.03.2005 19:33
Цитата(Len @ 16.03.05 14:27)
Ей нужна формула
В таком случае тут одно из 2-х: либо Вы неправильно даете задание (возможно, оно звучало не совсем так, как записано в первом посте), либо - Ваша информатичка просто хочет Вас что называется "завалить". (Есть еще третья опция, но я не буду вдаваться в подробности...)
hivЦитата
Нам в свое время за такие ошибки двойки ставили!
:zdorov:
Автор: Len 16.03.2005 19:39
вроде это задание. у нас в классе один человек сделал такую программку и 5 получил, но увы, он очень жадный..
Ну как-нибудь можно нули убрать и чтобы все работало?
Автор: hiv 16.03.2005 19:46
Увы больше ничем помочь не получится... Проще волшебную палочку найти или понять, чего женщины хотят...
Берите сделанную прогу и талкайте ее училке, и пусть проверяет верность ответа, ведь задача решена верно! Если будет отпираться - пожалуйся на нее директрисе, чего это она от вас требует от вас того, чего сама не объясняла и выполненное задание с правильными ответами не принемает. Ей влетит по первое число, особенно если заставить директрису посчитать среднее арифметическое 10 чисел и показать, что программа выдала такой же результат как у директрисы!
Автор: Len 16.03.2005 19:49
Легко так писать...
Автор: volvo 16.03.2005 19:50
По-моему тема опять уходит в offtop. Давайте все-таки не отклоняться...
Автор: hiv 16.03.2005 19:51
Нули убрать можно так:
Код
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 4.12.2021 11:05
Keflex Side Effects