PERL计数程序计数并将值替换为零作为选项

时间:2015-01-30 03:24:48

标签: arrays perl loops

我告诉这个程序循环三次,给输入添加x次,从零开始包括零。它的目的是每次询问时用零替换任何一个数字。 它应该从零开始并计算三个数字,而不是告诉它用零替换任何数字它应该如下所示:012 对于5个循环并替换第四个循环上的数字,它应该如下所示:01204 你应该能够用零替换数组01234567中的任何数字,当然除了第一个数字是0之外。

#!/usr/bin/perl
#failed experiment
my $savenewvalues;
my $loop = 0;
my @values = (0);
my $indexzero = @numbers[0];
print "how many times to loop\?\n";
my $count = <>;
while ($loop lt $count){

    ################### increment count
    $savenewvalues = $#values + 1; #position at end of array
    $values[$savenewvalues] = $#values + 1; #incremented number value placed at end of array
    ###################
    if ($count == 0){
        push (@values, $indexzero);
    }
    else{
        print "one to add next value zero to place zero in instead\n";
        my $advent = <>;
        if ($advent == 0){
            push (@values, $indexzero);
        }
        else {
            push (@values, $loop);
        }
    }
    $loop++;
}
print @values;
exit

这导致01031527作为@values的值 我试过的另一种方式是:

#!/usr/bin/perl
#failed experiment
my $savenewvalues;
my $count = 0;
my @values = (0);
my $indexzero = @numbers[0];
my $initial = $indexzero + 1;
print "how many times to loop\?\n";
my $loop = <>;
while ($loop gt 0){
    ################### increment count
    $savenewvalues = $#values + 1; #position at end of array
    $values[$savenewvalues] = $#values + 1; #incremented number value placed at end of array
    ###################
    if ($count == 0){
        push (@values, $initial);
    }
    else{
        print "one to add next value zero to place zero in instead\n";
        my $advent = <>;
        if ($advent == 0){
            push (@values, $indexzero);
        }
        else {
            push (@values, $count);
        }
    }
    $count++;
    $loop--;
}
print @values;
exit

这导致类似的东西:来自@values的<0113152

这些结果很奇怪,因为它们似乎有点连续,即如果你替换它可以数到6的几个值,但是我只想要那个程序的三个值,即012,它给了我七个。 / p>

我试着写一个完全混乱的程序,它在每个第二个位置给我零,即010305或重复数字01133 [除零]但我宁愿不讨论。

我想我已经越来越近了,但尝试解决这个问题并不是很有趣。

0 个答案:

没有答案