0
sub main{
my $mark;
my $grade;
my $calc;

@grade = ($mark>=0 and $mark<=39,$mark>=40 and $mark<=49,$mark>=50 and $mark<=59);
@calc(F+,D+,B+);

print "What is the student’s mark?"
chomp($mark = <STDIN>);

print "Your mark is 'mark' and grade is 'calc'"
}
main();

こんにちは、私は初心者です。私がやりたいのは、さまざまなマークのブロックを作成することです。たとえば、@mark(0-39,40-49,50-59) はそれぞれ @calc(F+,D+,B+) を指します。その後、$mark とマークに対応する成績を出力できます。ご協力ありがとうございました。

4

2 に答える 2

1

まず、常に使用しますuse strict; use warnings;

最良の文字から始めて、範囲の開始がマークよりも小さい最初の文字を見つけます。

my @letters      = qw( F+ D+ B+ );
my @letter_marks =   (  0,40,50);

sub get_letter {
   my ($mark) = @_;
   for my $i (reverse 0 .. $#letters_marks) {
       return $letters[$i] if $mark >= $letter_marks[$i];
   }
   die "Invalid input";
}
于 2013-04-28T05:30:44.747 に答える