配列の配列について教えてください。
以下のようなテキストから値を取得し、A,B,Cの値をそれぞれ別の配列に格納し、A,B,Cの平均値を出す処理を行っているとします。
-----
A=100
B=200
C=300
A=110
B=210
:
-----
現状、以下のような状態です。
@arrayA=();
@arrayB=();
@arrayC=();
:
(テキストを読み込み)
:
・読み込んだ行がA=XXXならarrayAにpush
push(@arrayA,"100");
・読み込んだっ行がB=XXXならarrayBにpush
push(@arrayB,"100");
:
(各配列の要素の平均値を出す)
このやり方だと、グループが増えるとそのまま行数が増えて冗長なので、グループごとの配列を1つの配列にまとめたいのです。
Webで初期値を入れた形で説明しているのはよくみるのですが、今回のように空の配列に値をいれていくにはどうすればよいのでしょうか?(そもそも宣言の仕方もわかりません)。
また、配列の配列?とした場合、以下のような処理はできるのでしょうか?
(1)配列の1つ目の要素(の配列)にpushする(現状でのarrayAにpushに該当)
push(@arrayAll[0],"test");
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>このやり方だと、グループが増えるとそのまま行数が増えて冗長なので、グループごとの配列を1つの配列にまとめたいのです。
これは配列の配列を使うのではなく,
無名配列を値にもつ
連想配列と楽かな.
>また、配列の配列?とした場合、以下のような処理はできるのでしょうか?
できません.
Perlでの多次元配列の扱いを調べましょう.
#端的にいってしまえば,一次元配列で各要素が無名配列か
#配列へのリファレンスになってればそれは多次元配列・・
サンプルコード:
use strict;
use warnings;
my %all;
sub ave{
my $array=shift;
my $ave=0 ;
foreach my $i (@$array){
$ave = $ave + $i;
}
return $ave/(scalar @$array);
}
while(<DATA>){
chomp;
my ($key, $val)=split(/=/,$_);
if (defined $all{$key}){
push(@{$all{$key}}, $val);
}else{
$all{$key}=[$val];
}
}
print "Average of A is ", ave($all{"A"}), ".\n";
print "Average of B is ", ave($all{"B"}), ".\n";
print "Average of C is ", ave($all{"C"}), ".\n";
__DATA__
A=100
B=200
C=300
A=110
B=210
No.1
- 回答日時:
(無名) 配列を要素に持つハッシュを使う.
my %values = ();
while (my $line = <>) {
chomp($line);
my ($group, $val) = ($line =~ /^(\w)=(\d)/);
push @{$values{$group}}, $val;
}
みたいな感じ.
「空の配列」は配列なので, 末尾にデータを追加したければ push すればいい.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Microsoft ASP プログラミング関係で質問です。 3 2022/10/11 16:06
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
二次元配列のインデックスについて
-
二次元配列における要素数のは...
-
Strawberry Perl for Windows ...
-
可変長配列を、動的確保した固...
-
リストボックスに縦スクロール...
-
2次元配列or複数回のファイル読...
-
Excel VBA ユーザーフォームの...
-
perlで配列の要素が空なのを知...
-
perlで2次元配列をサブルーチ...
-
perl qw(aaa bbb ccc)[$hoge]...
-
文字列の分割について
-
画面を強制的に再描画させる方法
-
VBAで3秒だけ時間を止めたい
-
DoEventsが必要な理由について
-
GIFアニメをループさせたくない
-
vba
-
アクティブセルから、A列最終行...
-
データベースから取得したデー...
-
VBA Dir関数でファイルをループ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二次元配列のインデックスについて
-
VBAのautofilter、criteriaの配...
-
Excel VBA ユーザーフォームの...
-
二次元配列における要素数のは...
-
マクロ Publicでの配列定義
-
Strawberry Perl for Windows ...
-
リストボックスに縦スクロール...
-
クラスに配列を渡す方法
-
Dim flag(4) as boolean で配列...
-
エクセルVBAでTransposeの不思議
-
perlで2次元配列をサブルーチ...
-
perlで配列の要素が空なのを知...
-
perl 配列の要素数について
-
組み合わせについての質問です...
-
隣同士の数字を足し合わせる
-
複数の配列の全ての組み合わせ...
-
perl 初等プログラミングについて
-
jcode->jfold で禁則処理
-
一致する要素が格納されている...
-
チェックボックスのperlでの値...
おすすめ情報