![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
fleyta |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 6.8.2008 Репутация: нет Всего: нет |
Выручайте! Второй вечер сижу и борюсь с, на первый взгляд, простенькой проблемой - надо найти минимальный ненулевой элемент в массиве, значения которого берутся из файла (см. аттач - find_min.csv). Код скрипта:
Однако в результате $minv=0. В чем же ошибка? ![]() Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
|||
|
||||
Jimy |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: нет Всего: 3 |
1.
У Вас в файле первое значение - ноль. 2.
Что за хитрая операция? |
||||
|
|||||
fleyta |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 6.8.2008 Репутация: нет Всего: нет |
да, ноль. дальше в цикле хочу найти отличное от нуля минимальное значение и по идее переопределяю переменную $minv в файле цифры через запятую написаны в результате чего возникало предупреждение "11,11 не является числом". чтобы от него избавиться пришлось заменить все запятые на точки Добавлено @ 22:56 а, стоп, насчет 0.. точно! ведь выполнения условия - $_<$minv - никогда нет, поэтому и 0 на выходе. эээээх... Это сообщение отредактировал(а) fleyta - 4.11.2010, 23:14 |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
У вас неправильная замена не = а =~
ну и можно
Это сообщение отредактировал(а) shamber - 4.11.2010, 23:13 |
|||
|
||||
fleyta |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 6.8.2008 Репутация: нет Всего: нет |
Jimy, shamber огромное спасибо!!!
вот верный код:
|
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
fleyta, наверно лучше не так.....
зачем указывать заведомо больший вариант, когда можно использовать данные?
Это сообщение отредактировал(а) shamber - 4.11.2010, 23:35 |
|||
|
||||
fleyta |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 6.8.2008 Репутация: нет Всего: нет |
shamber, действительно, до этого не додумалась. спасибо еще раз!
|
|||
|
||||
xido |
|
||||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 19.10.2010 Репутация: нет Всего: нет |
Мм.. мне кажется что в формате csv данные делятся запятыми, так что замена запятых на точки очень сомнительна ;). Откройте файл в Excel и убедитесь сами. Здесь каждая строка - это строка двумерного массива, а запятые разделяют столбцы. В свете этого (массив двухмерный) возможно стоит уточнить задание. Попробуйте что-то вроде (писал на коленке, могут быть ошибки)
[/code] Это сообщение отредактировал(а) xido - 5.11.2010, 15:33 |
||||
|
|||||
Jimy |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: нет Всего: 3 |
Вам показалось.
Глупости. На строках равных "0" нет запятых. А следуя Вашей логике, там должно было быть "0,0" или "0," или просто разделитель ",". Не вводите человека в заблуждение. |
||||
|
|||||
xido |
|
||||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 19.10.2010 Репутация: нет Всего: нет |
Не говорите ерунды.
http://ru.wikipedia.org/wiki/CSV
Ничего такого не следует, откройте файл в excel, если в строке стотит 0 , то это значит что значение есть только в 1 столбце. Это сообщение отредактировал(а) xido - 5.11.2010, 19:15 |
||||
|
|||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
xido, разделением может быть что угодно. Не вериться? посмотрите параметры импорта в Excel.
Эксель как правило точку в числах некорректно воспринимает, преобразует к числу и месяцу. Это сообщение отредактировал(а) shamber - 5.11.2010, 20:45 |
|||
|
||||
xido |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 19.10.2010 Репутация: нет Всего: нет |
И что дальше? ;) Может быть что угодно в екселе, а в формате CSV - запятая и точка с запятой. Автор топика ясно указал что формат данных - CSV а не столбик чисел. Так почему бы не предположить что запятая - разделитель, тем более в околокомпьютерном мире в роли десятичной запятой ставится используется точка (от англичан пошло). Я просто указал на _ВОЗМОЖНУЮ_ неверную трактовку формата данных. Не отрицаю - это может быть и десятичная запятая, но в реальном мире (т.е за пределами домашних заданий) это будет именно разделитель. //Уймитесь, великие знатоки CSV, пусть автор выскажется Добавлено через 3 минуты и 2 секунды Кароче, с чего вы взяли что в случае топик стартера все именно так, а не иначе-то? ;)) |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
||||
|
||||
xido |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 19.10.2010 Репутация: нет Всего: нет |
||||
|
||||
fleyta |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 6.8.2008 Репутация: нет Всего: нет |
оу, сколько дебатов пропустила...
развею сомнения - если бы xido скачал бы мой файлик csv, то он увидел бы, что в данном конкретном случае разделителем является точка с запятой (уж какие данные дают), так что топикстартер в этом случае не ошибается ;) насчет замены запятых на точки - с данными впоследствии проводятся некоторые арифметические операции, а perl -w имеет привычку сыпать в консоль все предупреждения, в результате чего хоть все и считается правильно (если не производить замену), но тем не менее куча ворнингов напрягает. поэтому и была произведена данная замена, чтобы переменная сразу воспринималась как число. Добавлено через 11 минут и 8 секунд упс, xido, пардон. запамятовала, что я тут все повырезала и оставила только 1 столбец в csv, но поверьте - разделителями в исходном файле были именно ; |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |