Obsah fóra
PravidláRegistrovaťPrihlásenie




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

Užívateľ
Užívateľ
Nepochopitelne reagovanie

Registrovaný: 19.09.09
Prihlásený: 12.09.13
Príspevky: 359
Témy: 55
Bydlisko: Rohožník
Príspevok NapísalOffline : 07.03.2011 18:56

Zdravím vás!

Mám fakt dost závažný problém. Potrebujem to do školy, pracujem na tom programe už asi 7 hodín, 2 hodiny teraz riešim tento kód:
Kód:
data* vymaz(data* prvy)
{
     int vol; int i;
     data* aktualny = prvy;
        data* back=NULL;
        system("CLS");
        
       for(i=0;aktualny!= NULL;i++)
            {
               printf("ID:          %i \n", aktualny->c);
               printf("i %i\n",i);
               printf("1) vymazat tento\n2)skok na dalsi zaznam\n");
               scanf("%i",&vol);
                if (vol==1)
                     {
                         
                               
                           if(i=0)
                               {
                               prvy=aktualny->next;
                               free(aktualny);
                               return prvy;
                            break;    }
                           if(i!=0)
                               {
                                back->next=aktualny->next;
                                free(aktualny);
                                return prvy;
                                 }
                           
                      }                               
                  if (vol==2)
                       {   
                        back=aktualny;               
                       aktualny = aktualny->next;
                    
                       if (aktualny==NULL) { printf("\nSi na konci zoznamu!\n"); return prvy; }
                      }   
       
       
            }
                 
     }
         


Úlohou tento funkcie je, aby vymazala iba jeden prvok zo zreťazeného zoznamu (štruktúra), ktorý mám zadefinovaný takto:

Kód:
struct data
{
       int c;
        data* next;
       };


Samozrejme vytvorím zoznam, vypíšem (cez mnou vytvorenu funkciu print(data* prvy), prvy ukazuje na zaciatok zoznamu), všetko je vporiadku.
Funkcia vymaz má za úlohu, ponúknuť vymazanie aktualne zobrazeneho prvku alebo posun na dalsi (a jeho vymazanie) a ak príjde k vymazaniu, tak funkcia vráti ukazuvatel na zaciatok pola, resp. prvy=vymaz(prvy).
Premenna i slúži ako kontrola (preto ten cyklus ... skúšal som aj iné, no nič nepomáha), či je aktualny prvok prvy, ak je, tak prvy bude ukazovat na nasledovníka a vymazem predchodcu ... pre dalsie prvky zoznamu je pomocny smerník back, ten sa "aktivuje" až keď prejdem 1. prvok.

No a mne to absolutne nechce nic mazat, navyse mi to vypisuje nepochopitelne ine hodnoty i nez by mali byt v tom cykle ....

Prosím vás ... kde je chyba? naozaj ma uz z toho boli hlava ... Ďakujem!


Offline

Skúsený užívateľ
Skúsený užívateľ
Nepochopitelne reagovanie

Registrovaný: 11.01.09
Prihlásený: 28.03.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 07.03.2011 19:53

1.)
Kód:
if(i=0)

Opravit na if( i == 0 )

2.)
Kód:
return prvy;
break;    }

Break je tam zbytocny. Po return sa k nemu nedojde. Nie je to chyba, ale nevyzera to pekne.

Dalej som si nevsimol nic nespravne, ale neskusal som to. ( Funkcia ti stale vrati prvu bunku zoznamu, neviem, ci to tak chces, kedze ho mas aj v parametri funkcie ako pointer ).


Offline

Užívateľ
Užívateľ
Nepochopitelne reagovanie

Registrovaný: 19.09.09
Prihlásený: 12.09.13
Príspevky: 359
Témy: 55
Bydlisko: Rohožník
Príspevok Napísal autor témyOffline : 07.03.2011 20:24

No o tom break viem ... ved hovorím, skúšal som všeličo, stále mi to blblo :D
No aká primitívne hlúpa blbosť ako i=0 mi to kazila ... teraz už všetko ide tak ako má =)

Ďakujem ;-)


Offline

Skúsený užívateľ
Skúsený užívateľ
Nepochopitelne reagovanie

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66
Bydlisko: Žilina
Príspevok NapísalOffline : 07.03.2011 21:12

Citácia:
Nie je to chyba, ale nevyzera to pekne.

podľa toho, čo považuješ za "chybu".. ak len to, že ti to neprejde cez kompilátor, tak beriem, v tom prípade by to nebola chyba, ale podľa hocijakých iných ohodnotení správneho kódu to chyba je. Nemá to tam čo robiť a ak je to tam človek schopný napísať, znamená to, že nerozumie danému programovaciemu jazyku.







_________________
C#, PHP, ...
Odpovedať na tému [ Príspevkov: 4 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Samovolné reagovanie klávesy Backspace

v Externé zariadenia

1

299

11.01.2015 11:34

carl65 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. V IE8 zmizne nepochopiteľne menu

v HTML, XHTML, XML, CSS

11

732

18.02.2012 11:46

89Aquarius 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