Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Perl: Listan käsittely

koodaaja [12.10.2020 00:06:15]

#

Ohjelmassa on käytetty erilaisia listan käsittelyfunktioita, kuten push (lisää loppuun),unshift (lisää alkuun), grep (etsii tietynlaiset arvot tai mjonot, voidaan käyttää säännöllisiä lausekkeita) ja map (tässä tapauksessa laskee neliön).

$valinta = 0;
@luvut = ();
$a = 0;
$b = 1;
$summa = 0;
print "1) Lisää loppuun\n";
print "2) Lisää alkuun\n";
print "3) Lisää lista loppuun \n";
print "4) Lisää lista alkuun \n";
print "5) Viimeinen luku\n";
print "6) Viimeinen numero pieni\n";
print "7) Viimeinen numero suuri \n";
print "8) Vain pieniä numeroita\n";
print "9) Vain isoja numeroita\n";
print "10) Neliöt\n";
do {
 #Suoritetaan valinnan mukainen toiminto.
 print "Valitse\n";

 chop($valinta = <STDIN>);
 print "\n";
 if ($valinta == 1){
  #Lisätään loppuun
  $summa=$a+$b;
  $a=$b;
  $b=$summa;
  push(@luvut,$summa);
  foreach (@luvut){
	print $_,"\n";
   }

 }
 elsif ($valinta == 2){
  #Lisätään alkuun.
   $summa=$a+$b;
  $a=$b;
  $b=$summa;
  unshift(@luvut,$summa);
  foreach (@luvut){
	print $_,"\n";
   }
 }
 elsif ($valinta == 3){
  #Lisätään luvut loppuun
 @luku = (0,1,2,3,4,5,6,7,8,9,10);
  push(@luvut,@luku);
   foreach (@luvut){
	print $_,"\n";
   }
 }
 elsif ($valinta == 4){
  #Lisätään luvut alkuun
 @luku = (0,1,2,3,4,5,6,7,8,9,10);
  unshift(@luvut,@luku);
   foreach (@luvut){
	print $_,"\n";
   }
 }
 elsif ($valinta == 5){
  #Viimeinen luku
 $viimeinen = pop(@luvut);
  print "$viimeinen \n";

 }
 elsif ($valinta == 6){
  #Etsitään lukuja, joissa viimeinen numero on pieni.
  @pienet = grep $_ % 10 < 5, @luvut;
  foreach (@pienet){
   print $_,"\n";
   }
  }
   elsif ($valinta == 7){
    #Etsitään lukuja, joissa viimeinen numero on suuri.
  @suuret = grep $_ % 10 >= 5, @luvut;
  foreach (@suuret){
   print $_,"\n";
   }
  }
   elsif ($valinta == 8){
    #Etsitään lukuja, jotka sisältävät vain pieniä lukuja.
  @pienet = grep(/^[0-4]*$/,@luvut);

      foreach (@pienet){
	print $_,"\n";
   }
  }
   elsif ($valinta == 9){
      #Etsitään lukuja, jotka sisältävät vain suuria lukuja.
  @suuret = grep(/^[5-9]*$/,@luvut);
      foreach (@suuret){
   print $_,"\n";
   }
  }
  elsif ($valinta ==10){
   #Lasketaan neliöt.
   @nelio = map{($_)*($_)} @luvut;
    foreach (@nelio){
   print $_,"\n";
   }
  }
} while ($valinta != 0);

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta