Problem mit Free Pascal

Pascal, Basic und andere nicht aufgelistete
Antworten
gizno82
Beiträge: 46
Registriert: Sa Dez 19, 2009 4:03 pm

Problem mit Free Pascal

Beitrag von gizno82 » Di Okt 30, 2012 3:15 pm

Hallo Leute,

Ich muss jetzt leider in Pascal programmieren und komme noch nicht so richtig klar.
Ich habe zum üben ein kleines Programm geschrieben, dass Bestellungen entgegen nimmt.
Hört sich doof an aber was solls für den Anfang ist es Okay.
Es wird der Name des Artikels, die StueckZahl sowie der StueckPreis eingegeben.
StueckZahl wird mit StueckPreis multipliziert und als Gesamtpreis Ausgegeben.

Bedingung ist, das StueckZahl und StueckPreis >= 0 sind.
Die Eingabe von StueckZahl und StueckPreis wird so lange wiederholt, bis StueckZahl und StueckPreis >= 0 sind.
Danach wird der EndPreis berechnet.

Ist der EndPreis berechnet wird er ausgegeben und es wird über ein if abgefragt ob der Benutzer weitere Artikel kaufen moechte (J oder j) für ja und (N oder n) keine Artikel mehr kaufen (Programm beenden).
Genau hier ist der Knackpunkt, man kann das Programm momentan durch das betätigen jeder beliebigen Taste außer N bzw n fortführen, das Programm soll aber nur durch betätigen von J bzw j durchgeführt werden.

Ich weiß absolut nicht wo der Fehler liegt und bin am verzweifeln, könnte sich bitte jemand das Programm anschauen und mir einen Tip geben ?

Grüße gizno

Code: Alles auswählen

program multi2 (input, output);

	uses crt;

	var
	ProduktBezeichnung : string[30];
	StueckZahl : integer;
	StueckPreis : integer;
	EndPreis : integer;
	QuitFlag : boolean;
	Beenden : char;
	

begin
	{Initialisierung QuitFlag}
	QuitFlag := false;
	repeat	{Programm beenden J/N ?}
		repeat	{Wiederholung bis Eingaben >= 0}
			writeln('Bitte geben Sie das Produkt an, dass Sie kaufen moechten.');
			readln(ProduktBezeichnung);
			writeln('Bitte geben Sie die Stueckzahl ein.');
			readln(StueckZahl);
			writeln('Bitte geben Sie den StueckPreis ein.');
			readln(StueckPreis);
			if ( (StueckZahl < 0) or (StueckPreis < 0) ) then
				writeln('Sie duerfen keine negativen Werte eingeben.');
		until ( (StueckZahl >= 0) and (StueckPreis >= 0)  );
		
		EndPreis := StueckZahl * StueckPreis;
		
		writeln('Sie haben ',StueckZahl,' ',ProduktBezeichnung,' zu einem Stueckpreis von ',StueckPreis,' Euro Gekauft, die Summe betraegt ',EndPreis,' Euro.');
		writeln('Moechten Sie weitere Artikel kaufen (J/N) ?');
		Beenden := ReadKey;
		if ( (Beenden = 'J') or (Beenden = 'j') ) then
			QuitFlag := false
		else if ( (Beenden = 'N') or (Beenden = 'n') ) then
		begin
			QuitFlag := true;
			writeln('Danke fuer Ihren Einkauf, beehren Sie uns bald wieder.');
		end
	until QuitFlag = true; {noch einen Artikel kaufen ?}
	
end.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Problem mit Free Pascal

Beitrag von Xin » Di Okt 30, 2012 3:21 pm

gizno82 hat geschrieben:Ich muss jetzt leider in Pascal programmieren und komme noch nicht so richtig klar.
Wer zwingt einen denn heute noch zu Pascal auf dem Level!? Schüler, der von Lehrern gequält wird?
gizno82 hat geschrieben:Ist der EndPreis berechnet wird er ausgegeben und es wird über ein if abgefragt ob der Benutzer weitere Artikel kaufen moechte (J oder j) für ja und (N oder n) keine Artikel mehr kaufen (Programm beenden).
Genau hier ist der Knackpunkt, man kann das Programm momentan durch das betätigen jeder beliebigen Taste außer N bzw n fortführen, das Programm soll aber nur durch betätigen von J bzw j durchgeführt werden.

Ich weiß absolut nicht wo der Fehler liegt und bin am verzweifeln, könnte sich bitte jemand das Programm anschauen und mir einen Tip geben ?
Wenn Du 'j' eingibst, setzt Du das Quit-Flag auf false. Damit das Programm überhaupt läuft, ist es vorher auch schon auf false. Du änderst also nichts.
Wenn Du eine andere Taste drückst, passiert das selbe: Nichts.
Also läuft das Programm weiter, wenn Du nicht 'n' drückst.

Wenn Du das verhalten ändern möchtest, wirst Du also formulieren müssen, was er stattdessen tun soll.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

gizno82
Beiträge: 46
Registriert: Sa Dez 19, 2009 4:03 pm

Re: Problem mit Free Pascal

Beitrag von gizno82 » Di Okt 30, 2012 11:13 pm

Wer zwingt einen denn heute noch zu Pascal auf dem Level!? Schüler, der von Lehrern gequält wird?
Ich werde auf der Uni gezwungen in Pascal zu programmieren. C wäre mir auch lieber. Aber was solls ist halt so.
Im zweiten Semester ist dann OOP in Java angesagt.

Antworten