Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 7 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.09
Prihlásený: 30.06.11
Príspevky: 26
Témy: 8
Príspevok NapísalOffline : 07.05.2010 12:38

Ahojte potreboval by som pomoc s mojim programom. Jedna sa o smerniky v pascale a problem mam s mazanim smernika a hladanim smernika.
Mozte sa nato pozret a podarit mi. Uz sa s tym trapim dost a nejak stale mi to nejde.
Aj si to kreslim na papier a nic.

Kód:
PROGRAM ZVIERATKA;
TYPE UK=^ZVIERA;
     ZVIERA=RECORD
     MENO:STRING[50];
     DRUH:STRING[50];
     MAJITEL:STRING[50];
     DALSI:UK;
          END;
VAR R:UK;
    A:CHAR;

PROCEDURE VLOZ (VAR Z:UK);
VAR PP:UK;
    MENO:STRING;
    DRUH:STRING;
    MAJITEL:STRING;

BEGIN
NEW (PP);
WRITELN ('ZADAJ MENO ZVIERATA');
READLN (MENO);
PP^.MENO:=MENO;
WRITELN ('ZADAJ DRUH ZVIERATA');
READLN (DRUH);
PP^.DRUH:=DRUH;
WRITELN ('ZADAJ MAJITELA');
READLN (MAJITEL);
PP^.MAJITEL:=MAJITEL;
PP^.DALSI:=Z;
Z:=PP;
END;

PROCEDURE VYPIS (Z:UK);
VAR PP:UK;
BEGIN
PP:=Z;
WRITELN ('MENA ZVIERAT SU:');
WHILE (PP<>NIL) DO BEGIN
WRITELN (PP^.MENO,' ');
PP:=PP^.DALSI;
                   END;
END;

PROCEDURE ZRUS (VAR Z:UK);
VAR Q,PP:UK;
    MENO:STRING;
BEGIN
WRITELN ('ZADAJ MENO ZVIERATA KTOREHO POLOZKU CHCETE ZRUSIT');
READLN (MENO);
PP:=Z;
IF (MENO=PP^.MENO) THEN BEGIN
Z:=Z^.DALSI;
DISPOSE (PP);
                        END
ELSE
Z:=Z^.DALSI;
WHILE PP<>NIL DO BEGIN
IF (Z^.MENO=MENO) THEN BEGIN
Z:=Z^.DALSI;
Q:=PP;
PP:=PP^.DALSI;
Q^.DALSI:=Z^.DALSI;
DISPOSE (PP);
                        END;
                        END;
END;

FUNCTION HLADAJMAJITEL (Z:UK):UK;
VAR PP:UK;
    X:STRING;

BEGIN
HLADAJMAJITEL:=NIL;
PP:=Z;
IF (Z=NIL) THEN BEGIN
    WRITELN ('ZOZNAM JE PRAZDNY');
    EXIT;
                END;
WRITELN ('ZADAJ MAJITELA');
READLN (X);
BEGIN
WHILE (PP<>NIL) DO BEGIN
 IF (X=PP^.MAJITEL) THEN BEGIN
  WRITELN ('PRVOK SA NASIEL',X);
  HLADAJMAJITEL:=PP;
  BREAK;
                         END;
                   END;
END;
END;

FUNCTION HLADAJDRUH (Z:UK):UK;
VAR PP:UK;
    X:STRING;

BEGIN
HLADAJDRUH:=NIL;
PP:=Z;
IF (Z=NIL) THEN BEGIN
    WRITELN ('ZOZNAM JE PRAZDNY');
    EXIT;
                END;
WRITELN ('ZADAJ DRUH ZVIERATA');
READLN (X);
BEGIN
WHILE (PP<>NIL) DO BEGIN
 IF (X=PP^.DRUH) THEN BEGIN
  WRITELN ('PRVOK SA NASIEL',X);
  HLADAJDRUH:=PP;
  BREAK;
                         END;
                   END;
END;
END;


BEGIN
REPEAT
WRITELN ('V - VLOZENIE NOVEJ POLOZKY');
WRITELN ('Z - ZRUSENIE EVIDENCIE');
WRITELN ('M - HLADANIE PODLA MAJITELA');
WRITELN ('D - HLADANIE PODLA DRUHU');
WRITELN ('K - KONIEC PROGRAMU');
WRITELN ('U - VYPIS MIEN ZVIERAT');
READLN (A);
CASE A OF
'V': VLOZ (R);
'U': VYPIS (R);
'Z': ZRUS (R);
'M': HLADAJMAJITEL (R);
'D': HLADAJDRUH (R);
END
UNTIL (A='K');
END.


Prosim Vas kto vie pomozte mi :) Dakujem velmi pekne :)[/code]


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 07.05.2010 12:59

co znamena "nejak mi to nejde" ? pada to na nejakej chybe ? alebo to neodmazava ? alebo ako si to mame vysvetlit ?

pozri si vyhladavania, pokial das hladat prvok ktory je najdeny hned prvy tak je to OK, no pokial prvy najdeny prvok nesedi tak kde nacitavas nasledujuci prvok ? ved ti to padne do nekonecnej slucky !


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.09
Prihlásený: 30.06.11
Príspevky: 26
Témy: 8
Príspevok Napísal autor témyOffline : 07.05.2010 15:33

Program mi spusti a zadavanie novych poloziek mi tiez funguje ale problem je ze nemozem zmazat polozky - ked to dam tak mi bud sa spusti cyklus ktory trva stale a tak musim potom vypnut cely program alebo mi vypise chybu a spadne program ...
A ohladom hladania tak prvy prvok mi vie najst ale dalsie uz nie a ked chcem dat vyhladat dalsie tak mi hodi nekonecny cyklus a mam zasa program dole...

Potrebujem to aby mi niekto povedal a ak je to aj mozne aby mi ukazal ako by to malo byt spravne.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 07.05.2010 19:53

si robis srandu ? vo vyhladavacom cykle stale testujes tu istu hodnotu
Kód:
WHILE (PP<>NIL) DO BEGIN
  IF (X=PP^.DRUH) THEN BEGIN
    WRITELN ('PRVOK SA NASIEL',X);
    HLADAJDRUH:=PP;
    BREAK; // ak najdes prvok tak cyklus skonci
  END;
  // ak prvok nenajdes tak by bolo vhodne ho vymenit za dalsi
 PP := PP^.DALSI;
END;

ohladom padania pri mazani , bolo by vhodne najprv otestovat
ci Z^.DALSI obsahuje nejaky pointer a az potom ho priradit


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.09
Prihlásený: 30.06.11
Príspevky: 26
Témy: 8
Príspevok Napísal autor témyOffline : 08.05.2010 20:41

Takze vyhladavanie som uz upravil a vsetko mi ide v poriadku.
Ale s tym mazanim to je stale zle. Mam mazanie zatial spravene tak ze ak je prazdny zoznam tak mi napise ze je prazdny teda je to v poriadku, dalej mam spravene aj to ze prvy prvok mi vie zmazat teda aj toto je v poriadku a mam spravene aj to ze od druheho a dalej tak ked chcem vymazat tak mi spravi to ze mi vymaze ale aj so vsetkym co mam predtym teda problem je vtom (odhadujem) ze sa mi pretrhol spojovy zoznam a nejak neviem napojit prvy a treti prvok aby som mohol ten druhy zmazat.
Neviem ci chapes co myslim ? Dufam ze ano


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 09.05.2010 21:51

no toto by malo fungovat
Kód:
PROCEDURE ZRUS (VAR Z:UK);
VAR Q,PP:UK;
    MENO:STRING;
BEGIN
  PP:=Z;
  Q := Z;
  IF (Z=NIL) THEN BEGIN
    WRITELN ('ZOZNAM JE PRAZDNY');
    EXIT;
  END;
  WRITELN ('ZADAJ MENO ZVIERATA KTOREHO POLOZKU CHCETE ZRUSIT');
  READLN (MENO);
  BEGIN
    WHILE (PP<>NIL) DO BEGIN
      IF (MENO=PP^.MENO) THEN BEGIN
        if Z = PP then  begin // ak pp je najvyssi prvok
          if PP^.dalsi <> nil then  // ak existuju aj nasledujuci prvok
            Z := PP^.dalsi  // posuniem nasledujuci prvok na prve miesto
          else
            Z := nil; // zrusim aktualny a zaroven jediny prvok
         end
        else
          if PP^.dalsi <> nil then  // ak existuju aj nasledujuci prvok
            Q^.dalsi := PP^.dalsi  // posuniem nasledujuci prvok na miesto vymazaneho
          else
            Q^.dalsi := nil;  //neexistuje dalsi prvok takze iba zrusim odkaz na vymazany prvok

        DISPOSE(PP);
        BREAK;
      END;
      Q := PP; // ak sa prvok nezhoduje odlozim si ho koli reorganizacii
      PP := PP^.DALSI; // posuniem sa na dalsi prvok
    END;
  END;
END;


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.09
Prihlásený: 30.06.11
Príspevky: 26
Témy: 8
Príspevok Napísal autor témyOffline : 10.05.2010 17:37

Ok coldak dakujem velmi pekne :)
Program je hotovy a funguje vsetko ako ma.
Este raz dakujem
Moderatori mozte temu zatvorit!


Odpovedať na tému [ Príspevkov: 7 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Problem s mazanim DVD RW

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Optické zariadenia

58

3520

06.01.2008 16:57

jarod242 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [VYRIESENE] Problem s mazanim textu v retazci

v PHP, ASP

1

386

16.03.2009 8:21

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pochopenie smernikov v jazyku C

v Assembler, C, C++, Pascal, Java

10

8149

09.10.2014 8:24

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. DYNAMICKE vs. STATICKE pole smernikov !!!SUUURNE!!!

v Assembler, C, C++, Pascal, Java

6

2052

11.05.2009 8:48

sangokoko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Suma členov matice pomocou smerníkov ( v C-ečku )

v Assembler, C, C++, Pascal, Java

1

1149

28.03.2009 10:05

neutronmind Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Staticke pole smernikov a jeho polozky - alokacia pamate

v Assembler, C, C++, Pascal, Java

6

1400

27.03.2009 17:42

programator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Free Pascal a Turbo Pascal

v Assembler, C, C++, Pascal, Java

0

384

19.12.2014 13:18

Styracoz Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal problem

v Assembler, C, C++, Pascal, Java

4

455

12.09.2012 7:43

strider Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal zdrojový kód-Problém

v Assembler, C, C++, Pascal, Java

2

367

11.04.2012 1:34

Gregi555 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal: problem s retazcom

v Assembler, C, C++, Pascal, Java

2

540

23.06.2008 17:30

petos Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal-problém s FILE

v Assembler, C, C++, Pascal, Java

18

1136

14.01.2008 12:59

hawe Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal - problem s ulohou(subory)

v Assembler, C, C++, Pascal, Java

3

963

14.12.2009 18:39

Proxy69 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal:problem s otvaranim Unit subormi

v Assembler, C, C++, Pascal, Java

6

953

28.06.2008 2:11

Roberbo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problem s windowsem 7 pro free pascal

v Assembler, C, C++, Pascal, Java

3

480

24.12.2010 16:25

Goergius Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal

v Assembler, C, C++, Pascal, Java

7

832

14.05.2011 20:04

F3RY Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal

v Assembler, C, C++, Pascal, Java

6

731

08.01.2009 17:45

majka090 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra