IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Среднее арифметическое N чисел, при помощи счетного оператора цикла FOR
Лена
сообщение 2.03.2005 14:08
Сообщение #1


Гость






Огромное спасибо тому человеку, который сделал мне прошлую программу!
Но сейчас нам задали еще одну и к завтрашнему дню: нужно найти среднее арифметическое n чисел. Причем n может быть любым. Сначала нужно спросить, сколько чисел надо.
Помогите, плиз.
 К началу страницы 
+ Ответить 
hiv
сообщение 2.03.2005 15:10
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Поиском надо пользоваться!
Подобная задача


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Лена
сообщение 2.03.2005 16:24
Сообщение #3


Гость






Я это читала, но чем можно заменить array и extended? Мы это не проходили.
Можно ли написать программу по-другому?
 К началу страницы 
+ Ответить 
volvo
сообщение 2.03.2005 16:28
Сообщение #4


Гость






Лена, 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 16:30
Сообщение #5


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Массив можно вообще убрать

в связи с тем, что Вольво подправил свой пост, этот уже не нужен smile.gif

Сообщение отредактировано: Oleg_Z - 2.03.2005 17:00


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Лена
сообщение 2.03.2005 18:31
Сообщение #6


Гость






Огромное всем Вам спасибо, кто мне помог, особенно Volvo.
 К началу страницы 
+ Ответить 
Len
сообщение 16.03.2005 11:49
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Женский

Репутация: -  0  +


Это снова я и с этой же программой. Ситуация уже критическая. Завтра нам выставят двойки
за несданные программы. А у меня их две.
Среднее арифметическое вы написали абсолютно правильно. Но информатичке
не нравится sum:=0.0 и sum:=sum+x. Она говорит, что это не надо.
Ей нужна какая-то формула, вероятно вместо (sum/n).
Если убрать sum:=0.0 и sum:=sum+x, то программа начинает каждый раз выводить другое число, когда я спрашиваю, продолжить выполнение или нет.
Подскажите, пожалуйста, какая нужна формула?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 16.03.2005 12:27
Сообщение #8


Гость






Цитата(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
сообщение 16.03.2005 15:24
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Вообще-то в старые советские времена нас учили оптимизации с самого начала. А сечас в школы выбирают учителей информатики из каких-то дворников. Самое простое - операция деления выполняется медленнее операции сложения на порядок (в 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 суммирований и всего-то ОДНО деление. Нам в свое время за такие ошибки двойки ставили!

ЗЫ: Я конечно понимаю, что там ручной ввод данных, а если из файла? Учить надо сразу правильному кодингу. Да, мощности компов выросли немеренно, но и объемы обрабатываемых данных растут не отставая!

Сообщение отредактировано: hiv - 16.03.2005 15:25


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Len
сообщение 16.03.2005 15:27
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Женский

Репутация: -  0  +


Нет, не так...
Ей нужна формула, a sum:=sum+x и sum:=0.0 мне приказали убрать...
ПОМОГИТЕ, ПЛИЗ! :molitva:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 16.03.2005 15:33
Сообщение #11


Гость






Цитата(Len @ 16.03.05 14:27)
Ей нужна формула

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

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

:zdorov:
 К началу страницы 
+ Ответить 
Len
сообщение 16.03.2005 15:39
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Женский

Репутация: -  0  +


вроде это задание. у нас в классе один человек сделал такую программку и 5 получил, но увы, он очень жадный..
Ну как-нибудь можно нули убрать и чтобы все работало?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 16.03.2005 15:46
Сообщение #13


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Увы больше ничем помочь не получится... Проще волшебную палочку найти или понять, чего женщины хотят...
Берите сделанную прогу и талкайте ее училке, и пусть проверяет верность ответа, ведь задача решена верно! Если будет отпираться - пожалуйся на нее директрисе, чего это она от вас требует от вас того, чего сама не объясняла и выполненное задание с правильными ответами не принемает. Ей влетит по первое число, особенно если заставить директрису посчитать среднее арифметическое 10 чисел и показать, что программа выдала такой же результат как у директрисы! smile.gif


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Len
сообщение 16.03.2005 15:49
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Женский

Репутация: -  0  +


Легко так писать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 16.03.2005 15:50
Сообщение #15


Гость






По-моему тема опять уходит в offtop. Давайте все-таки не отклоняться...
 К началу страницы 
+ Ответить 
hiv
сообщение 16.03.2005 15:51
Сообщение #16


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Нули убрать можно так:

Код
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('Данные отсутствуют! Среднее арифметическое посчитать не возможно!');


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:48
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"