Forum
Tipps
News
Menu-Icon

Problem bei If,Then, Else bei Free Pascal

Hallo,
ich bin gerade dabei mir die Programmiersprache von Free Pascal beizubringen, und bin dabei auf folgende Übung gestoßen. Ich habe sie soweit abgeschrieben, doch sie scheint nicht zu funktioniern. Hier ist erstmal die Aufgabe:  An einer Schule wird ein Schueler versetzt, wenn er in den Hauptfaechern Deutsch, Mathematik,Englisch, Franzoesisch und Physik keine Note unter "ausreichend" hat. Wenn er nur in einem Fach die Note "mangelhaft" bekommen hat, kann er diese durch ein anderes Hauptfach mit mindestens einer Note "befriedigend" ausgleichen. Sonst wird er nicht versetzt. Der Computer soll nach Eingabe aller Noten ein Zeugnis mit einem entsprechenden Versetzungsvermerk ausgeben.
Mein Programm sieht bis jetzt so aus:
 
program prog007;

uses   crt;

var    d, ma, en, fr, ph, ch, bio, g, sp, ku  : integer;
       versetzt                               : integer;
       anzahl                                 : integer;

       { dabei bedeuten 1 - sehr gut, 2 - gut, 3 - befriedigend,
         4 - ausreichend, 5 - mangelhaft, 6 - ungenuegend        }

begin

  clrscr;

  writeln('Geben Sie für die folgenden Fächer die Noten ein: ');
  write  ('Deutsch:      '); readln (d) ;
  write  ('Mathematik:   '); readln (ma);
  write  ('Englisch:     '); readln (en);
  write  ('Französisch:  '); readln (fr);
  write  ('Physik:       '); readln (ph);
  write  ('Chemie:       '); readln (ch);
  write  ('Biologie:     '); readln (bio);
  write  ('Geschichte:   '); readln (g) ;
  write  ('Sport:        '); readln (sp);
  write  ('Kunst:        '); readln (ku);


  versetzt := 0;          // initialisiert mit 'nicht versetzt'
  anzahl   := 0;

  if (d < 5) and (ma < 5) and (en < 5) and (fr < 5) and (ph < 5)
  then versetzt := 1
  else begin

    if d   = 5 then anzahl := anzahl + 1;
    if ma  = 5 then anzahl := anzahl + 1;
    if en  = 5 then anzahl := anzahl + 1;
    if fr  = 5 then anzahl := anzahl + 1;
    if ph  = 5 then anzahl := anzahl + 1;

    if anzahl = 1
    then if (d < 3) or (ma < 3) or (en < 3) or (fr < 3) or (ph < 3)
         then versetzt := 1;
  end;

  if versetzt = 1
  then writeln(' der Schüler wird versetzt.')
  else writeln(' der Schüler wird nicht versetzt.');

end.

So und jetzt zum Problem: Die Noten kann man zwar eingeben, aber die Ausgabe des Ergebnisses funktioniert nicht. Weiß jemand, was da zu tun ist?
Liebe Grüße,
KitteKat


Antworten zu Problem bei If,Then, Else bei Free Pascal:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Das Programm funktioniert schon. Nur geht wahrscheinlich das Ausgabefenster zu schnell wieder zu. Das kannst du verhindern indem du am Ende ( vor dem end.) noch ein readln; einfügst.
Es gibt auch noch einen kleinen logischen Fehler, aber den wirst du sicherlich selbst finden...

Hi Lisaa;
also erst mal ganz vielen Dank für deinen Tipp!!!!! Ich hab
gerade noch mal alles nach dem logischen Fehler abgesucht, aber irgendwie komm ich nicht drauf.. Kannst du mir nicht einen gaaaanz kleinen Tipp geben? :-[
Liebe Grüße
KitteKat

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Diese Zeile:

then if (d < 3) or (ma < 3) or (en < 3) or (fr < 3) or (ph < 3)
und dazu die Aufgabenstellung, gleichs nochmal ab. 

Vielen Dank für die Hilfe!!  :):)
 

Hallo,
ich hab noch ein kleines Problem  :-[ und zwar scheint das Programm der Aufgabenstellung nicht richtig zu entsprechen. Wenn ich zum Beispiel eine Fünf und eine Drei und den Rest auch Drei eingebe, steht dort 'nicht versetzt'. Aber nach der Aufgabenstellung ist man doch dann versetzt?!
Vielleicht weiß auch da jemand Rat?
Liebe Grüße,
KitteKat

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Hast du meinen Hinweis beachtet und was hast du nun geändert?

Ich habe mir das angeguckt und dann das 'or' in 'and' geändert. War das nicht richtig? :-[:-[
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Nö. Was soll die Zeile denn machen?
"kann er diese durch ein anderes Hauptfach mit mindestens einer Note "befriedigend" ausgleichen". Das heißt, man muss in einem dieser Fächer eine 3 oder besser haben. Das soll diese Zeile doch prüfen. Das heißt das or stimmt schon, es reicht ja in einem Fach. Aber was heißt denn z.B. "d < 3"? Wann wird dieser Ausdruck wahr und wann sollte er laut Aufgabenstellung wahr werden?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Genau, wenn du das richtig änderst, dann klappts auch.

Hallo,
ich habe jetzt d<=3 geschrieben und es klappt :)
Viieellenn Dank an euch beide!! Ihr habt mir sehr geholfen!
Liebe Grüße,
KitteKat

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
< 4 wäre auch gegangen  ;) 

« Java: .class Dateien ausfuehrenDezimal in römische Zahlen mit Turbo oder Dev-Pascal »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Freemium
Bei "Freemium"-Software bekommen Nutzer eine grundlegende Version eines Programms (oder Spiels) kostenlos. Im Gegensatz zu Testversionen, die nach einer bestimm...

Notebook
Ein Notebook ist ein kleiner, zusammklappbarer Computer für unterwegs. Er besteht aus Tastatur, Touchpad oder ähnlichem Mausersatz, Bildschirm und dem Innenlebe...

Computer
Siehe PC....