Problem mit Repeat-Schleife

Tutorials.at
Verfügbare Informationen zu "Problem mit Repeat-Schleife"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: orluk - wirthi
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: Pascal
  • Antworten: 4
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: Problem mit Repeat-Schleife
  • Letzte Antwort: vor 16 Jahren, 8 Monaten, 8 Tagen, 7 Minuten
  • Alle Beiträge und Antworten zu "Problem mit Repeat-Schleife"

    Re: Problem mit Repeat-Schleife

    orluk - 11.08.2007, 17:34

    Problem mit Repeat-Schleife
    Hi, ich hab ein Problem mit einer Repeat-Schleife. Es geht um ein Rechnerprogramm. Zuerst wird ausgewählt ob man addieren, subtrahieren, dividieren oder multiplizieren möchte, dann werden 2 Zahlen eingelesen.
    Die Repeat Schleife funktioniert mit 2 Zahlen, wenn der Benutzer 1 eingibt, soll das Programm neustarten, wenn er 2 eingibt wird die Schleife abgebrochen und das Programm geschlossen.

    Problem Nr1: Nach der Bestätigung der Schleife für einen neuen Duchgang, wird die erste Abfrage (Operator) übersprungen und es werden gleich die Zahlen abgerufen.

    Problem Nr2: Der Benutzer muss zwar 2 neue Zahlen eingeben, aber die Variablen werden nicht mit den neuen Zahlen überschrieben.

    Ich benutze übrigens Free Pascal.


    Code:
    program rechner;
    uses crt;

    var operation: String;
        zahl1, zahl2, ergebnis: Extended;
        ausgang: 1..2;
    BEGIN
    REPEAT
    BEGIN
    ClrScr;
    writeLn ('Rechenprogramm');
    WriteLn ('(a)ddieren');
    WriteLn ('(s)ubtrahieren');
    WriteLn ('(m)ultiplizieren');
    WriteLn ('(d)ividieren');
    ReadLn (operation);
    write ('1.Zahl ');
    ReadLn (zahl1);
    write ('2.Zahl ');
    ReadLn (Zahl2);
    END;
    BEGIN
    if operation = 'a' THEN ergebnis := zahl1+zahl2;
    IF operation = 's' THEN ergebnis := zahl1-zahl2;
    IF operation = 'm' THEN ergebnis := zahl1*zahl2;
    IF operation = 'd' THEN ergebnis := zahl1/zahl2;
    END;
    writeLn ('Ergebnis: ',ergebnis:1:6);
    writeLn;
    WriteLn ('1: Neue Zahlen');
    WriteLn ('2: Programm verlassen');
    Read (ausgang);
    IF ausgang = 2 THEN Exit;
    UNTIL ausgang = 2;
    ReadKey;
    END.





    Danke für die Hilfe



    Re: Problem mit Repeat-Schleife

    wirthi - 12.08.2007, 23:41


    Du musst statt
    Code: Read(ausgang); folgendes verwenden: Code: Readln(ausgang);

    Zumindest bei mir sind dann beide Probleme behoben.

    Die If-Abfrage samt Exit-Anweisung brauchst du eigentlich garnicht, weil du ja ohnehin die Schleife verlässt, wenn der Benutzer 2 eingibt.



    Re: Problem mit Repeat-Schleife

    orluk - 19.08.2007, 13:28


    Wenn ich es so eingebe (siehe unten), sollte sich das Programm dann eigentlich nicht auch wiederholen? Weil es ja in prozeduren gespeichert ist, die am Ende wieder aufgerufen werden, sollte das Programm dann doch wieder von vorne gestartet werden. Oder nicht?

    Code:
    program rechner;        { šbungsprogramm 1: Rechenprogramm
                              by C. Weiá, www.webplain.de }
    uses crt;

    var operation            : char; { Variablendeklarationen }
        zahl1,zahl2,ergebnis : real;

    procedure titel;        {---Titelbild---}
    begin
      clrscr;               { Bildschirm l”schen }
      gotoxy(33,5);         { Cursor setzen }
      write('Rechenprogramm');
      gotoxy(1,15);
      writeln('(A)ddieren');
      writeln('(S)ubtrahieren');
      writeln('(M)ultiplizieren');
      write('(D)ividieren?');
      readln(operation);    { Lesen der Eingabe in Variable operation }
    end;

    procedure eingabe;
    begin
      write('1. Zahl: ');
      readln(zahl1);        { Lesen von Zahl 1 }
      write('2. Zahl: ');
      readln(zahl2);        { Lesen von Zahl 2 }
                            { Zuweisen der entsprechenden Operation
                              zu ergebnis }
      if operation = 'a' then ergebnis := zahl1+zahl2;
      if operation = 's' then ergebnis := zahl1-zahl2;
      if operation = 'm' then ergebnis := zahl1*zahl2;
      if operation = 'd' then ergebnis := zahl1/zahl2;
    end;

    procedure ausgabe;
    begin
      write('Ergebnis: ',ergebnis:1:2); { Ausgabe des Ergebnisses }
    end;                                { auf 2 Stellen gerundet }

    begin                   {---Main---}
      titel;
      eingabe;
      ausgabe;
    end.



    Re: Problem mit Repeat-Schleife

    wirthi - 19.08.2007, 21:27


    Nein. Dein Programm macht folgendes:
    Code:
    begin                   {---Main---}
      titel;
      eingabe;
      ausgabe;
    end.

    Es macht also einmal titel, dann einmal eingabe, dann einmal ausgabe. Danach ist es fertig und beendet sich.



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Tutorials.at

    Umrechner Arabische in Römische Zahlen - gepostet von Walgo am Donnerstag 19.07.2007
    Bots - gepostet von Trojaner am Montag 23.10.2006
    Problem mit Tutorial - gepostet von Domu am Dienstag 08.08.2006
    Wird das Tutorial erweitert? - gepostet von Der Neue am Dienstag 09.05.2006
    Exitcode 106 bei Pascal - gepostet von Danny am Freitag 22.06.2007
    Eckige Klammern - gepostet von ohio am Freitag 30.06.2006
    Turbo C Problem! (Umfrage nur nebenbei) - gepostet von ChillerT am Dienstag 06.02.2007
    Hey - gepostet von silver am Sonntag 31.12.2006
    PC-Spiele programmieren - gepostet von Dominik92 am Mittwoch 13.09.2006



    Ähnliche Beiträge wie "Problem mit Repeat-Schleife"

    Wir haben ein Problem!!! - Langi (Freitag 09.11.2007)
    Hassu N Problem ????? - Anonymous (Montag 13.12.2004)
    schon das erste problem.... :-( - jonnyb (Donnerstag 21.06.2007)
    Ein PC NooB hat ein Sound Problem - Vergil (Mittwoch 31.10.2007)
    Problem - Dragonfly (Samstag 21.07.2007)
    Rießen Problem!!Bitte alle lesen!!!! - Jule14 (Samstag 07.01.2006)
    !!! kleines Problem bei Bundesliga 05/06 !!! - bundesliga0506 (Mittwoch 20.07.2005)
    Point of Existence 2 Mod Singleplayer Problem! - dirtrunner (Dienstag 05.09.2006)
    Und noch ein Altbekannter Aero - BAUR547 (Donnerstag 03.11.2011)
    USKO - ServerLogin Problem "Disconnected from Server&qu - rauron (Freitag 21.04.2006)