Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [PERL]Сложить все числа, найденные в файле. из текстового файла сложить все числовые 
:(
    Опции темы
weblogger
Дата 22.12.2007, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.12.2007

Репутация: нет
Всего: нет



Добрый день! Необходима очень помощь в решении следующей задачи на перле: Имеется текстовый файл. Скрипт должен выбрать из него числа и вывести их сумму.
Аналогичная задача была найдена у Вас на форуме
http://forum.vingrad.ru/topic-184377.html
Все точно так же, 
Цитата

Т.е. например найдена строки чисел 123 и 432, надо:
1й случай, сложить 1+2+3+4+3+2
2й случай 123+432

Только необходимо также брать во внимание числа с отрицательным знаком, а так же дробные числа( 0.2, -3.53, и т.д.).
Спасибо огромное всем , кто поможет, в перле не силен, а задачку нужно решить...
Спасибо!

Это сообщение отредактировал(а) weblogger - 22.12.2007, 20:03
PM MAIL   Вверх
under_sun
Дата 22.12.2007, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 3.10.2007
Где: Ебург

Репутация: 7
Всего: 17



Если необходимо вытаскивать из файла действительные числа, то как расценивать такую ситуацию:
1.2.3 ? или такую 1.2.3.4 ?
--------------------
TMTOWTDI
PM MAIL ICQ   Вверх
weblogger
Дата 23.12.2007, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.12.2007

Репутация: нет
Всего: нет



Хм, да, действительно не подумал...
думаю тогда не стоит учитывать возможность действительных чисел, добавить только возможность одсчета с отрицательным знаком...
Спасибо, что откликнулись!
PM MAIL   Вверх
weblogger
Дата 25.12.2007, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.12.2007

Репутация: нет
Всего: нет



Помогите, пожалуйста, в среду нужно сдать задачку....
PM MAIL   Вверх
under_sun
Дата 25.12.2007, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 3.10.2007
Где: Ебург

Репутация: 7
Всего: 17



Как тут http://forum.vingrad.ru/topic-184377.html, только подправь второй случай:
Код

$sum2 += $_  for( /(-?\d+)/g ); #2й случай

--------------------
TMTOWTDI
PM MAIL ICQ   Вверх
weblogger
Дата 26.12.2007, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.12.2007

Репутация: нет
Всего: нет



Спасибо большое!
Первый случай
Код

 $sum1 += $_  for( /(\d)/g ); #1й случай

оказался не нужен.
Правда преподаватель попросил всетаки добавить возможность выбора действительных чисел, и сказал что нужно выбирать только "правильные" числа, например если находится число 10.10.20.30 то это неправильное число, и его учитывать в операциях не нужно. 10.12 - правильное число. То есть то, что в принципе не может быть числом учитывать не нужно, ip адресы всякие или просто набор цифр и точек без пробелов.
Так же попросил сделать, чтобы находила и числа в экспоненциальной форме, то есть например 2.3E4 или  2.3E-4 или 24e-13 или 63E12 (чтобы буква E и e определялись, не зависимо от регистра). Их так же необходимо складывать.
Если есть возможность, помогите, пожалуйста.
Спасибо!
PM MAIL   Вверх
weblogger
Дата 27.12.2007, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.12.2007

Репутация: нет
Всего: нет



Плиз, если есть возможность, помогите =(
PM MAIL   Вверх
under_sun
Дата 28.12.2007, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 3.10.2007
Где: Ебург

Репутация: 7
Всего: 17



Код

$_ = "12.34 eee 6 kkk 2.3E4  2.3E-4 ccc 24e-13 xxx 63E12";
for ( split ) {
  $sum += $_ if ( /([+-]?)(?=\d|\.\d)\d*(\.\d*)?(e([+-]?\d+))?/i );
}
print $sum;


C тебя пиво  smile 
--------------------
TMTOWTDI
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0420 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.