0

Perl プログラミングは初めてです... 配列内の数値をソートするための簡単なスクリプトを作成しましたが、スクリプトが期待どおりに動作しません。これで私を助けてください。

#!/usr/bin/perl
print ("Enter the numbers...... Please enter a blank space at the end\n");
$input = <STDIN>;
chop ($input);
$a = 1;
until ( $input ==  "" )
{
   @array[$a-1] = $input ;
   $a++;
   $input = <STDIN>;
   chop ($input);
}
print ("@array\n");
$count = 1;
$y = 1;
while ( $count < @array ) 
{
   if ( $array[$y-1] > $array[$y] )
   {
      @array[$y-1,$y] = @array[$y,$y-1];
      $y++;
   }
   $count++;
}
print ("@array\n");

私は得る:

Enter the numbers...... Please enter a blank space at the end
2
4
3

2 4 3
2 4 3
4

2 に答える 2

0

http://codepad.org/LtVxt8zG

#!/usr/bin/perl
use strict;
use warnings;

$"=',';
my @input;
while(<DATA>)
{
   s/\s+$//;
   push @input, $_;
}
print "Original Input: @input\n";

@input = sort { $a <=> $b } @input;
print "Sorted Input: @input\n";

__END__
3
1
2
于 2013-02-16T05:35:34.103 に答える
0

perl デバッガーは、ソート アルゴリズムが機能しない理由を確認するのに非常に役立ちます。デバッガーでプログラムを開始し、次のように入力しました。

a 10 print "count -> $count ; y -> $y ; array -> @array\n"

出力は次のとおりです。

2 4 3
count -> 1 ; y -> 1 ; array -> 2 4 3
count -> 2 ; y -> 1 ; array -> 2 4 3
2 4 3

$y1 を超えることはありません。4 と 3 は決して比較されません。

于 2013-02-16T14:35:26.633 に答える