Dynamická fronta – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dynamická fronta – Pascal – Fórum – Programujte.comDynamická fronta – Pascal – Fórum – Programujte.com

 

Erik
~ Anonymní uživatel
101 příspěvků
14. 10. 2012   #1
-
0
-

Pokoušel jsem se o dynamickou frontu a nejde mi to zkompilovat
, prosím o jakoukoli radu jak to zprovoznit.

type PPrvek=^TPrvek;

     TPrvek = record
        data: Integer;
        dalsi: PPrvek;
        end;
        
     TFronta = record
                   zacatek, konec: PPrvek;
               end;
               
var fronta: TFronta;

procedure initFronta(var fro: TFronta);
begin
      fro.zacatek:=nil;
end;

procedure vlozDoFronty(prvek: Integer; var fro: TFronta);
var pom: PPrvek;
begin
    if fro.zacatek<>nil then begin
      if fro.konec<>nil then begin
      new(pom);
      pom^.data:=prvek;
      pom^.dalsi:=nil;
      pom^.dalsi:=pom;
      fro:=pom;
      end;
      
      end else begin
      new(pom);
      pom^.data:=prvek;
      pom^.dalsi:=nil;
      fro:=pom;
      end;
end;

procedure uklidFrontu(var fro: TFronta);
var pom, pom2: PPrvek;
begin
    pom:=fro.zacatek;
    while pom <> nil do begin
        pom2:=pom;
        pom:=pom^.dalsi;
        dispose(pom2);
    end;
    fro.zacatek:=nil;
    fro.konec:=nil;
end;

procedure vyjmiAVypis(var fro: TFronta);
var pom: PPrvek;
begin
    if fro <> nil then begin
    writeln('Na zacatku fronty je: ',fronta^.data);
    pom:=fro;
    if pom^.dalsi <> nil then begin
          fro:=pom^.dalsi
    end else begin
              fro.zacatek:=nil;
             end;
             dispose(pom);
end;
end;

procedure vypisFrontu(fro: TFronta);
  var pom: PPrvek;
      i: integer;

begin
  i:=1;
    pom:=fro.zacatek;
    while pom <> nil do begin
                          writeln('Ve fronte je',i,': ', pom^.data);
                          inc(i);
                          pom:=pom^.dalsi;
                        end;
end;

begin
    initFronta(fronta);
    vlozDoFronty(1,fronta);
    vlozDoFronty(3,fronta);
    vlozDoFronty(4,fronta);
    vyjmiAFrontu(frontu);
    

end.
Nahlásit jako SPAM
IP: 195.178.73.–
KIIV
~ Moderátor
+43
God of flame
14. 10. 2012   #2
-
0
-

a ten pascal je takovy zverstvo ze ani neumi zobrazit chybove hlasky

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Erik
~ Anonymní uživatel
101 příspěvků
14. 10. 2012   #3
-
0
-

Free Pascal Compiler version 2.4.0 [2009/12/18] for i386
Copyright (c) 1993-2009 by Florian Klaempfl
Target OS: Win32 for i386
Compiling C:\Users\Zbyšek\Desktop\frontaPokus.pas
frontaPokus.pas(27,12) Error: Incompatible types: got "PPrvek" expected "TFronta"
frontaPokus.pas(28,12) Error: Incompatible types: got "PPrvek" expected "TFronta"
frontaPokus.pas(35,12) Error: Incompatible types: got "PPrvek" expected "TFronta"
frontaPokus.pas(55,12) Error: Operator is not overloaded
frontaPokus.pas(56,45) Error: Illegal qualifier
frontaPokus.pas(57,10) Error: Incompatible types: got "TFronta" expected "PPrvek"
frontaPokus.pas(59,19) Error: Incompatible types: got "PPrvek" expected "TFronta"
frontaPokus.pas(86,17) Error: Identifier not found "vyjmiAFrontu"
frontaPokus.pas(89,4) Fatal: There were 8 errors compiling module, stopping
Fatal: Compilation aborted
Error: C:\FPC\2.4.0\bin\i386-win32\ppc386.exe returned an error exitcode (normal if you did not specify a source file to be compiled)

Process completed, Exit Code 1.
Execution time: 00:00.814

Nahlásit jako SPAM
IP: 195.178.73.–
KIIV
~ Moderátor
+43
God of flame
14. 10. 2012   #4
-
0
-

Mas tam minimalne problemy s:    fro:=pom;  je to jiny datovy typ!

Muzes mi prosimte popsat jednotlive radky napriklad  vlozDoFronty ?  Nejak mi to nedava prilis smysl, tak co si pod tim predstavujes?  Proste obhajit si to co tam je.

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
14. 10. 2012   #5
-
0
-

Abych byl konkretni tak treba:

procedure vyjmiAVypis(var fro: TFronta);
var pom: PPrvek;
begin
  if fro <> nil then begin // fronta neni prazdna
    writeln('Na zacatku fronty je: ',fronta^.data); // vypsat prvek z nejake promenne "fronta" kdo vi kde defiovane
    pom:=fro; // do pom typu PPrvek hodime jen tak promennou fro typu TFronta
    if pom^.dalsi <> nil then begin // mrknem na dalsi
      fro:=pom^.dalsi // pokud dalsi neni nil tak hodime do "fro" (pro zmenu zase jiny typ)
    end else begin
      fro.zacatek:=nil; // jinak dame na zacatek nil (co konec? asi nic)
    end;
    dispose(pom); // a uvolnime pom ..
  end;
end;
Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Erik
~ Anonymní uživatel
101 příspěvků
14. 10. 2012   #6
-
0
-

Úpřímně to nevím mám naimplementovaný fronty a zasobníky z učebnic(Satrapa, Hála) a tam je to úplně jinak teďka ve škole jsme dělali tento a zas je to jinak docela mám v těch dynamických technikách zmatek. Právě se snažím do toho proniknout a naučit se nějaký univerzální řešení...

Nahlásit jako SPAM
IP: 195.178.73.–
KIIV
~ Moderátor
+43
God of flame
14. 10. 2012   #7
-
0
-

no musis projit co tam delas a pochopit

neni odveci si to i rozepsat/rozkreslit... v tom vkladani delasi i zacykleni a kdyz by se ti to nakonec povedlo i vlozit do doho zacatku a pripadne konce tak z toho mas problem

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

Podobná vlákna

Fronta(Struct) — založil Barda

Fronta - Simulace pošty — založil Kajo1354

Dynamická tabulka — založil pepaprogramator

Dynamická 2D pole — založil .

Moderátoři diskuze

 

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