marcinekm681 Napisano Maj 26, 2007 Zgłoś Share Napisano Maj 26, 2007 Witam Chciałbym napisać procedurke dołączającą na początek listy element. Niestety próbuje to zrobić ale z marnym skutkiem:-( (procedura dolacznapoczatek). Jak by ktos wiedział jak ją by poprawić byłbym bardzo wdzięczny. Z góry dziękuje za jakąkolwiek pomoc. Program mojalista; uses crt2; type wsk=^elem; elem= record[[OXĆvĆvw6łVćCf f'7Cw6łĆłFWC6ĆźŃ()ąŃĄŹŃ( pom,bierz:wsk; begin new(pom); pom^.l:=x; pom^.nas[[YYO[[[YNB[b&Vv&W'ŁŁW'w7vĆR&W'ćć7BfCfwCź(x(x(; end; procedure wypiszListe(pierwszy:wsk); begin whilHYI[Y[][YW NW'w7ŁW'w7ćć7CVćCVćC&6VGW&RvAĄŹ((Ź((Ąąierwszy<>nil do begin pom:=pierwszy^.nast; JYJNYNN[[VGW&RFĆ7Ść7ŚFVf\"W'w7w6f\"EĆ7FśVĆŹ(((Ąą(ąx9ą(eleme^.nast:=pierwszy; pierwszy:=eleme; end; var L1:T_NQSYZ NL^ZGBb33&W6WBĆf'7CŁćvĆRćB6VVśVbąŹź((ĄąŹąąź(ąŃĄslowo); end; close(plik); wypiszliste(first); X]ZĘ NZ[ZYXĘ NXYTB Link do komentarza Udostępnij na innych stronach More sharing options...
TSr Napisano Maj 26, 2007 Zgłoś Share Napisano Maj 26, 2007 Trochę to zakręcone. W procedurze DoListy powinno być coś takiego, że jeśli pierwszy = nil to pierwszy := pom, a jeśli nie to pom^.nast := pierwszy i pierwszy := pom. Przeanalizuj to wszystko krok po kroku i sam powinieneś dojść. Ubuntu.pl user #10593 Link do komentarza Udostępnij na innych stronach More sharing options...
marcinekm681 Napisano Maj 26, 2007 Autor Zgłoś Share Napisano Maj 26, 2007 No dzięki:-) Tylko że procedurka dolisty według mnie działa dobrze, a ten algorytm to mi napisał wykładowca, więc chyba jest ok. Dołączanie elementu na początek za to nie działa napewno:-(( Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Maj 26, 2007 Zgłoś Share Napisano Maj 26, 2007 Procki wygladaja ok, na pierwszy rzut oka nie widze w nich bledu. Czym sie objawia nieprawidlowe dzialanie ? Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
marcinekm681 Napisano Maj 26, 2007 Autor Zgłoś Share Napisano Maj 26, 2007 Przerobiłem tą procedurke troche inaczej.(taką miałem w podręczniku). I da sie dodać element, ale tylko raz. Dlaczego Program mojalista; uses crt2; type wsk=^elem; elem= reco[[w6łĆłFWC6Ćvó7G&ćswŚ6#&6VGWąŃĄŹŃ((ąŹ begin new(pom); pom^.l:=x; pom^.nast:=nil; iYO[[[YNB[BY[&W'ŁŁW'w7vĆR&W'ćć7BfCfwCćFx(x(( end; procedure wypiszListe(pierwszy:wsk); begin whilHYI[Y[][YWW'w7ŁW'w7ćć7CVćCVćC&6VGWąAĄŹ((Ź( while pierwszy<>nil do begin pom:=pierwszWJYJNYNN[CVćC&6VGW&RFĆ7Ść7ŚFV7G&ćrf\"wŹŃ(((ŃĄ( new(first); writeln('nowy element'); read©; X[[[[bY[Wrw&FVĆb33śćwb33&VB2ćŁ3((((((((( delete(idx:integer); var p,q:wsk; i:integer; begin YY[NH HYY[ŁŁćć7CVćCćć7CŁćć7CFĄ( (((((( %8((ą clrscr; assign(plik,'d:\wskaznik.txt'); ] ZĘN[[[HYZ[ZĘH&Vv&VBĆ6ĆvFĆ7Gf'7B6Ćv((ąĄąŹ(((Ńą1 wypisz liste'); writeln('2 dolacz na p[oczateNĘN][ NZ[ZYXNĘN][wŁ&VFśW66Rw&\"`b33łb33łwąŃĄ(ąŃŹĄąź( '3': zwolnijpamiec(first); else clrsc][ NXYINĘN[[wb33łsTB Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Maj 26, 2007 Zgłoś Share Napisano Maj 26, 2007 no nie dziwie sie, skoro na chama ustawiasz nast = nil to nic wiecej nie dodasz... ale idziesz w dobrym kierunku, chociaz nie odpowiedziales na pytanie... Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
marcinekm681 Napisano Maj 27, 2007 Autor Zgłoś Share Napisano Maj 27, 2007 Nie działa mi właśnie to że nie moge dodawać wielu elementów, a tylko raz moge:-(. Nie wiem o którą ci procedure Toster chodzi, że ustawiam nas=nil?? Chodzi ci o procedure dołącznia na początek?? Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Maj 27, 2007 Zgłoś Share Napisano Maj 27, 2007 tak. Skoro w tej procce dodajesz cos na poczatku to nast powinno wskazywac nil jesli lista byla pusta lub dawny pierwszy element. Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
marcinekm681 Napisano Maj 27, 2007 Autor Zgłoś Share Napisano Maj 27, 2007 Chyba jestem głupi, albo my o czym innym rozmawiamy:-)) Napisze ci po koleji co w mam na mysli robiąc moją procedure( w necie spotkałem niemal identyczną). [pascal][/pascal] Byłbym bardzo wdzięczny gdybyś mógł mi ja poprawić bo ja juz opadam z sił. Szlak mnie bierze bo wciąż nie wiem o co chodzi:-(( Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Maj 27, 2007 Zgłoś Share Napisano Maj 27, 2007 Zamiast lamentowac wez kartke i sobie narysuj. Ja tak uczylem sie pisac kolejke, jak zalapiesz o co chodzi to zobaczysz ze jest to proste. jesli masz zmienna o nazwie np Poczatek. i jest ona wskaznikiem na wezel, ktory to wezel moze wskazywac na kolejny wezel itd. to zastanow sie jakie moga wystapic sytuacjie: 1) poczatek = nil, czyli kolejki wogole nie ma. Jesli wiec dolaczasz cos na poczatek to to co stworzyles powinno byc wskazywane przez zmienna poczatek. Natomias Nast = nil. (bo nie bylo kolejki) 2) poczatek nil, czyli wskazuje na jakas liste. Czyli tworzysz nowy wezel nazwijmy go wez1. Teraz wez1.nast = poczatek, dlaczego ? bo nie chcemy stracic tego co juz bylo w kolejce. Na sam koniec poczatek powinien wskazywac na nowo stworzony obiekt czyli wez. Wez kartke rozrysuj sobie wszystko po czym wywal stary program i napisz go od nowa patrzac na to co narysowales. Koniec kropka, nie ma sie co rozczulac. Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
marcinekm681 Napisano Maj 30, 2007 Autor Zgłoś Share Napisano Maj 30, 2007 Zrobiłem coś takiego:-) Działa już duzo lepiej niż ostatnio, tylko że nadal jak usuwam wybrany string, to musze wypisywać całą linijke, dokładnie jak w liście bo inaczej program sie wywala;-/. Czy ktoś może wie, jak można zrobić żeby usuwało wybrany wyraz, a nie całą linijke?? Z góry dziękuje za podpowiedz, pozdrawiam:-) program: program Lista; uses crt2; type wsk = ^TEl_listy; [HHX[H[ć7FWw6łVćC&6ąŃĄąŹŃ((wsk; begin new(pom); pom^.dane:=x; pom^.nN[[YO[[[NB6P&Vv&W'ŁŁvĆvvĆR&W'ćć7ąź(xŃ(rz^.nastepny:=pom; end; end; procedure WstawNa]ZĘW[H[HĘN[w6ł&VvFVŁvĆvćWrvĆvvFvĆxź(}(Ńemp; end; end; {procedure WstawNaPoczatek} functioZ[[Y[ Z[H[HĘNFVw6ł&VvFVŁvĆvw&FRb33'ŚW7ąŃ(ĄąŃąź Write('.'); { liczba kropek na ekranie oXYHXYH]X[bY[[HHFćRFV'&VV6RFVŁFVćć7FWVćCĄą(]Ń1(iąŃ(nction Znajdz} function WypiszListe(glowa : wsk):integer;[XZ[YYĆ7ŚćŁw&FTĆbvĆvćFVw&Ń11ŃŃ(ą( WriteLn('Zawartosc listy '); temp := glowa[H[ [Y[][[ćFćRb33b33FVŁFVćć7FW%ĄąŹ(Ąą(ą(]Ńn; WypiszListe := licznik; end; procedure delete(vN[ĘNN[YY[w&FVĆb33w76ĆvFW7VćV6b33&VFĆ2ąxŃĄ((Ąą(ąwa:=glowa^.nastepny end else begin p:=glowa; [JI[ H[ W[ICfwC2FŁćć7FWF76Rćć7FWxŃxŃxŃ(((((Ńon UsunListe(var glowa : wsk):integer; var temp XZ[YY[XZHw&FTĆw&FRb33W7WvćRĆ7Gb33vĆRąąź(]Ń(%c(licznik); temp := glowa^.nastepny; Dispose(gloJNHH[[[_B[HĆ7ŚćłVćCśgVć7FW7VĆ7FWf vĆvŹ(QŹ(ąźŃ(=Ą i : integer; plik:text; begin Glowa := nil; [H[XYYZ NLw6śŚćGBb33&W6WBĆvĆvŁćvĆRĄąŹź((ĄąŹąąź(dolisty(glowa,slowo); end; close(plik); repeat ]S]S NK]H]ZNĘNw&FTĆb33śBŚćŚGVĆVVBb33w&FTĆb33rŃąŃ(]Ń1U element z pamieci.'); WriteLn('x. Koniec.'N]S]J NX NĘNXY6Ś66RW66R6Ś`b33b33&Vv(]Ń1(]ŃAąź '); ReadLn(slowo); WstawNaP]ZĘJN[YHY[[Y[HBw7Ć7FRvĆvVćCb33\"b(]Ń1(]Ńodaj slowo: '); ReadLn(slowo); & nbsp;]ÓRYXĘJN[YHY[[Y[Hw7Ć7FRvĆ vVćC(]Ń1(Write('Podaj slowo: '); ReadLn(slowo);]TZJN[YHvVĆVVGR w7Ć7FRvĆv((]Ń1( Write('Podaj szukane slowo: '); XYĘN[HZ[[Y[ vĆvbFVćFVw&FTĆb337Vśą( else WriteLn('Znaleziono element zawierajacy: &N[[JN[ NNĆ7FRvĆvb33Rb33&Vvw&FT((ąŃĄąąąź(( 'X' : ; else WriteLn('Niepoprawna opcja.&NĘN[_B[[ HH N NĘH Śb33b33w&FTĆw&FTĆw&FRb33v669QH(I1) Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.