Napisalem program w pascalu:
[code]
uses crt;
type
Tosoba= Record
nazwisko: string[20];
imie: string[15];
rok_urodz: integer;
end;
var
o1,o2,o3: Tosoba;
procedure wyswietl_dane(osoba: Tosoba);
begin
with osoba do
begin
writeln('Nazwisko: ',nazwisko);
writeln('Imie: ',imie);
writeln('Rok urodzenia: ',rok_urodz);
end;
end;
procedure wczytaj_dane(osoba: Tosoba);
begin
with osoba do
begin
write('Nazwisko: ');
readln(nazwisko);
write('Imie: ');
readln(imie);
write('Rok urodzenia: ');
readln(rok_urodz);
end;
end;
begin
clrscr;
wczytaj_dane(o1);
writeln;
writeln ('Wprowadzone dane: ');
wyswietl_dane(o1);
readkey;
end.
[/code]
Niestety gdzieś jest błąd - procedura wczytująca dane wczytuje je nie wiedomo gdzie - procedura wyświetlająca wyświetla pusty rekord nie zawierający danych, które wcześniej się wprowadzi.
Jeśli natomiast do wczytania danych użyję funkcji, np:
[code]
uses crt;
type
Tosoba= Record
nazwisko: string[20];
imie: string[15];
rok_urodz: integer;
end;
var
o1,o2,o3: Tosoba;
function wczytaj_nazwisko: string;
var nazwisko: string;
begin
write ('Podaj nazwisko osoby: ');
readln (nazwisko);
wczytaj_nazwisko:=nazwisko;
end;
function wczytaj_imie: string;
var imie: string;
begin
write ('Podaj imie osoby: ');
readln (imie);
wczytaj_imie:=imie;
end;
function wczytaj_rok_urodz: integer;
var rok: integer;
begin
write ('Podaj rok urodzenia osoby: ');
readln (rok);
wczytaj_rok_urodz:=rok;
end;
procedure wyswietl_dane(osoba: Tosoba);
begin
with osoba do
begin
writeln('Nazwisko: ',nazwisko);
writeln('Imie: ',imie);
writeln('Rok urodzenia: ',rok_urodz);
end;
end;
begin
clrscr;
o1.nazwisko:= wczytaj_nazwisko;
o1.imie:= wczytaj_imie;
o1.rok_urodz:= wczytaj_rok_urodz;
writeln;
writeln ('Wprowadzone dane: ');
wyswietl_dane(o1);
readkey;
[/code]
Gdzie robię błąd? Chodzi o procedurę wczytującą dane:
[code]
procedure wczytaj_dane(osoba: Tosoba);
begin
with osoba do
begin
write('Nazwisko: ');
readln(nazwisko);
write('Imie: ');
readln(imie);
write('Rok urodzenia: ');
readln(rok_urodz);
end;
end;
[/code]
która w/g mnie jest prawidłowa, a jednak po jej wywołaniu:
[code]
wczytaj_dane(o1);
[/code]
dane wczytują się nie tam, gdzie bym się spodziewał.
Proszę o pomoc w rozwiązaniu problemu.