質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Q&A

1回答

188閲覧

Perlでサブルーチンを使ってプログラムを完成させたい

yamadakazuki

総合スコア12

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

0グッド

0クリップ

投稿2019/06/10 12:03

編集2019/06/10 12:04

前提・実現したいこと

サブルーチンを使って以下の3つのグループの平均得点を求めたいのですが
サブルーチンの定義文で手間取っています。
出来ればサブルーチン使用後のプログラムを提示して教えていただきたいです。
よろしくお願いします。
(「試したこと」に自分のプログラムを置いておきます)

<サブルーチンを使う前>
$ten1A = 93;
$ten2A = 65;
$ten3A = 73;
$tokutenA = $ten1A + $ten2A + $ten3A;
print("Aグループの得点は $tokutenA ¥n");

$ten1B = 99;
$ten2B = 89;
$ten3B = 45;
$tokutenB = $ten1B + $ten2B + $ten3B;
print("Bグループの得点は $tokutenB ¥n");

$ten1C = 74;
$ten2C = 81;
$ten3C = 68;
$tokutenC = $ten1C + $ten2C + $ten3C;
print("Cグループの得点は $tokutenC ¥n");

$heikin = ($tokutenA + $tokutenB + $tokutenC) / 3;
print("3つのグループの平均得点は $heikin ¥n");

発生している問題・エラーメッセージ

syntax code error

該当のソースコード

perl

試したこと

<自分のサブルーチン使用後のプログラム>
($tokuten1A, $tokuten2A, $tokuten3A) = &tenkansu(93, 65, 73);
($tokuten1B, $tokuten2B, $tokuten3B) = &tenkansu(99, 89, 45);
($tokuten1C, $tokuten2C, $tokuten3C) = &tenkansu(74, 81, 68);

sub tenkansu {
$group = $["A"];
$ten1 = $
[0];
$ten2 = $[1];
$ten3 = $
[2];
$tokuten = 0;
for($i = $ten1; $i <= $ten3; ++$i) {
$tokuten = $tokuten + $i;
}
print("$group[$i - 1] の得点は $tokuten \n");
$tokuten = return($ten1, $ten2, $ten3);
}
$heikin = ($tokutenA + $tokutenB + $tokutenC) / 3;
print("3つのグループの平均得点は $heikin \n");

補足情報(FW/ツールのバージョンなど)

Padre

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

雑ですが書いてみました。

# perl test.pl A グループの得点は 231 B グループの得点は 233 C グループの得点は 223 3 つのグループの平均点は 229
#!/usr/bin/perl sub tenkansu { my $total = 0; my $group = shift ; foreach (@_) { $total += $_ ; } printf "%s グループの得点は %d\n", $group, $total; return $total ; } my @tokuten ; my $gtotal = 0 ; push @tokuten, &tenkansu("A",93,65,73) ; push @tokuten, &tenkansu("B",99,89,45); push @tokuten, &tenkansu("C",74,81,68); foreach (@tokuten) { $gtotal += $_ ; } printf "%d つのグループの平均点は %d \n", $#tokuten + 1, $gtotal / ($#tokuten + 1);

投稿2019/06/10 12:24

scsi

総合スコア2840

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamadakazuki

2019/06/11 00:11

解答ありがとうございます! 無理なお願いかもしれませんが少しルールを加えさせて頂いてよろしいでしょうか ・サブルーチンの定義文の行数を9行にする。 ・サブルーチンの引数の変数名を$group、$ten1、$ten2、$ten3の4つにする。 ・メインルーチンの行数を5行にする。 ・メインルーチンで、サブルーチンを3回呼び出して、戻り値を格納する変数を それぞれ$tokutenA $tokutenB $tokutenCとする。 できればやってみて頂きたいです。
scsi

2019/06/11 06:06

自分でやろうよ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問