Jacky: Zahlenschleife

Hallo!

Ich bin absoluter Newbie, was Perl anbelangt. Kann mir jemand von Euch weiterhelfen?

Bei der Ausgabe der "FOR"-Schleife soll die Eingabe des vorherigen Ergebnisses immer um 1 erhöht und quadriert werden. Leider geht das nur für den ersten Wert. Was ist falsch?

Hier das Skript:
##################################################################
#!/usr/bin/perl - w

$eingabe = 0;

print "\nBitte geben Sie eine Zahl zwischen 0 und 10 ein :\n";
chomp ($eingabe = <STDIN>);

if (($eingabe >= 0) && ($eingabe <= 10))
  {
  # Quadratur der Eingabe
  print "\nQuadratur der Eingabe :\n";
  $ergebnis = $eingabe ** 2;
  printf "\nErgebnis = %.2f.\n", $ergebnis;

# 5 x Ausgabe um 1 erhoehen und quadrieren
  print "\nAusgabe um 1 erh\x94ht und quadriert :\n";
  for ($loop = 1; $loop <= 5; ++ $loop)
     {
     $ergebnisx = ($ergebnis + 1) ** 2;
     printf "\nErgebnis neu $loop = %.2f.\n", $ergebnisx;
     }
  }
else
  {
  print "Dies ist keine g\x81ltige Eingabe.\n";
  }
print "Ende des Skript\n";

Gruss Jacky

  1. Servus,

    Das Problem liegt daran, dass Du jedes mal den gleichen Wert quadrierst.

    Ich bin absoluter Newbie, was Perl anbelangt. Kann mir jemand von Euch weiterhelfen?

    Bei der Ausgabe der "FOR"-Schleife soll die Eingabe des vorherigen Ergebnisses immer um 1 erhöht und quadriert werden. Leider geht das nur für den ersten Wert. Was ist falsch?

    Hier das Skript:
    ##################################################################
    #!/usr/bin/perl - w

    $eingabe = 0;

    print "\nBitte geben Sie eine Zahl zwischen 0 und 10 ein :\n";
    chomp ($eingabe = <STDIN>);

    if (($eingabe >= 0) && ($eingabe <= 10))
      {
      # Quadratur der Eingabe
      print "\nQuadratur der Eingabe :\n";
      $ergebnis = $eingabe ** 2;
      printf "\nErgebnis = %.2f.\n", $ergebnis;

    # 5 x Ausgabe um 1 erhoehen und quadrieren
      print "\nAusgabe um 1 erh\x94ht und quadriert :\n";
      for ($loop = 1; $loop <= 5; ++ $loop)
         {
         $ergebnisx = ($ergebnis + 1) ** 2;
         printf "\nErgebnis neu $loop = %.2f.\n", $ergebnisx;

    Hier liegt das Problem nimm einfach das x aus $ergebnisx weg und das überall und es klappt.

    }
      }
    else
      {
      print "Dies ist keine g\x81ltige Eingabe.\n";
      }
    print "Ende des Skript\n";

    Gruss Jacky

    Grus Matze

  2. Hallo,

    Bei der Ausgabe der "FOR"-Schleife soll die Eingabe des vorherigen Ergebnisses immer um 1 erhöht und quadriert werden. Leider geht das nur für den ersten Wert. Was ist falsch?

    Das hat dir MatzeA ja schon gesagt. Aber wenn du schon dabei bist dein Programm zu überarbeiten, dann hör doch auf in deiner Ausgabe zu plenken. Wenn man das in Postings macht ist es ja schon schlimm genug (nicht, dass du es gemacht hättest), aber in der Ausgabe eines Programmes? Ihh.

    #!/usr/bin/perl - w

    $eingabe = 0;

    Und gewöhne dir am besten gleich die Verwendung von use strict; an, das erspart dir später vielleicht Probleme.

    Viele Grüße,

    Stefan

    --
    Lass dir das Tanzen NICHT verbieten
    http://tanzverbot.de