Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   Pascal-Rechenprogramm: Fussschleife (https://www.delphipraxis.net/134878-pascal-rechenprogramm-fussschleife.html)

FreePascal 31. Mai 2009 11:49


Pascal-Rechenprogramm: Fussschleife
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, ich bin neu hier im Forum und programmiere so ein bisschen nebenbei in FreePascal.
Jetzt habe ich es geschafft ein Rechenprogramm zu erstellen, das alle 4 Grundrechungsarten beherrscht, mit einer CASE ... OF Verknüpfung. Nun habe ich mir vorgenommen eine fußgesteuerte Schleife einzubauen, komme aber leider nicht weiter. Wäre nett :lol: wenn mir bitte irgendwer weiterhelfen könnte, danke :lol: weil ich bin echt bald am verwzeifeln :cry: .
Das habe ich bereits programmiert:


Delphi-Quellcode:
program fussschleife;
uses crt;
var name:string;
         Zahl1,Zahl2,summe,diff,prod,ergebnis:longint;
         quo:real;
         auswahl:char;


begin

clrscr;

writeln('Hallo, lieber Benutzer, bitte gib deinen Vornamen ein');
readln(name);
writeln('Herzlich willkommen, lieber ',name,'!');
writeln('dieses Programm beherrscht alle 4 Grundrechnungsarten!');
writeln('Für Addition A drücken, für Subtrakion S drücken, für Multiplikation M drücken und für Division D drücken!');


readln(auswahl);
auswahl:=UPCASE(auswahl);
IF (auswahl='A') OR (auswahl='S') OR (auswahl='M') OR (auswahl='D')
THEN
     begin
          writeln('Bitte gib die erste Zahl ein!');
          readln(Zahl1);
           writeln('Bitte gib jezt die zweite Zahl ein!');
           readln(Zahl2);
          CASE auswahl OF
               'A':begin
                 summe=:Zahl1+Zahl2;
                writeln('Die sUmme beträgt ',summe,'!');
                'S':begin
                 diff=:Zahl1-Zahl2;
                  writeln('Die Differenz beträgt ',diff,'!');
                  'M':begin
                  prod=:Zahl1*Zahl2;
                  writeln('Das Produkt beträgt ',prod,'!');
                    'D':begin
                  quo=:Zahl1/Zahl2;
                  writeln('Der Quotient beträgt ',quo:10:2,'!');
                  end;
        end;
end
ELSE
writeln('Falsche Eingabe! Programmabbruch!');
readln;
end.



So weit, so gut.
:wall: Ich bin echt am verzweifeln. Wo kann ich hier bitte die fussschleife einbauen. Wäre nett, wenn mir das bitte jemand sagen könnte, wie und wohin die fusschleife da reingehört :angel:

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

mkinzler 31. Mai 2009 12:03

Re: Pascal-Rechenprogramm: Fussschleife
 
Und welche Bedingung soll die Repeat-Schleife als Abbruchbedingung haben?

BTW. Herzlich Willkommen in der Delphi Praxis!

himitsu 31. Mai 2009 12:13

Re: Pascal-Rechenprogramm: Fussschleife
 
Zitat:

Zitat von FreePascal
Das habe ich bereits programmiert:

Und das funktioniert so?

da fehlen mir ein paar ENDs drin :shock:

Zitat:

Zitat von FreePascal
Wäre nett, wenn mir das bitte jemand sagen könnte, wie und wohin die fusschleife da reingehört :angel:

Es kommt drauf an, was die wiederholen willst
und um diesen Teil drumrum kommt dann die Schleife. :zwinker:

z.B.:
Delphi-Quellcode:
program fussschleife;
uses crt;
var name:string;
         Zahl1,Zahl2,summe,diff,prod,ergebnis:longint;
         quo:real;
         auswahl:char;


begin

clrscr;

writeln('Hallo, lieber Benutzer, bitte gib deinen Vornamen ein');
readln(name);
writeln('Herzlich willkommen, lieber ',name,'!');
writeln('dieses Programm beherrscht alle 4 Grundrechnungsarten!');
repeat // <<<<<<<<<<<<<<<<
    writeln('Für Addition A drücken, für Subtrakion S drücken, für Multiplikation M '
        + 'drücken, für Division D und E für Ende drücken!');


    readln(auswahl);
    auswahl:=UPCASE(auswahl);
    IF (auswahl='A') OR (auswahl='S') OR (auswahl='M') OR (auswahl='D')
    THEN
         begin
              writeln('Bitte gib die erste Zahl ein!');
              readln(Zahl1);
              writeln('Bitte gib jezt die zweite Zahl ein!');
              readln(Zahl2);
              CASE auswahl OF
                   'A':begin
                        summe=:Zahl1+Zahl2;
                        writeln('Die sUmme beträgt ',summe,'!');
                    end; // <<<<<<<<<<<<<<<<
                    'S':begin
                        diff=:Zahl1-Zahl2;
                        writeln('Die Differenz beträgt ',diff,'!');
                    end; // <<<<<<<<<<<<<<<<
                    'M':begin
                        prod=:Zahl1*Zahl2;
                        writeln('Das Produkt beträgt ',prod,'!');
                    end; // <<<<<<<<<<<<<<<<
                    'D':begin
                        quo=:Zahl1/Zahl2;
                        writeln('Der Quotient beträgt ',quo:10:2,'!');
                    end;
              end;
    end
    ELSE
    IF auswahl<>'E'
    THEN
        writeln('Falsche Eingabe! Programmabbruch!');
    writeln('');
until (auswahl<>'A') AND (auswahl<>'S') AND (auswahl<>'M') AND (auswahl<>'D');
end.
oder
Delphi-Quellcode:
...
    end
    ELSE
    IF auswahl<>'E'
    THEN
        writeln('Falsche Eingabe!');
    writeln('');
until auswahl='E';
end.
aber ich muß sagen, daß du an deiner Einrückung nochetwas arbeiten/verbessern mußt ... so erkennt man kaum, was wo wie zusammenhängt und wo es weitergeht...

[edit] ok, das mit den [delphi]-Tags hätt ich jetzt umsonst geschrieben ... böser mkinzler das einfach so zu machen :lol:

FreePascal 31. Mai 2009 12:38

Re: Pascal-Rechenprogramm: Fussschleife
 
Ja, die Sache mit dem Einrücken... :lol:
Ich möchte haben, dass das Programm mich am Ende fragt, ob ich nochmal rechnen will oder nicht. :angel:
Ja, mein Quellcode passt,allerdings in FreePAscal. :gruebel:


Gruß, ein FreePascal(er)

mkinzler 31. Mai 2009 12:45

Re: Pascal-Rechenprogramm: Fussschleife
 
Am Besten rückst du so ein, das begin und end immer untereinander stehen und der Code innerhalb mit einem Tab mehr

Delphi-Quellcode:
begin
  ...
  if .... then
  begin
    ... //Hier den Code
  end;
...
end;
Für den Schleife alles in
Delphi-Quellcode:
repeat
  ...
  WriteLN( 'Beenden (J/N)?');
  ReadLn( Eingabe);
until UpperCase( Eingabe = 'N');

himitsu 31. Mai 2009 12:54

Re: Pascal-Rechenprogramm: Fussschleife
 
na gut, dann ist Freepascal aber etwas eigenartig BEGIN ohne END ... nja, wenn es so geht, dann isses wohl OK :stupid:

und das UpperCase würde ich anders verschachteln :angel:
Delphi-Quellcode:
until UpperCase(Eingabe) = 'N';

FreePascal 31. Mai 2009 13:04

Re: Pascal-Rechenprogramm: Fussschleife
 
Auch in FreePascal braucht jedes begin ein end

Delphi-Quellcode:
program fussschleife;
uses crt;
var name:string;
         Zahl1,Zahl2,summe,diff,prod,ergebnis:longint;
         quo:real;
         auswahl:char;


begin

clrscr;

writeln('Hallo, lieber Benutzer, bitte gib deinen Vornamen ein');
readln(name);
writeln('Herzlich willkommen, lieber ',name,'!');
writeln('dieses Programm beherrscht alle 4 Grundrechnungsarten!');
repeat // <<<<<<<<<<<<<<<<
    writeln('Für Addition A drücken, für Subtrakion S drücken, für Multiplikation M '
        + 'drücken, für Division D und E für Ende drücken!');


    readln(auswahl);
    auswahl:=UPCASE(auswahl);
    IF (auswahl='A') OR (auswahl='S') OR (auswahl='M') OR (auswahl='D')
    THEN
         begin
              writeln('Bitte gib die erste Zahl ein!');
              readln(Zahl1);
              writeln('Bitte gib jezt die zweite Zahl ein!');
              readln(Zahl2);
              CASE auswahl OF
                   'A':begin
                        summe=:Zahl1+Zahl2;
                        writeln('Die sUmme beträgt ',summe,'!');
                    end; // <<<<<<<<<<<<<<<<
                    'S':begin
                        diff=:Zahl1-Zahl2;
                        writeln('Die Differenz beträgt ',diff,'!');
                    end; // <<<<<<<<<<<<<<<<
                    'M':begin
                        prod=:Zahl1*Zahl2;
                        writeln('Das Produkt beträgt ',prod,'!');
                    end; // <<<<<<<<<<<<<<<<
                    'D':begin
                        quo=:Zahl1/Zahl2;
                        writeln('Der Quotient beträgt ',quo:10:2,'!');
                    end;
              end;
    end
    ELSE
    IF auswahl<>'E'
    THEN
        writeln('Falsche Eingabe! Programmabbruch!');
    writeln('');
until (auswahl<>'A') AND (auswahl<>'S') AND (auswahl<>'M') AND (auswahl<>'D');
end.
So funktioniert das Programm, aber das mit UpperCase geht leider nicht, weil: im debug modus steht: UpperCase indetifier not found.

Hhhmmm, das muss doch :gruebel: noch irgendwie anders hinhauen, dass das JA Nein funktioniert.

Gruß, ein FreePascal

[edit=mkinzler]Delphi-Tag eingefügt, solltest du aber das nächste mal selber machen! Mfg, mkinzler[/edit]
[edit=mkinzler]Überflüssige Zeichen entfernt Mfg, mkinzler[/edit]

mkinzler 31. Mai 2009 13:04

Re: Pascal-Rechenprogramm: Fussschleife
 
Zitat:

und das UpperCase würde ich anders verschachteln Angel
Natürlich :oops:

[Edit]
Das Uppercase sorgt nur dafür, das die Eingabe in Großbuchstaben umgewandelt wird, so dass auch bei der Eingabe 'n' abgebrochen wird.
[/Edit]

FreePascal 31. Mai 2009 14:04

Re: Pascal-Rechenprogramm: Fussschleife
 
Juhu Ike habe es geschafft :wink:
DANKE AN ALLE :dancer:
:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz