#17 JoDiK
nic vzdávám se předám to tak. i tak dik
Příspěvky odeslané z IP adresy 46.229.224.–
peto1254
peto1254
#8 JoDiK
#6 JoDiK
Program evidencia;
uses crt;
type Uk=^prvok;
zoznam = record
odbor: string[20];
meno: string[20];
priez: string[20];
rok: integer;
end;
prvok= record
hod:zoznam;
dalsi:Uk;
end;
var prvy:Uk;
volba:integer;
vymaz, najdi:string;
procedure vloz;
var novy:Uk;
begin
new(novy);
write('Zadaj odbor: ');
readln(novy^.hod.odbor);
write('Meno: ');
readln(novy^.hod.meno);
write('Priezvisko: ');
readln(novy^.hod.priez);
write('rok narodenia: ');
readln(novy^.hod.rok);
novy^.dalsi:=prvy;
prvy:=novy;
writeln();
end;
procedure vypis;
var akt:Uk;
begin
akt:=prvy;
if akt<>nil then begin
writeln('Vypis evidencie:');
writeln;
writeln('odbor | meno | priezvisko | rok' );
writeln('-----------------------------------------------------------');
repeat
writeln(akt^.hod.odbor,akt^.hod.meno:15,akt^.hod.priez:13,akt^.hod.rok:16);
akt:=akt^.dalsi;
until akt=nil;
akt:=prvy;
end
else writeln('evidencia je prazdna.');
readln;
end;
procedure usporiadaj(var co:Uk);
var bublac :Uk ;
pompo : zoznam;
uzjedobublane : boolean;
begin
repeat
bublac:=co;
uzjedobublane:=true;
while bublac^.dalsi<>nil do begin
if bublac^.hod.odbor>bublac^.dalsi^.hod.odbor then begin
uzjedobublane:=false;
pompo := bublac^.hod;
bublac^.hod:= bublac^.dalsi^.hod;
bublac^.dalsi^.hod:= pompo;
end;
bublac:=bublac^.dalsi;
end;
until uzjedobublane;
end;
procedure vyhladaj(var x:string);
var akt,hladaj:Uk;
begin
akt:=prvy;
while ((akt<>nil) and (x=akt^.hod.odbor)) do begin
akt:= akt^.dalsi;
end;
if hladaj<>nil then begin
writeln('Vypis evidencie:');
writeln;
writeln('odbor | meno | priezvisko | rok' );
writeln('-----------------------------------------------------------');
repeat
writeln(akt^.hod.odbor,akt^.hod.meno:15,akt^.hod.priez:13,akt^.hod.rok:16);
akt:=akt^.dalsi;
until akt=nil;
repeat until keypressed;
writeln;
akt:=prvy;
end
else writeln('evidencia je prazdna.');
readln;
end;
procedure zrus(var x:string);
var akt,pom,zmaz: Uk;
begin
akt:=prvy;
pom:=nil;
while ((akt<>nil) and (akt^.hod.priez<>x)) do begin
pom:=akt;
akt:= akt^.dalsi;
end;
zmaz:=akt;
if zmaz=nil then begin
writeln('zadal si zle');
readln;
akt:=nil;
end
else begin if (zmaz=prvy) then begin
prvy:=prvy^.dalsi;
dispose(zmaz);
writeln;
writeln ('zaznam bol vymazany');
readln;
end
else begin
pom^.dalsi:=zmaz^.dalsi;
dispose(zmaz);
writeln;
writeln ('zaznam bol vymazany');
readln;
end;end;
end;
begin
prvy:=nil;
repeat
clrscr;
writeln('Evidencia studentov');
writeln;
writeln('Menu:');
writeln('1: Vlozit zaznam');
writeln('2: Vypis zaznamu');
writeln('3: Vyhladanie zaznamu');
writeln('4: Zrusenie zaznamu');
writeln('5: Koniec');
writeln;
writeln('Zadaj cislo operacie: ');
readln(volba);
case volba of
1:begin vloz;
usporiadaj(prvy);
end;
2:vypis;
3:begin
if (prvy=nil) then begin writeln('zoznam je prazdny');
readln;
continue;
end
else write('Zadaj odbor ktory chces hladat: ');
readln(najdi);
vyhladaj(najdi);
end;
4:begin
if (prvy=nil) then begin write('zoznam je prazdny');
readln;
continue;
end
else writeln('Zadaj priezvisko studenta ktoreho chces zrusit: ');
readln(vymaz);
zrus(vymaz);
end;
5:;
else writeln('zadal si zle, zadaj cisla od 1 po 4.');
end;
until volba=5;
end.
takto to vyzerá teraz
peto1254
#4 JoDiK
zadanie je :
Vytvor program na evidenciu študentov. Pri každom študentovi je nutné registrovať, priezvisko, rok narodenia, zameranie štúdia. Program bude ovládaný pomocou menu, pričom bude obsahovať procedúry na vkladanie, rušenie študenta a vyhľadanie podľa odboru ( po zadaní odboru ktorý chceme vyhľadať budú vypísaný všetci študenti tohto odboru). Na implementáciu použite spojový zoznam nie pole.
peto1254
Zdravím Potrebujem pomôcť z výpisom zoznamu. Vypisuje mi iba posledne zadaného v zozname v procedúre hladaj
Program evidencia;
uses crt;
type Uk=^prvok;
zoznam = record
odbor: string[20];
meno: string[20];
priez: string[20];
rok: integer;
end;
prvok= record
hod:zoznam;
dalsi:Uk;
end;
var prvy:Uk;
volba:integer;
vymaz, najdi:string;
procedure vloz;
var novy:Uk;
begin
new(novy);
write('Zadaj odbor: ');
readln(novy^.hod.odbor);
write('Meno: ');
readln(novy^.hod.meno);
write('Priezvisko: ');
readln(novy^.hod.priez);
write('rok narodenia: ');
readln(novy^.hod.rok);
novy^.dalsi:=prvy;
prvy:=novy;
writeln();
end;
procedure vypis;
var akt:Uk;
begin
akt:=prvy;
if akt<>nil then begin
writeln('Vypis evidencie:');
writeln;
writeln('odbor | meno | priezvisko | rok' );
writeln('-----------------------------------------------------------');
repeat
writeln(akt^.hod.odbor,akt^.hod.meno:15,akt^.hod.priez:13,akt^.hod.rok:16);
akt:=akt^.dalsi;
until akt=nil;
writeln();
akt:=prvy;
end
else writeln('evidencia je prazdna.');
readln;
end;
procedure vyhladaj(var x:string);
var akt,hladaj:Uk;
begin
akt:=prvy;
while ((akt<>nil) and ((Pos(x,akt^.hod.odbor)=0))) do begin
akt:= akt^.dalsi;
end;
hladaj:=akt;
if (hladaj<>nil) then begin
writeln('Hladany odbor:');
writeln;
writeln('odbor | meno | priezvisko | rok narodenia' );
writeln('-----------------------------------------------------------');
writeln(hladaj^.hod.odbor,hladaj^.hod.meno:15,hladaj^.hod.priez:13,hladaj^.hod.rok:16);
end
else writeln('odbor neexistuje');
readln;
end;
procedure zrus(var x:string);
var akt,pom,zmaz: Uk;
begin
akt:=prvy;
pom:=nil;
while ((akt<>nil) and (akt^.hod.priez<>x)) do begin
pom:=akt;
akt:= akt^.dalsi;
end;
zmaz:=akt;
if zmaz=nil then begin
writeln('zadal si zle');
readln;
akt:=nil;
end
else begin if (zmaz=prvy) then begin
prvy:=prvy^.dalsi;
dispose(zmaz);
writeln;
writeln ('zaznam bol vymazany');
readln;
end
else begin
pom^.dalsi:=zmaz^.dalsi;
dispose(zmaz);
writeln;
writeln ('zaznam bol vymazany');
readln;
end;end;
end;
begin
prvy:=nil;
repeat
clrscr;
writeln('Evidencia studentov');
writeln;
writeln('Menu:');
writeln('1: Vlozit zaznam');
writeln('2: Vypis zaznamu');
writeln('3: Vyhladanie zaznamu');
writeln('4: Zrusenie zaznamu');
writeln('5: Koniec');
writeln;
writeln('Zadaj cislo operacie: ');
readln(volba);
case volba of
1:vloz;
2:vypis;
3:begin
if (prvy=nil) then begin writeln('zoznam je prazdny');
readln;
continue;
end
else write('Zadaj odbor ktory chces hladat: ');
readln(najdi);
vyhladaj(najdi);
end;
4:begin
if (prvy=nil) then begin write('zoznam je prazdny');
readln;
continue;
end
else writeln('Zadaj priezvisko studenta ktoreho chces zrusit: ');
readln(vymaz);
zrus(vymaz);
end;
5:;
else writeln('zadal si zle, zadaj cisla od 1 po 4.');
end;
until volba=5;
end.
ďakujem