Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> use of uninitialized value ... подскажите что не так 
:(
    Опции темы
Paul56
Дата 21.4.2010, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброго времени суток всем.

Ругается перл вот на этот кусок кода 
Код

my @arrayID = qw/1 2 3 3 4/;
my @arrayCOUNT = qw/1 1 1 2 2/; 

my $i=0;
my @newArrayID;
my @newArrayCOUNT;
foreach my $line (@arrayID) {
    if (! grep(/$line/, @newArrayID)) {
            push @newArrayID, $line;
     }
        for (my $r=0; $r < scalar(@newArrayID); $r++) {

            $newArrayCOUNT[$r] = $newArrayCOUNT[$r] + $arrayCOUNT[$i] if $arrayID[$i] == $newArrayID[$r];


        }
        $i++;
}
print @newArrayCOUNT;

программа ругается вот на эту переменную $newArrayCOUNT[$r] когда я её пытаюсь сложить с  $arrayCOUNT[$i]
подскажите выход из ситуации ?
мне необходимо выполнить следующую операцию над двумя массивами.

@arrayID в нём оставить только не повторяющиеся цифры.
@arrayCOUNT в этом массиве сложить цифры повторяющихся элементов в @arrayID


Это сообщение отредактировал(а) Paul56 - 21.4.2010, 09:33
PM ICQ   Вверх
amg
Дата 21.4.2010, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

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



Цитата(Paul56 @  21.4.2010,  09:32 Найти цитируемый пост)
@arrayID в нём оставить только не повторяющиеся цифры.

Код
my @arrayID = qw/1 2 3 3 4/;

my %hash;
my @newArrayID = grep {! $hash{$_}++} @arrayID;
print "@newArrayID\n";


Цитата(Paul56 @  21.4.2010,  09:32 Найти цитируемый пост)
@arrayCOUNT в этом массиве сложить цифры повторяющихся элементов в @arrayID
Не понял :(

PM MAIL   Вверх
mvsgt
Дата 21.4.2010, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



то что Вы используете неинициализированные переменные. А что тут непонятно? $newArrayCOUNT[$r] undefined, как и говорит перл. В чём вопрос?
PM MAIL   Вверх
Paul56
Дата 22.4.2010, 06:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



на выходе должен получить следующее:
@newArrayID = (1 2 3 4);
@arrayCOUNT = (1 1 3 2);

Добавлено через 1 минуту и 40 секунд
я в принципе добился того чего хотел, но вопрос мой заключается, в том верное ли это решение...
Может Вы мне подскажите как более эффективнее и правильнее это написать ?
PM ICQ   Вверх
ming
Дата 24.4.2010, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



$newArrayCOUNT[$r] = $newArrayCOUNT[$r] + ...
здесь у вас $newArrayCOUNT[$r] еще не создана, а вы уже пытаетесь её использовать в сложении.

Цитата(Paul56 @  22.4.2010,  10:06 Найти цитируемый пост)
я в принципе добился того чего хотел, но вопрос мой заключается, в том верное ли это решение...Может Вы мне подскажите как более эффективнее и правильнее это написать ?

Как говорится "Работает? Не трогай!"  smile 
Но раз уж на то пошло, то я бы слегка переделал:

Код

my @arrayID = qw/1 2 3 3 4/;
my @arrayCOUNT = qw/1 1 1 2 2/; 

my (@newArrayID, @newArrayCOUNT, %uniq);

for my $id (@arrayID) {
    next if $uniq{$id}++ > 0;
            
    push @newArrayID, $id;
    
    my $sum = 0;
    for (my $i=0; $i < @arrayCOUNT; $i++) {
        $sum += $arrayCOUNT[$i] if $arrayID[$i] == $id;
    }
    
    push @newArrayCOUNT, $sum;
}

print join(", ", @newArrayID), "\n";
print join(", ", @newArrayCOUNT), "\n";


PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


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

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


 




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


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

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