Форум программистов, компьютерный форум, киберфорум
Perl
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для winda
11 / 0 / 0
Регистрация: 17.04.2010
Сообщений: 40

Создание двухмерного массива в perl

07.01.2015, 18:21. Показов 2057. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Скрипт при работе создаёт одномерный массив @fr. Он точно создаётся правильно! Далее нужно проводить расчёты и создавать двухмерные массивы. Одномерный массив создаётся в цикле по k. Я так понимаю, что в perl5можно делать двухмерные массивы и пишу следующий код:

Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
for($k=0;$k<=$m-1;$k++) 
...
for  $i (0 .. $#bins) {
if($k==0){@sum[$k][$i]=@fr[$i]*$m;
} else{
@sum[$k][$i]=@sum[$k-1][$i]+@fr[$i]*$m;
}
if ($k==0){
@mean[$k][$i]=@fr[$i]*$m;
@s[$k][$i]=0;
} else{
@mean[$k][$i]=@sum[$k][$i]/$k1};
$sgmn=0;
if ($k==0){
@s[$k][$i]=0;}
else{
for  $j (0 .. $#bins) {
$sgmn=$sgmn+(@fr[$j]*$m-@mean[$k][$j])*(@fr[$j]*$m-@mean[$k][$j])/$k1;}
@s[$k][$j]=sqrt($sgmn/$k);}
}
}
for($k=0;$k<=$m-1;$k++) {
@maxmean[$k]=0;
for  $i (0 .. $#bins) {
if (@mean[$k][$i]>@maxmean[$k]){
@maxmean[$k]=@mean[$k][$i]}
}
for  $i (0 .. $#bins) {
@deltafr[$k][$i]=(@maxmean[$k]-@mean[$k][$i])/@s[$k][$i];
}
}
 
print @mean;
print @s;
print @deltafr;
Но компилятор ругается на квадратные скобки и ничего не создаёт. Если заменить @ на $ (но тогда это уже переменные, а не массивы), на квадратные скобки он не ругается, но пишет, что переменные не проинициализированы и ничего не создаёт. Что я делаю не так и как сделать правильно, чтоб с созданными объектами можно было обращаться именно как с двухмерными массивами? Заранее спасибо). До этого места всё работало правильно!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.01.2015, 18:21
Ответы с готовыми решениями:

создание вложенных структур в perl
Здравствуйте! Задача вот такая: необходимо реализовать структуру следующего вида: , , , ] Следующий код почему-то не...

Задачки на понимание Perl (Скользкие места Perl)
Задача на понимание списочных литералов что выведет каждая из строк $num = ('один', 'два', 'три'); say $num; $i=0; $n=(++$i,...

Графика в Perl, как создать GIF в Perl.
Помогите создать GIF при помощи перла. И где взять модули?

3
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
07.01.2015, 18:24
winda, посмотрите похожую тему,может поможет:
Инициализация многомерного массива Perl
0
 Аватар для winda
11 / 0 / 0
Регистрация: 17.04.2010
Сообщений: 40
07.01.2015, 19:59  [ТС]
Похоже она не поможет...
Я не знаю, отображается ли код у других пользователей, у меня вместо него пустое место, вставлю на всякий случай ещё раз

Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
for($k=0;$k<=$m-1;$k++) 
    {
....
for  $i (0 .. $#bins) {
if($k==0){@sum[$k][$i]=@fr[$i]*$m;
} else{
@sum[$k][$i]=@sum[$k-1][$i]+@fr[$i]*$m;
}
if ($k==0){
@mean[$k][$i]=@fr[$i]*$m;
@s[$k][$i]=0;
} else{
@mean[$k][$i]=@sum[$k][$i]/$k1};
$sgmn=0;
if ($k==0){
@s[$k][$i]=0;}
else{
for  $j (0 .. $#bins) {
$sgmn=$sgmn+(@fr[$j]*$m-@mean[$k][$j])*(@fr[$j]*$m-@mean[$k][$j])/$k1;}
@s[$k][$j]=sqrt($sgmn/$k);}
}
}
for($k=0;$k<=$m-1;$k++) {
@maxmean[$k]=0;
for  $i (0 .. $#bins) {
if (@mean[$k][$i]>@maxmean[$k]){
@maxmean[$k]=@mean[$k][$i]}
}
for  $i (0 .. $#bins) {
@deltafr[$k][$i]=(@maxmean[$k]-@mean[$k][$i])/@s[$k][$i];
}
}
 
print @mean;
print @s;
print @deltafr;
Добавлено через 1 час 10 минут
Там ошибка в пределах цикла, но её исправление не помогло:
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
for($k=0;$k<=$m-1;$k++) {
...
$c=0;
foreach  $f (@fr) {
if($k==0){@sum[$k][$c]=$f*$m;
} else{
@sum[$k][$c]=@sum[$k-1][$c]+$f*$m;
}
if ($k==0){
@mean[$k][$c]=$f*$m;
@s[$k][$c]=0;
} else{
@mean[$k][$c]=@sum[$k][$c]/$k1};
$sgmn=0;
if ($k==0){
@s[$k][$c]=0;}
else{
$d=0;
foreach  $r (@fr) {
$sgmn=$sgmn+($r*$m-@mean[$k][$d])*($r*$m-@mean[$k][$d])/$k1;
$d=$d+1}
@s[$k][$c]=sqrt($sgmn/$k);}
$c=$c+1;
}
}
for($k=0;$k<=$m-1;$k++) {
@maxmean[$k]=0;
for  $i=0;$i<=$fr-1;$i++) {
if (@mean[$k][$i]>@maxmean[$k]){
@maxmean[$k]=@mean[$k][$i]}
}
for  $i=0;$i<=$fr-1;$i++) {
@deltafr[$k][$i]=(@maxmean[$k]-@mean[$k][$i])/@s[$k][$i];
}
 
print @mean;
print @s;
print @deltafr;
0
 Аватар для volodin661
6806 / 2305 / 349
Регистрация: 10.12.2013
Сообщений: 7,932
08.01.2015, 09:08
Bash
1
2
3
4
5
6
perl -MData::Printer -E"
push @{$AoA[0]}, $_  for keys   %ENV;
push @{$AoA[1]} ,$_  for values %ENV;
p @AoA;
p $AoA[0][0];
p $AoA[1][0]"
Кликните здесь для просмотра всего текста

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
[
    [0] [
        [0]  "USERPROFILE",
        [1]  "HOMEDRIVE",
        [2]  "TEMP",
        [3]  "SYSTEMDRIVE",
        [4]  "PROCESSOR_REVISION",
        [5]  "SYSTEMROOT",
        [6]  "CLIENTNAME",
        [7]  "COMMONPROGRAMFILES",
        [8]  "COMSPEC",
        [9]  "SESSIONNAME",
        [10] "LOGONSERVER",
        [11] "APPDATA",
        [12] "WINDIR",
        [13] "PROGRAMFILES",
        [14] "OS",
        [15] "PROCESSOR_LEVEL",
        [16] "PATHEXT",
        [17] "USERNAME",
        [18] "PROMPT",
        [19] "NUMBER_OF_PROCESSORS",
        [20] "FP_NO_HOST_CHECK",
        [21] "HOMEPATH",
        [22] "PATH",
        [23] "PROCESSOR_IDENTIFIER",
        [24] "USERDOMAIN",
        [25] "COMPUTERNAME",
        [26] "ALLUSERSPROFILE",
        [27] "PROCESSOR_ARCHITECTURE",
        [28] "TMP"
    ],
    [1] [
        [0]  "C:\Documents and Settings\sten",
        [1]  "c:",
        [2]  "C:\DOCUME~1\sten\LOCALS~1\Temp",
        [3]  "C:",
        [4]  4501,
        [5]  "C:\WINDOWS",
        [6]  "Console",
        [7]  "C:\Program Files\Common Files",
        [8]  "C:\WINDOWS\system32\cmd.exe",
        [9]  "Console",
        [10] "\\WINXP32RU",
        [11] "C:\Documents and Settings\sten\Application Data
        [12] "C:\WINDOWS",
        [13] "C:\Program Files",
        [14] "Windows_NT",
        [15] 6,
        [16] ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WS
        [17] "sten",
        [18] "$P$G",
        [19] 1,
        [20] "NO",
        [21] "\Documents and Settings\sten\work",
        [22] "C:\Dwimperl\perl\bin;C:\Dwimperl\perl\site\bin;
System32\Wbem;c:\rakudo\bin;C:\Program Files\Git\cmd",
        [23] "x86 Family 6 Model 69 Stepping 1, GenuineIntel"
        [24] "WINXP32RU",
        [25] "WINXP32RU",
        [26] "C:\Documents and Settings\All Users",
        [27] "x86",
        [28] "C:\DOCUME~1\sten\LOCALS~1\Temp"
    ]
]
"USERPROFILE"
"C:\Documents and Settings\sten"


Добавлено через 3 часа 43 минуты
Пожалуй, так выглядит понятней, но полный синтаксический аналог тому, что выше:

Perl
1
2
3
4
5
my @AoA = ();
$AoA[0] = [ keys%ENV ];
$AoA[1] = [ values%ENV ];
 
# выражение $AoA[0][0] фактически означает $AoA[0]->[0]
Добавлено через 7 часов 18 минут
наткнулся на старый пост,
как раз самое то
Матрицы, Решение СЛАУ методом Гаусса; PDL, Math::MatrixReal
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.01.2015, 09:08
Помогаю со студенческими работами здесь

Инициализация многомерного массива Perl
Добрый день! Помогите с инициализацией многомерного массива perl: (пример взят отсюда:...

Как обстоят дела с Perl 6 и Perl 5
Сразу скажу не являюсь Perl-программистом(ибо Python), но решил поинтерисоваться языком, и вот узнал что у него можно сказать две крайне не...

Запустить perl-скрипт из perl-скрипта
Доброго времени суток! Есть главный скрипт и ещё один. Последний нужно запустить из главного, передать в него параметры и результаты...

Переводчик кода Си в Perl(Convert C to perl)
Нужна такая вещь, а в идеале код такой программы.

Авторизация на Perl (сессии на perl)
Привет. Учусь значит, сказали сделать небольшой сайт на perl, нужно сделать так, чтобы страницы были запаролены. Я такое уже делал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru