Witam.
Mam do napisania w Free Pascalu program, który będzie liczył ułamki zwykłe dodawanie, odejmowanie, mnożenie, dzielenie,skracanie. Większość procedur i funkcji mam utworzyć w module stworzonym przeze mnie. Pięknie ładnie napisałem ale moduł sypie błędami jak w zime.
Unit ulamki;
Interface
Uses crt;
function nwd(a,b:integer):integer;
// NWD
function nww(a,b:integer):integer;
//NWW
procedure wspolne_mianowniki(var licznik,licznik1:real; var mianownik,miannownik1:integer);
// WSPOLNE MIANOWNIKI
procedure skracanie_ulamkow(var licznik,mianownik:integer);
// SKRACANIE ULAMKOW
procedure dodawanie(licznik1:real; var licznik:real);
// DODAWANIE
procedure odejmowanie(licznik1:real; var licznik:real);
// ODEJMOWANIE
procedure mnozenie(licznik1,mianownik1:real; var licznik,mianownik:real);
// MNOZENIE
procedure dzielenie(licznik1,mianowni1:real; var licznik,mianownik:real);
// DZIELENIE
IMPLEMENTATION
function nwd(a,b:integer):integer;
var c:integer;
begin
WHILE b<>0 DO
begin
c := a mod b;
a := b;
b := c;
end;
nwd:=a;
end;
function nww(a,b:integer):integer;
var ab:integer;
begin
ab:=a*b;
nww:=ab div nwd(a,b);
end;
procedure wspolne_mianowniki(var licznik,licznik1:real; var mianownik,mianownik1:integer);
var c:integer; // zmienna przechowujaca NWW
begin
c:=nww(mianownik,mianownik1);
mianownik:=c;
mianownik1:=c;
licznik:=licznik*(c/mianownik);
licznik1:=licznik1*(c/mianownik1);
end;
procedure skracanie_ulamkow( var licznik,mianownik:integer);
var a:real;
begin
a:=licznik; // po skroceniu licznika aby zachowac takie same nwd w mianowniku
licznik:=licznik/nwd(licznik,mianownik);
mianownik:=mianownik/nwd(a,mianownik)
end;
procedure dodawanie(licznik1:real; var licznik:real):
begin
licznik:=licznik+licznik1;
end;
procedure odejmowanie(licznik1:real; var licznik:real):
begin
licznik:=licznik-licznik1;
end;
procedure mnozenie(licznik1,mianownik1:real; var licznik,mianownik:real):
begin
licznik:=licznik*licznik1;
mianownik:=mianownik*mianownik1;
end;
procedure dzielenie(licznik1,mianowni1:real; var licznik,mianownik:real);
var a:integer;
begin
mnozenie(mianownik1,licznik1,licznik,mianownik);
end;
end.
Błędy:
*ulamki.pas(50,11) Error: function header "wspolne_mianowniki" doesn't match forward : var name changes miannownik1 => mianownik1 *
procedure wspolne_mianowniki(var licznik,licznik1:real; var mianownik,mianownik1:integer);
Ten kod błędu widzę po raz pierwszy.
- ulamki.pas(53,28) Error: Identifier not found "mianownik1" *
- ulamki.pas(55,11) Error: Identifier not found "mianownik1" *
- ulamki.pas(57,33) Error: Identifier not found "mianownik1" *
mianownik:=c;
mianownik1:=c;
licznik:=licznik*(c/mianownik);
Rozumiem identyfikator nie znaleziono ale dlaczego jeśli mam w procedurze ?
procedure wspolne_mianowniki(var licznik,licznik1:real; var mianownik,mianownik1:integer);
Reszta błędów to zupełna czarna magia i tym bardziej absurdalne
- ulamki.pas(65,17) Error: Incompatible types: got "Extended" expected "SmallInt" *
- ulamki.pas(66,27) Error: Incompatible type for arg no. 1: Got "Real", expected "SmallInt" *
- ulamki.pas(69,53) Error: Fields cannot appear after a method or property definition, start a new visibility section first *
- ulamki.pas(72,1) Fatal: Syntax error, "BEGIN" expected but "END" found *
- ulamki.pas(0) Fatal: Compilation aborted *
Dziękuje za wszelaką pomoc.