Alle Dateien dieses Themas
| Dateiname | Dateigröße | geschrieben von | Datum | |
|---|---|---|---|---|
| BRUCHMAT.PAS | 2.7KB | fenix | 28.05.10 19:27 | Nachricht lesen |
| DIALOG.PAS | 5.9KB | fenix | 28.05.10 19:28 | Nachricht lesen |
| BRUCHREC.pas | 3.8KB | BP92 | 07.06.10 22:49 | Nachricht lesen |
| BRUCH.PAS | 4KB | BP92 | 13.06.10 14:46 | Nachricht lesen |
1 Bruchrechenen
Autor: <Thomas>
(G)
(IP bekannt)
Datum: 27. Mai. 2010 16:28
Hallo,
ich programmiere in der schule mit turbopascal und komme nicht gerade gut damit zurecht.Das ist auch der Grund warum ich zu euch schreibe.Wir programmieren zurzeit ein bruchrechen programm,welches den stellenwert einer klassenarbeit hat.Da ich eine gute note haben möchte, hoffeich auf eure Unterstützung.
Das folgende Programm soll 2 Brüche addieren,subtrahieren,dividieren und multiplizieren können.
So weit bin ich bisher gekommen. Wenn jemand einen fehlker entdeckt bitte verbessern.auch wäre es schön wenn mir jemand das programm weiter schreiben könnte da ich zum jetztigen Zeitpunkt total auf dem schlauch stehe.
Hier das Programm:
PROGRAM bruchrechner_mit_record; (* Die elegantere Methode! Entrup, April 2010 *)
CONST links=2; (* Spalte zur Eingabe des ersten Bruches *)
rechts=30;
Type t_bruch=Record
zaehler : Longint;
nenner : Longint;
END;
...
VAR bruch1, ... : t_bruch;
...........
Procedure Eingabe(var bruch1);
begin
writeln('Geben sie einen Zaehler ein: ');
readln(bruch1.zaehler);
writeln('Geben sie einen Nenner ein: ');
readln(bruch1.nenner);
end;
function ggt(x,y:longint):longint;
begin
repeat
if x>y then x:=x-y else y:=y-x;
until x=y;
ggt:=x;
end;
procedure kuerzen(var bruch1:t_bruch);
begin
bruch1.zaehler:= bruch1.zaehler div ggt(bruch1.zaehler,bruch1.nenner);
bruch1.nenner:=bruch1.nenner div ggt (bruch1.zaehler,bruch1.nenner);
end;
BEGIN
Initialisierung; (* Variablen auf Null, Bildschirm frei usw.. *)
Maske; (* Bildschirm wird vorbereitet, Hinweise an Benutzer, Einteilung Brüche, Bruchstriche usw... *)
REPEAT
eingabe(bruch1, links);
kuerzen(bruch1);
eingabe(operator);
eingabe(bruch2, rechts);
kuerzen(bruch2);
case operator of
'+' : Addition(bruch1, bruch2, ergebnisbruch);
'-' : Subtraktion(...);
'*' : Multiplikation(...);
'/' : Division(...);
END;
kuerzen(ergebnisbruch);
Ausgabe(...);
UNTIL NOT weiter;
Abschied; (* freundlich verabschiedet man sich vom Benutzer *)
END.
Das Hauptprgramm sowie der global festgelegte teil ist vom lehrer vorgeschrieben und darf nicht geändert werden !!!
Vielen Dank für eure HIlfe
2 Re: Bruchrechenen
Autor: BP92
(R)
(IP bekannt)
Datum: 27. Mai. 2010 19:30
Hallo,
was ich bisher sehe, ist schon nicht schlecht. Bei der Prozedur "Eingabe()" fehlt der Datentyp t_Bruch, sonst wirds nicht kompilieren.
Das mit dem Kuerzen sieht auch soweit richtig aus. An welcher Stelle kommst du also nicht weiter? Wie du auf "ergebnisbruch" kommst, oder wie die Ausgabe aussehen soll, oder...?
Wann schreibst du denn diese Arbeit. (Nicht etwa schon morgen, nehm ich mal an...) 
--
PASCAL Programmierer aus Leidenschaft
Turbo Pascal Beispiele fuer Anfaenger: [www.webplain.de]
Momentane Projekte:
-----------------------
Konsolen-Adventure Game mit FreePascal (im Denkpause-Forum) [www.webplain.de]
Funktionsplotter und -rechner; Vorabversion gibt's hier: [www.webplain.de]
Objektorientierte Textmodus-GUI; Release-Termin: groesstenteils fertig
3 Re: Bruchrechenen
Autor: fenix
(R)
(IP bekannt)
Datum: 28. Mai. 2010 19:30
Hi Thomas,
ich hatte mal dieses Programm ins Forum gehängt, vielleicht kannst Du da etwas nutzen. Hier eine " Kopie des Beitrags" mit den Dateien.
Gruß
fenix
" Autor: fenix (R) (IP bekannt)
Datum: 11. Jan. 2010 16:02
Hi gerrit rohling
hier hänge ich eine Programm-Quelle (zu Turbo Pascal) an, die mein Freund Dr. (Math) Fuhrmann (+) in konzentrierter Form erstellt hat.
Es handelt sich um Bruchrechnen mit + - * / Rechnungen.
Mit dem Code kannst Du sicher etwas anfangen, versuchs mal mit dem kompilierten Programm, die Benutzerseite ist etwas typisch (spartanisch) für einen Mathe-Dr.
Einfach mal anschauen und vielleicht lernen und verstehen
MfG
fenix
PS. da gibts schon mal einen Hinweis im Nov 2008 auf ggt (aus diesem Programm)
PPS. Rückmeldungen / Kommentare sind Hilfen für Helfer
2 mal bearbeitet. Zuletzt am 12.01.10 14:34 von fenix.
Anhänge:
* BRUCHMAT.PAS (2.7KB)
* DIALOG.PAS (5.9KB) "
Anhänge:
4 Re: Bruchrechenen
Autor: <Thomas>
(G)
(IP bekannt)
Datum: 30. Mai. 2010 20:06
danke fenix für den tipp,
aber beim ausführen deines programms kommen bei mir fehlermeldungen auf.
ZU BP92: ja ich bin jetzt etwas weiter gekommen zu dem programm pben habe ich zwischen di procedure kuerzen und dem Hauptprogramm noch folgende sachen programmiert:
procedure eingabe_operator(var operator:char);
begin
repeat
writeln('welchen Operator moechten sie haben (+,-,*,/)');
readln(operator);
until operator IN ['+','-','*','/']
end;
function kgv(a,b:longint):longint;
begin
kgv:= a DIV ggt(a,b) * b;
end;
procedure addition(var bruch1,bruch2,ergebnisbruch:t_Bruch);
begin
ergebnisbruch.nenner:=kgv(bruch1.nenner,bruch2.nenner);
ergebnisbruch.zaehler:=ggt(
beim kürzen des ergebnisbruch.zaehler stehe ich momentan auf dem schlauch.
wäre nett wenn wir jemand da helfen könnte.ist der rest denn auch in ordnung?
hätte jemand eine idee wie ich die procedure multiplikation und division nach dem gleichen schema wie in der procedure addition programmieren könnte
5 Re: Bruchrechenen
Autor: BP92
(R)
(IP bekannt)
Datum: 30. Mai. 2010 20:17
Hi Thomas,
das Eingeben des Rechenoperators kannst auch so machen:
VAR
cOp: CHAR;
...
REPEAT
cOp:=READKEY;
UNTIL (cOp IN ['+','-','*','/']);
WRITE(cOp);
...
Dann sparst du dir die Prozedur, oder du definierst gleich eine FUNCTION, die den Operator als CHAR zurueckgibt.
Dadurch laesst sich die Verwendung von zu vielen globalen Variablen vermeiden.
Ueber den Rest muss ich noch mal kurz gruebeln, jedenfalls musst du bei der Addition eines Bruches das kgv() der beiden Nenner finden. Bsp:
2/4 + 1/8
Da musst du als Ergebnis dann die 8 bekommen, am besten auch als FUNCTION realisiert. Dann die 2 mit (8 DIV 4) erweitern und dann hast den Zaehler richtig. Nach Addition der beiden Zaehler kommt als Ergebnis dann 5/8 raus...
Codebeispiel bastel ich dann auch mal 
--
PASCAL Programmierer aus Leidenschaft
Turbo Pascal Beispiele fuer Anfaenger: [www.webplain.de]
Momentane Projekte:
-----------------------
Konsolen-Adventure Game mit FreePascal (im Denkpause-Forum) [www.webplain.de]
Funktionsplotter und -rechner; Vorabversion gibt's hier: [www.webplain.de]
Objektorientierte Textmodus-GUI; Release-Termin: groesstenteils fertig
6 Re: Bruchrechenen
Autor: fenix
(R)
(IP bekannt)
Datum: 31. Mai. 2010 10:11
Zitat <Thomas>:
danke fenix für den tipp,
aber beim ausführen deines programms kommen bei mir fehlermeldungen auf.
beim kürzen des ergebnisbruch.zaehler stehe ich momentan auf dem schlauch.
wäre nett wenn wir jemand da helfen könnte. ist der rest denn auch in ordnung?
Hi Thomas<> Das Kürzen steht explizit in dem Programm 'Bruchmat'.
Procedure kuerze(Var b:Bruch);
Var
z,n,t:Integer;
Begin
With b Do Begin
z:= Zaehler; n:= Nenner;
t:= ggt(z,n) ;
Zaehler:=z Div t; Nenner:=n Div t;
If t=1 Then teilerfremd:= True
Else teilerfremd:=False;
End
End;
Diese Prozedur wird bei der Ausgabe aufgerufen...
Procedure Ausgabe(Var b:Bruch);
Begin
kuerze(b); GotoXY(50,2);
With b Do Begin
Writeln ('Ergebnis: ',Zaehler,'/',Nenner);
If Not teilerfremd Then Begin
GotoXY(50,4); Writeln('gekrzt!')
End {von if}
End {von With}
End; {von Ausgabe}
wünsche viel Erfolg, vielleicht kannst Du etwas verwenden, halt evtl. die Variablennamen ändern....
Gruß
fenix
7 Re: Bruchrechenen
Autor: <Thomas>
(G)
(IP bekannt)
Datum: 07. Jun. 2010 15:49
Hallo,
entschuldigung, dass ich so spät zurückschreiben,aber ich habe erstmal versucht vllt ein bisschen ohne hilfe weiterzukommen.das hab ich auch geschaft :
Mein programm sieht im moment so aus:
PROGRAM bruchrechner_mit_record; (* Die elegantere Methode! Thomas, Juni 2010 *)
CONST links=2; (* Spalte zur Eingabe des ersten Bruches *)
rechts=30;
Type t_bruch=Record
zaehler : Longint;
nenner : Longint;
END;
VAR bruch1,bruch2,ergebnisbruch : t_bruch;
procedure Maske;
begin
clrscr;
gotoxy(8,8);
write(bruch1.zaehler );
gotoxy(8,9);
write('-----------' );
gotoxy(8,10 );
write(bruch1.nenner);
gotoxy(20,9 );
write(operator);
gotoxy(32,8 );
write(bruch2.zaehler );
gotoxy(32,9);
write('-----------' );
gotoxy(32,10);
write(bruch2.nenner);
gotoxy(44,10);
write('=');
gotoxy(56,8 );
write(ergebnisbruch.zaehler );
gotoxy(56,9);
write('-----------' );
gotoxy(56,10);
write(ergebnisbruch.nenner);
end;
Procedure eingabe(var bruch1:t_Bruch);
begin
writeln('Geben sie einen Zaehler ein: ');
readln(bruch1.zaehler);
writeln('Geben sie einen Nenner ein: ');
readln(bruch1.nenner);
end;
function ggt(x,y:longint):longint;
begin
repeat
if x>y then x:=x-y else y:=y-x;
until x=y;
ggt:=x;
end;
procedure kuerzen(var bruch1:t_bruch);
begin
bruch1.zaehler:= bruch1.zaehler div ggt(bruch1.zaehler,bruch1.nenner);
bruch1.nenner:=bruch1.nenner div ggt (bruch1.zaehler,bruch1.nenner);
end;
procedure eingabe_operator(var operator:char);
begin
repeat
writeln('welchen Operator moechten sie haben (+,-,*,/)');
readln(operator);
until operator IN ['+','-','*','/']
end;
function kgv(a,b:longint):longint;
begin
kgv:= a DIV ggt(a,b) * b;
end;
procedure addition(var bruch1,bruch2,ergebnisbruch:t_Bruch);
var k:longint;
begin
begin
ergebnisbruch.nenner:=kgv(bruch1.nenner,bruch2.nenner);
k:=kgv(bruch1.nenner,bruch2.nenner) * bruch1.zaehler;
ergebnisbruch.zaehler:=k + kgv(bruch1.nenner,bruch2.nenner) * bruch2.zaehler;
end;
Kuerzen(ergebnisbruch);
end;
procedure subtraktion(var bruch1,bruch2,ergebnisbruch:t_Bruch);
var k:longint;
begin
begin
ergebnisbruch.nenner:=kgv(bruch1.nenner,bruch2.nenner);
k:=kgv(bruch1.nenner,bruch2.nenner) * bruch1.zaehler;
ergebnisbruch.zaehler:=k - kgv(bruch1.nenner,bruch2.nenner) * bruch2.zaehler;
end;
Kuerzen(ergebnisbruch);
end;
procedure Multiplikation(var bruch1,bruch2,ergebnisbruch:t_Bruch);
begin
begin
ergebnisbruch.nenner:=bruch1.nenner * bruch2.nenner;
ergebnisbruch.zaehler:=bruch1.zaehler * bruch2.zaehler;
end;
Kuerzen(ergebnisbruch);
end;
procedure Division(var bruch1,bruch2,ergebnisbruch:t_Bruch);
begin
begin
ergebnisbruch.nenner:=bruch1.nenner * bruch2.zaehler;
ergebnisbruch.zaehler:=bruch1.zaehler * bruch2.nenner;
end;
Kuerzen(ergebnisbruch);
end;
procedure Ausgabe(ergebnisbruch:t_Bruch);
begin
writeln(ergebnisbruch.zaehler);
writeln(ergebnisbruch.nenner);
end;
BEGIN
clescr;
Initialisierung; (* Variablen auf Null, Bildschirm frei usw.. *)
Maske; (* Bildschirm wird vorbereitet, Hinweise an Benutzer, Einteilung Brüche, Bruchstriche usw... *)
REPEAT
eingabe(bruch1, links);
kuerzen(bruch1);
eingabe(operator);
eingabe(bruch2, rechts);
kuerzen(bruch2);
case operator of
'+' : Addition(bruch1, bruch2, ergebnisbruch);
'-' : Subtraktion(...);
'*' : Multiplikation(...);
'/' : Division(...);
END;
kuerzen(ergebnisbruch);
Ausgabe(...);
UNTIL NOT weiter;
Abschied; (* freundlich verabschiedet man sich vom Benutzer *)
END.
Bei der procedure maske kriselt es bei mir auf grund von fehlermeldunegn. kann mir da eine alternative lösung geben, damit die procedur richtig ist? Desweiteren habe ich keine idee was ich bei der procedure initalisierung machne muss.
ist das programm denn sonst soweit in ordnung?
mfg Fabian
8 Re: Bruchrechenen
Autor: fenix
(R)
(IP bekannt)
Datum: 07. Jun. 2010 18:58
Hi Thomas,
die Maske wird zuerst aufgerufen,
welche Ergebnisse (Zaehler, Nenner) werden da ausgegeben?
Gruß fenix
9 Re: Bruchrechenen
Autor: BP92
(R)
(IP bekannt)
Datum: 07. Jun. 2010 22:00
Hallo zusammen,
@ Thomas: die von dir gezeigte Procedure Kuerzen arbeitet voellig falsch. Wenn du den Zaehler veraenderst, solange der Nenner noch nicht bearbeitet wurde, liefert der zweite Aufruf des Ggt() nur durch Zufall mal den richtige Wert (wie das z.B. bei 4/6 der Fall ist).
Loesung: Du musst den Wert, durch den Zaehler und Nenner dividiert werden, in einer Variable zwischenspeichern und dann Zaehler und Nenner durch diesen Wert mittels DIV-Operator teilen.
// --------------------------
// Zaehler und Nenner kuerzen
// --------------------------
PROCEDURE Kuerzen(VAR tB: tBruch);
VAR
iFaktor: INTEGER;
BEGIN
iFaktor:=Ggt(tB.iZaehler,tB.iNenner);
tB.iZaehler:=tB.iZaehler DIV iFaktor;
tB.iNenner:=tB.iNenner DIV iFaktor;
END; (* Func Kuerzen() *)
Dieser Prozedur uebergibst du dann den Bruch als eine Variable und dieser wird dann soweit es geht, gekuerzt. Das kannst du z.B. direkt nach der Eingabe des ersten Bruchs anwenden, oder du laesst erst beide Brueche eingeben und kuerzt nachher nur den Ergebnisbruch.
Ist dir die Prozedur "Maske()" usw. vorgegeben? Sonst schmeiss mal alles, was "ueberfluessig ist" raus und bitte vermeide die Verwendung von globalen Variablen. Uebergebe die wenigen Variablen, die global, aber unmittelbar vor dem Hauptprogramm, deklariert werden muessen, mit Hilfe von Parametern an die Prozeduren und Funktionen
Im angehaengten Beispiel ist das alles mit sog. "Referenzuebergabe" realisiert. Erkennbar ist das am VAR direkt vor den zu uebergebenden Variablen.
--
PASCAL Programmierer aus Leidenschaft
Turbo Pascal Beispiele fuer Anfaenger: [www.webplain.de]
Momentane Projekte:
-----------------------
Konsolen-Adventure Game mit FreePascal (im Denkpause-Forum) [www.webplain.de]
Funktionsplotter und -rechner; Vorabversion gibt's hier: [www.webplain.de]
Objektorientierte Textmodus-GUI; Release-Termin: groesstenteils fertig
2 mal bearbeitet. Zuletzt am 07.06.10 22:49 von BP92.
Anhänge:
10 Re: Bruchrechenen
Autor: <Thomas>
(G)
(IP bekannt)
Datum: 12. Jun. 2010 13:41
hallo
zu BP92: die maske ist vorgegeben.
mein program hat sehr große fortschritte gemacht. es wird ausgeführt allerdings mit fehlern.Das sind meine Probleme:
Wenn ich die 2 brüche eingebe werden sie nicht direkt gekürzt,was eigentlich passierne sollte. Außerdem schmiert das prgramm nach der eingabe des 2 bruches immer ab. der ergebnisbruch wird nich hingeschrieben und der abschied und auch die frage ob noch mal gerechnet werden soll erscheint nicht auf dem bildschirm.
ROGRAM bruchrechner_mit_record; (* Die elegantere Methode! Thomas, Juni 2010 *)
USES wincrt;
CONST links=8; (* Spalte zur Eingabe des ersten Bruches *)
rechts=38;
Type t_bruch=Record
zaehler : Longint;
nenner : Longint;
END;
VAR bruch1,bruch2,ergebnisbruch : t_bruch;operator:char;
procedure initialisierung(var bruch1,bruch2,ergebnisbruch: t_bruch);
begin
clrscr;
bruch1.zaehler:=0;
bruch1.nenner:=0;
bruch2.zaehler:=0;
bruch2.nenner:=0;
ergebnisbruch.zaehler:=0;
ergebnisbruch.nenner:=0;
end;
procedure maske;
begin
gotoxy(29,1);
write('Bruchrechnung(+,-,*,/)');
gotoxy(29,2);
write('======================');
gotoxy(4,9);
write('-----------' );
gotoxy(34,9);
write('-----------' );
gotoxy(54,9);
write('=');
gotoxy(60,9);
write('-----------' );
end;
Procedure eingabe(var bruch1:t_Bruch;spalte:integer);
begin
gotoxy(spalte,15);
writeln('Geben sie einen Zähler ein: ');
gotoxy(spalte,8);
readln(bruch1.zaehler);
gotoxy(spalte,19);
writeln('Geben sie einen Nenner ein: ');
gotoxy(spalte,10);
readln(bruch1.nenner);
end;
function ggt(x,y:longint):longint;
begin
repeat
if x>y then x:=x-y else y:=y-x;
until x=y;
ggt:=x;
end;
PROCEDURE Kuerzen(VAR bruch1:t_Bruch);
VAR
iFaktor: longint;
BEGIN
iFaktor:=Ggt(bruch1.Zaehler,bruch1.Nenner);
bruch1.zaehler:=bruch1.zaehler DIV iFaktor;
bruch1.nenner:=bruch1.nenner DIV iFaktor;
END;
procedure eingabe_operator(var operator:char;spalte:integer);
begin
repeat
gotoxy(spalte,5);
writeln('Welchen Operator möchten Sie haben? (+,-,*,/)');
gotoxy(24,9);
readln(operator);
until operator IN ['+','-','*','/']
end;
function kgv(a,b:longint):longint;
begin
kgv:= a DIV ggt(a,b) * b;
end;
procedure addition(var bruch1,bruch2,ergebnisbruch:t_Bruch);
var k:longint;
begin
begin
ergebnisbruch.nenner:=kgv(bruch1.nenner,bruch2.nenner);
k:=kgv(bruch1.nenner,bruch2.nenner) * bruch1.zaehler;
ergebnisbruch.zaehler:=k + kgv(bruch1.nenner,bruch2.nenner) * bruch2.zaehler;
end;
Kuerzen(ergebnisbruch);
end;
procedure subtraktion(var bruch1,bruch2,ergebnisbruch:t_Bruch);
var k:longint;
begin
begin
ergebnisbruch.nenner:=kgv(bruch1.nenner,bruch2.nenner);
k:=kgv(bruch1.nenner,bruch2.nenner) * bruch1.zaehler;
ergebnisbruch.zaehler:=k - kgv(bruch1.nenner,bruch2.nenner) * bruch2.zaehler;
end;
Kuerzen(ergebnisbruch);
end;
procedure Multiplikation(var bruch1,bruch2,ergebnisbruch:t_Bruch);
begin
begin
ergebnisbruch.nenner:=bruch1.nenner * bruch2.nenner;
ergebnisbruch.zaehler:=bruch1.zaehler * bruch2.zaehler;
end;
Kuerzen(ergebnisbruch);
end;
procedure Division(var bruch1,bruch2,ergebnisbruch:t_Bruch);
begin
begin
ergebnisbruch.nenner:=bruch1.nenner * bruch2.zaehler;
ergebnisbruch.zaehler:=bruch1.zaehler * bruch2.nenner;
end;
Kuerzen(ergebnisbruch);
end;
procedure Ausgabe(ergebnisbruch:t_Bruch);
begin
gotoxy(56,8);
readln(ergebnisbruch.zaehler);
gotoxy(56,10);
readln(ergebnisbruch.nenner);
end;
function weiter:boolean;
var buchstabe:char;
begin
gotoxy(8,2);
writeln('wollen sie nocheinmal rechnen?dann j eingeben! ');
gotoxy(8,3);
readln(buchstabe);
if buchstabe ='j' then weiter:=true else
weiter:=false
end;
procedure Abschied;
begin
writeln('Danke das Sie mein Bruchrechnenprogramm benutzt haben');
readln;
end;
BEGIN
Initialisierung(bruch1,bruch2,ergebnisbruch); (* Variablen auf Null, Bildschirm frei usw.. *)
Maske; (* Bildschirm wird vorbereitet, Hinweise an Benutzer, Einteilung Brüche, Bruchstriche usw... *)
REPEAT
eingabe(bruch1, links);
kuerzen(bruch1);
eingabe_operator(operator,links);
eingabe(bruch2,rechts);
kuerzen(bruch2);
case operator of
'+' : Addition(bruch1, bruch2, ergebnisbruch);
'-' : Subtraktion(bruch1, bruch2, ergebnisbruch);
'*' : Multiplikation(bruch1, bruch2, ergebnisbruch);
'/' : Division(bruch1, bruch2, ergebnisbruch);
END;
kuerzen(ergebnisbruch);
Ausgabe(ergebnisbruch);
UNTIL NOT weiter;
Abschied; (* freundlich verabschiedet man sich vom Benutzer *)
END.
Ich hoffe ihr könnt mir helfen.
mfg Thomas
11 Re: Bruchrechenen
Autor: BP92
(R)
(IP bekannt)
Datum: 13. Jun. 2010 14:01
Hallo Thomas,
Quelltexte koennen auch angehaengt werden
Du verwendest WinCRT, arbeitest du mit Turbo Pascal fuer Windows oder mit der Windows Version von Borland Pascal 7?
Nun zu einer kleinen "Maengelliste", was ich an deinem Programm gefunden habe.
1. CLRSCR; gehoert in Maske(), nicht in Initialisierung()
2. ein BEGIN-END-Block in einer Prozedur reicht
3. Globale Variablen unmittelbar VOR dem Hauptprogramm deklarieren, also nach den Prozeduren und NICHT direkt nach TYPE, wozu ist sonst die Referenzuebergabe gut?!
4. CHARs mit READKEY einlesen, nicht READLN()
5. Wenn du WinCRT verwendest, dann schliesse das Fenster des Programms wieder mit DoneWinCRT
6. globale Variablen und lokale Variablen NICHT gleich benennen
7. Procedure Addition arbeitet falsch, den Zaehler des Ergebnisbruchs bekommst du so:
(Zaehler 1. Bruch)*(Hauptnenner/Nenner 1. Bruch) + (Zaehler 2. Bruch)*(Hauptnenner/Nenner 2. Bruch)
8. Subtraktion analog zu Addition
9. Prozedur Maske dann in der REPEAT Schleife aufrufen, damit der Bildschirm fuer jeden Durchgang wieder vorbereitet ist
Alles andere ist soweit i.O.
Im Anhang die reparierte Version 
--
PASCAL Programmierer aus Leidenschaft
Turbo Pascal Beispiele fuer Anfaenger: [www.webplain.de]
Momentane Projekte:
-----------------------
Konsolen-Adventure Game mit FreePascal (im Denkpause-Forum) [www.webplain.de]
Funktionsplotter und -rechner; Vorabversion gibt's hier: [www.webplain.de]
Objektorientierte Textmodus-GUI; Release-Termin: groesstenteils fertig
1 mal bearbeitet. Zuletzt am 13.06.10 14:46 von BP92.
Anhänge:
Hinweise
- Das hier ist kein Hausaufgabenservice. Konkrete Fragen werden natürlich gerne beantwortet.
- Probieren Sie doch zuerst die Suchfunktion aus und werfen Sie einen Blick in die FAQ.
- Ein aussagekräftiger Betreff ist wichtig, unter »HILFE!!!« kann man sich nichts vorstellen. Bitte nicht nur Großbuchstaben.
- Anhänge zu Ihrem Projekt (max. 250 KB) können helfen, das Problem schnell zu lösen.
- HTML-Tags sind aus Sicherheitsgründen nicht möglich.
- Quelltext können Sie mit
[code]Quelltext[/code]formatieren. - Alle weiteren möglichen Forum-Tags können Sie hier nachlesen.
Nach oben
© 2000-2010 Clemens Weiß | Webplain.de
Link zu dieser Seite | Letzte Änderung: 26. Okt. 2008
