Smash Opublikowano 9 Lutego 2006 Zgłoś Opublikowano 9 Lutego 2006 Witam! Stworzyłem liste dwukierunkową. Usuwanie wpisu odbywa za pomoca kursora http://www.toya.net.pl/~crisu/wpis.jpg Problem jest tylko taki Zrobiłem zabezpieczenie które sprawia, że uzytkownik nie moze wyjechac kursorem poza liste. Problem jednak jest w momencie gdy ktoś bedzie próbował sie "przebić' za ostatni element a nastepnie sprobuje usunac element np 2. Nastepuje tzn wysyp programu data *wypisz_usuwaj(struct data *wsk, struct data *pocz, struct data *kon){ data *uwsk; uwsk=pocz; char strzalka; int x=2; int y=4; if(pocz==NULL) { gotoxy(20,12);printf("Lista jest pusta!"); gotoxy(20,15);printf("Nacisni cos......!"); getch(); menu(); } else { gotoxy(x,y);printf("->"); int i=0; wsk=pocz; do { gotoxy(5,2);printf("Imie");gotoxy(27,2);printf("Nazwisko");gotoxy(47,2);printf("Telefon");gotoxy(57,2);printf("Data urodzenia"); gotoxy(5,i+4);printf("%s",wsk->imiona); gotoxy(27,i+4);printf("%s",wsk->nazwisko); gotoxy(47,i+4);printf("%d",wsk->telefon); gotoxy(57,i+4);printf("%d",wsk->urodziny); wsk=wsk->nastepny; i++; }while(wsk!=NULL); while(strzalka!=27) { strzalka=getch(); switch(strzalka) { case 80: // down if((y>i+2)) y=i+2; y++; if(uwsk==kon) uwsk->nastepny=uwsk; uwsk=uwsk->nastepny; gotoxy(x,y); printf("->"); gotoxy(x,y-1); printf(" "); break; case 72: //up if(y<5) y=5; y--; if(uwsk==pocz) //zabezpieczenie - wyjscie przed liste uwsk->poprzedni=uwsk; uwsk=uwsk->poprzedni; gotoxy(x,y); printf("->"); gotoxy(x,y+1); printf(" "); break; case 13: return uwsk; break; } } }return NULL;} wywołanie wsk3=wypisz_usuwaj(wsk,poczatek,koniec); if(wsk3!=NULL) usun(wsk3,&poczatek,&koniec); wsk3 to wskazni na strukture. kod http://www.toya.net.pl/~crisu/LISTA2.CPP exe http://www.toya.net.pl/~crisu/LISTA2.exe Aby obrazowo zobaczyc problem:) Najlepiej pobrac exe, stworzyc 3 wyrazy. ponaciskac troche strzałke w dół a nastepnei usunac element 2 i wyswietlic całosc:) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 10 Lutego 2006 Zgłoś Opublikowano 10 Lutego 2006 ja w takich sytuacjach.. uruchamiam program w trybie krokowym i podgladam po kolei zmienne i sprawdzam czy się zgadzaja z tym co powinno tam być... tym sposobem w pare chwil będziesz wiedział kiedy i skad pojawia się błędny wskaźnik... ręcznie jakoś nie lubie rozpatrywać co się dzieje w kodzie.. skoro od tego jest praca krokowa :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Smash Opublikowano 10 Lutego 2006 Zgłoś Opublikowano 10 Lutego 2006 (edytowane) a wiesz jak sie odpada w visualu taki tryb ? :) pod borlandem nie dziala mi klawisze F1 F2 itd wiec nie idzie odpalic programu:/ Edytowane 10 Lutego 2006 przez Smash Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
AnnihilatoR Opublikowano 10 Lutego 2006 Zgłoś Opublikowano 10 Lutego 2006 a wiesz jak sie odpada w visualu taki tryb ? :) Visual Studio, tak? Wciśnij F10. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...