![]() |
Testauswertungsprogramm
Hallo, ich hab ein kleines Programm in FreePascal programmiert
Folgendes:
Delphi-Quellcode:
SO weit, so gut, es funktioniert. Jetzt will ich aber, dass am Ende die Gesamtpunktezahl einer Note zugeordnet wird und diese dann halt ausgegeben wird.
program testauswertung
uses crt; var nr, summe, punkte:integer; begin clrscr; summe:=0; FOR nr:=1 TO 4 DO begin writeln('Aufgabe: ',nr); readln(punkte); summe:=summe+punkte; end; writeln('Gesamtpunktezahl: ',summe); readln; end. Note 4: 24-29 Punkte Note 3: 29-37 Punkte Note 2: 38-44 Punkte Note 1: 45-50 Punkte Ich habe mir folgendes überlegt, wie ich es angehen könnte: Die Gesamtpunktezahl ist ja summe, ich habe dann mir folgendes ausgedacht:
Delphi-Quellcode:
writeln('Gesamtpunktezahl: ',summe);
IF (summe>23) AND (summe<=29) THEN writeln('Sie haben ein Genügend erreicht!'); ELSE IF (summe>29) AND (summe<=37) THEN writeln('Sie haben ein Befriedigend erreicht!'); ELSE IF (summe>37) AND (summe<=44) THEN writeln('Sie haben ein Gut erreicht!'); ELSE (summe>44) AND (summe<=50) THEN writeln('Sie haben ein Sehr GUt erreicht!'); readln; end. Das haut aber nicht ganz hin, habt ihr eine andere Idee wie ich es vielleicht lösen könnte? Danke, Martin |
Re: Testauswertungsprogramm
Hallo,
schau Dir mal case an. :wink: |
Re: Testauswertungsprogramm
Du meinst eine Case summe OF
Verknüpfung anstatt der verschachtelten IF THEN ELSE :?: Gruß, Martin |
Re: Testauswertungsprogramm
Hallo...
case ist da wesentlich eleganter und übersichtlicher. Das merkst du schnell selbst :thumb: :hi: |
Re: Testauswertungsprogramm
Warum nicht erst mal die Fehler beheben:
Delphi-Quellcode:
und schon gehts - Grundlagen von if then else - das war nämlich C style.
writeln('Gesamtpunktezahl: ',summe);
IF (summe>23) AND (summe<=29) THEN writeln('Sie haben ein Genügend erreicht!'); <<<<<<<<<<<< semi weg ELSE IF (summe>29) AND (summe<=37) THEN writeln('Sie haben ein Befriedigend erreicht!'); <<< semi weg ELSE IF (summe>37) AND (summe<=44) THEN writeln('Sie haben ein Gut erreicht!'); <<<<<<<<<<<<< semi weg ELSE (summe>44) AND (summe<=50) THEN writeln('Sie haben ein Sehr GUt erreicht!'); readln; end. Gruss |
Re: Testauswertungsprogramm
Hallo,
Case waer einfacher(wie schon vor mir geschrieben)
Delphi-Quellcode:
writeln('Gesamtpunktezahl: ',summe);
Case Summe of 23..29:writeln('Sie haben ein Genügend erreicht!'); 30..37:writeln('Sie haben ein Befriedigend erreicht!'); 38..44:writeln('Sie haben ein Gut erreicht!'); 45..50:writeln('Sie haben ein Sehr Gut erreicht!'); end; readln; end. |
Re: Testauswertungsprogramm
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, hab es jetzt doch mit IF THEN ELSE gemacht:
Delphi-Quellcode:
So hab ich zwei Fehler drinne, sagt der debug mod., und zwar bei 19,35 sagt er:
program testauswertung
uses crt; var nr, summe, punkte:integer; begin clrscr; summe:=0; FOR nr:=1 TO 4 DO begin writeln('Aufgabe: ',nr); readln(punkte); summe:=summe+punkte; end; writeln('Gesamtpunktezahl: ',summe); IF (summe>23) AND (summe<=29) THEN writeln('Sie haben ein Genügend erreicht!') ELSE IF (summe>29) AND (summe<=37) THEN writeln('Sie haben ein Befriedigend erreicht!') ELSE IF (summe>37) AND (summe<=44) THEN writeln('Sie haben ein Gut erreicht!') ELSE (summe>44) AND (summe<=50) THEN writeln('Sie haben ein Sehr GUt erreicht!'); readln; end. 19,35: Illegal Expression 19,35: Fatal:Syntax Error, ";" expected but "THEN" found. Ich lade das Programm mal hoch, vlt könnte jemand schauen und es dann wieder hochladen... Danke, Martin |
Re: Testauswertungsprogramm
Schreibe deinen Code doch bitte auf case um. Das ist wirklich tausendmal besser. Dann findest du auch schnell selbst fehler!
|
Re: Testauswertungsprogramm
Delphi-Quellcode:
So, umgeschrieben.
program testauswertung
uses crt; var nr, summe, punkte:integer; begin clrscr; summe:=0; FOR nr:=1 TO 4 DO begin writeln('Aufgabe: ',nr); readln(punkte); summe:=summe+punkte; end; writeln('Gesamtpunktezahl: ',summe); IF summe=>24<=29 OR summe=>29<=37 OR summe=>37<=44 OR summe=<44 THEN begin CASE summe OF >24<=29:begin writeln('Genügend'); end; >29<=37:begin writeln('Befriedigend'); end; >37<=44:begin writeln('GUt'); end; >44:begin writeln('Sehr gut'); end; end; end ELSE writeln('Falsche Eingabe.Progr.abbr.'); readln; end. |
Re: Testauswertungsprogramm
Schau Dir den Beitrag von "Der Kaktus" nochmal an...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 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