Anonymní profil peto1254 – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peto1254 – Programujte.comAnonymní profil peto1254 – Programujte.com

 

Příspěvky odeslané z IP adresy 46.229.224.–

peto1254
Pascal › Spojový zoznam
13. 6. 2013   #178007

#17 JoDiK
nic vzdávám se předám to tak. i tak dik

peto1254
Pascal › Spojový zoznam
13. 6. 2013   #178000

#14 JoDiK
hladaj:=akt;

if hladaj<>nil  then begin

promiň 

tak že odstrániť repeat until ?

a jak to neoddělím?

peto1254
Pascal › Spojový zoznam
13. 6. 2013   #177996

#10 JoDiK
ne, stále vypisuje všechny obory při vyhledávání, a potřebuji aby vypsalo pouze ten který jsem dal vyhledat

peto1254
Pascal › Spojový zoznam
13. 6. 2013   #177994

#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
Pascal › Spojový zoznam
13. 6. 2013   #177992

#6 JoDiK
dal som x=akt^.hod.odbor namiesto Pos(x,akt^.hod.odbor)=0) a teraz mi už vypisuje stále všetkých čo sú v zozname predtým ak som zadal tých ktorý boli na konci zoznamu tak vypisalo iba tých ešte som ich vytriedil bublesoftom

peto1254
Pascal › Spojový zoznam
13. 6. 2013   #177990

#6 JoDiK
hej to už som opravil  cer repeat until 

peto1254
Pascal › Spojový zoznam
13. 6. 2013   #177958

#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
Pascal › Spojový zoznam
13. 6. 2013   #177941

#2 JoDiK
Nejak mi to nejde keď zadám znova iné slovo na vyhľadavanie vypíše mi aj  tých ktorých nechcem aby vypísalo ktorých som nedal vyhľadať 

peto1254
Pascal › Spojový zoznam
12. 6. 2013   #177916

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

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý