![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| qw1mb0 |
|
|||
|
Непутевый студент ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 24.4.2010 Где: Севастополь Репутация: нет Всего: нет |
Добрый день уважаемые формучане
Есть задание: написать программу которая будет выполнять: Найти среднее арифметическое всех положительных чисел массива. Вывести на экран все числа массива, которые больше, чем это среднее арифметическое. Хоть убейте, но не могу додуматься как это реализовать.... Пока получилось, что то около такого бреда:
Подскажите пожалуйста другие способы решения данной задачи... |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
# perl -MList::Util=sum -le '$a = sum (@ARGV)/($#ARGV+1); print "Num: $a"; print join ", ", grep { $_ > $a } @ARGV' 1 2 3 4 5 6 7 8 9 10
Num: 5.5 6, 7, 8, 9, 10 # |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
arto, надо "Найти среднее арифметическое всех положительных чисел массива."
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
неужели мне надо сделать все домашнее задание для человека?
|
|||
|
||||
| dixoNICH |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
C:\Users\dixon>perl 2.pl 678910 а что вы хотели сказать 31-ой строкой кода? может быть если добавить return, то будет выглядеть адекватно. Это сообщение отредактировал(а) dixoNICH - 7.10.2011, 12:32 |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
dixoNICH, а зачем надо несколько раз рассчитывать $summ/$i?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| dixoNICH |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
почему несколько? 1 раз во 2-ом цикле ведь)
|
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
dixoNICH, а это выражение не на каждой итерации второго цикла вычисляется (в Вашем примере 18 раз)?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| dixoNICH |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
а да)
|
|||
|
||||
| qw1mb0 |
|
|||
|
Непутевый студент ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 24.4.2010 Где: Севастополь Репутация: нет Всего: нет |
Всем спасибо за участие.
Но мои познания в перле скудны, так что додумался пока только до такого:
Что вполне меня устраивает |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
qw1mb0, у меня два предложения по Вашему коду:
зачем в отдельном цикле считать сумму, если ее можно рассчитать сразу в первом цикле, где push? зачем в последнем цикле считать $sum/(scalar @a) на каждой итерации? -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| qw1mb0 |
|
|||
|
Непутевый студент ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 24.4.2010 Где: Севастополь Репутация: нет Всего: нет |
ginnie, Это да... Сначала у меня $sum/(scalar @a) высчитывалось отдельно, потом просто что бы уменьшить обьем кода загнал туда.
Так как студент и программа пишется для выполнения работы. А преподаватель совсем не знает Perl, то сильно можно не гнаться за производительностью программы.. Но а так, спасибо, учту ваши комментарии и внесу эти поправки, во время оптимизации кода. |
|||
|
||||
| MakTpaxep |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 25.11.2010 Репутация: нет Всего: нет |
Прикольно) А почему у меня не работает такая фигня:
Вроде из цикла выходит, а в тэг не заключает. Можно как ниже, но всё равно интересно...
Это сообщение отредактировал(а) MakTpaxep - 13.10.2011, 09:57 |
||||||
|
|||||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
возможно потому что next ничего не возвращает
|
|||
|
||||
| MakTpaxep |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 25.11.2010 Репутация: нет Всего: нет |
Пора...
Пора видимо мне начинать с дебагером разбираться |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |