-3

7 文字のユーザー入力が回文であるかどうかを判断する Perl プログラムを作成しようとしています。

配列、文字列、または逆関数を使用しない。

望ましい出力:

    Enter in a 7 character item: 1111111
    PALINDROME!

または

    Enter in a 7 character item: 1234567
    NOT A PALINDROME!

これは私がこれまでに持っているものです:

print "Enter in a 7 character item: \n";
my ($a, $b, $c, $d, $e, $f, $g);
chomp ($a=<>); chomp ($b=<>); chomp ($c=<>); chomp ($d=<>);
chomp ($e=<>); chomp ($f=<>); chomp ($g=<>);
if ($a~~$g && $b~~$g && $c~~$e){
    print "PALINDROME!\n";
}
else{
    print "NOT A PALINDROME! \n";
}

残念ながら、これは私にこの結果を与えています:

    Enter in a 7 character item:
    1
    1
    1
    1
    1
    1
    1
    PALINDROME!

誰かに提案があれば、それは大歓迎です。

ご意見をお待ちしております。ありがとうございました!

4

4 に答える 4

5

それは私には正しいように見えます。結局のところ1111111、回文です!

ただし、スマート マッチ演算子はあまり便利なものではなく、ここで文字列が等しいかどうかをテストする必要があるため、eq代わりに. を使用し~~ます。

ユーザーが文字列全体を入力できるようにすることをお勧めします。

chomp(my $str = <>);

if ( $str eq reverse($str) ) {
     print "PALINDROME!\n";
}
else {
     print "NOT A PALINDROME! \n";
}
于 2013-04-01T22:29:54.970 に答える
1

変化

$b~~$g から $b~~$f も役立つかもしれません。

于 2013-04-01T22:36:19.497 に答える