![]() |
BTW. Narazie do tej funcjonalnosci nie potrzeba Ci listy dwukierunkowej. Korzystasz jedynie z jednego kierunku reprezentujacego stos - masz najnowszy wierzcholek i schodzisz poprzednikami. Narazie zbedna wiec wydaje sie byc pozycja 'nastepny' - chyba ze gdzies indziej jej bedziesz uzywal.
|
ok wypisywanie i szukanie sobie zrobi***322;em/poprawi***322;em - a jak wygl***261;da***322;oby usuwanie elementu listy, bo to chyba bedzie wygl***261;da***263; r***243;***380;nie w zale***380;no***347;ci czy to b***281;dzie pocz***261;tek listy (temp^.poprzednia = nil), ***347;rodek listy (temp^.dana) czy koniec listy (temp^.nastepna = nil)
PS Tak ale jak to zrozumiem na typie dwukierunkowym to jednokierunkowy wystarczy 'odchudzi***263;' :) |
Cytat:
Nie rozumiem PS, ale wydaje mi sie ze dobrze myslisz. Zrob moze lepiej ten stos nil <- elem6 <- elem3 <- elem8 <- elem2 <- stos dodanie elem5 (elem5 pokazuje na elem2, stos pokazuje na elem5) nil <- elem6 <- elem3 <- elem8 <- elem2 <- elem 5 <- stos wypsanie - tak jak masz. szukanie - tak jak masz. usuwanie. sprawdzasz czy stos nie jest nil. sprawdzasz czy stos^.wart = co trzeba jak tak to temp1=stos^.poprz stos^.poprz = nil, stos = temp1 jak nie znalazles to teraz temp2 = stos. i potem lecimy i sprawdzamy temp2^.poprz^.wartosc (dana to dziwna nazwa BTW). Jak znajdziemy to przepinamy jak wyzej temp1=temp2^.poprz^.poprz; temp2^.poprz^.poprz = nil; temp2^.poprz = temp1. i tak lecisz dopoki temp2^.poprz nie bedzie nilem Proponuje poprzerabiac na funkcje i zastanowic sie jakie wartosci powinny byc zwracane. Np. jezeli usun moze zwracac liczbe usunietych wezlow (w szczegolnosci mozesz napisac tak zeby wszystkie wystapienia usuwal, ale tak czy inaczej powinienes zzewnatrz wiedziec czy cokolwiek udalo sie wyrzucic). |
Ilość załączników: 1
Pozwolę sobie odkopać topik ;]
Czy znalazłby się jakiś "fachman od Delphi" i mógłby mnie oświecić czemu nie mogę skompilować tego wynalazku. Dodam, że jestem newbie co pewnie od razu widać. :D Kod:
unit Unit1; errory: Kod:
[Error] Unit1.pas(31): Statement expected but 'PROCEDURE' found |
Dawno juz w delphi nic nie robi***322;em .... ale nie pownienie***347; da***263; procedury przed beginem? ( po {R...} )?
edit: albo po prostu wyrzuci***263; ten begin przed procedur***261; ca***322;kowicie (end. na ko***324;cu zostaje) |
Ilość załączników: 2
THX za pomoc, ale jeszcze sobie delphi odpuszcz***281; - jednak.
Tymczasem mam problem z czym innym. Jak tu zrobi***263;, aby w poni***380;szym wynalazku program sam powpisywa***322; wszystkie warto***347;ci z ASCII do tabeli. Przesuni***281;cia s***261; ok, problem w tym, ***380;e tabela nie rysuje si***281; ca***322;a od pocz***261;tku do ko***324;ca. Nie wiem jak kto wyja***347;ni***263;. |
w rysowanie tabelek nigdy sie nie bawilem (na szczescie belfrzy dali se siana z tym)
pisze tego posta aby opieprzyc Cie za stosowanie komendy goto :D naprawde radze oducz sie _etykietowania_ to z***322;y nawyk i ka***380;dy programista Ci to powie, to nie asembler :) |
Wszyscy mi tak mówią, tylko ni cholery nie wiem dlaczego? Jest jakaś lepsza alternatywa? :hmm:
|
Cytat:
jak juz chcesz miec petle nieskonczona wracajaca do poczatku po nacisnieciu dowolnego klawisza... Kod:
program bleble; petla repeat (powtarzaj) until (dop***243;ki) zonk <> 1 - logicznie, ze zawsze bedzie =1 wiec nie bedzie miec konca :) |
Nie pomy***347;la***322;em o tym :D
Ale powiedz please, czemu etykiety to niedobry pomys***322;? |
Cytat:
za pomoc***261; goto nie mo***380;na skoczy***263; do innej procedury, p***281;tli... poza tym estetyka... tworzenie menu za pomoca goto jest kozackie... i tak wyglada... zamiast je robic za pomoca goto/etykiet i if'ow to lepiej podzielic program na procedury i wywolywac je za pomoca case... wygl***261;da ***322;adniej i logiczniej... napisalem Ci na kolanie menu... teraz zr***243;b to samo na goto :D teraz rozumiesz? :> Kod:
program bleble; jesli bedziesz miec kilkanascie etykiet to stracisz kontrole nad programem... np. masz w programie kolejno (gdzies tam miedzy kodem) label zonk1; (...) label zonk2; (...) label zonk3 (...) label zonkN i teraz tak jak wywolasz etykiete zonk1; to wykona sie wszystko w innych etykietach nizej czy tego chcesz czy nie... jesli wywolasz zonk2; to tez za kazdym razem wykona sie wszystko co pod nia... wywolujac procedure case'm _wyjmujesz_ do wykonania potrzebny Ci FRAGMENT programu, tego nie uzyskasz za pomoca goto |
etykiety i goto to paskudny pomys***322;. ka***380;dy rozs***261;dny programista opieprzy za ich stosowanie i z***322;apie si***281; za g***322;owe jak przyjdzie mu czyta***263; taki kod...
u mnie na studiach stosowanie tego by***322;o ca***322;kowicie zabronione i te***380; na pocz***261;tku si***281; dziwi***322;em czemu bo jako dziecko stosowa***322;em goto nagminnie w basicu (C64 ;) ). Nie spotka***322;em ani jednej rzeczy kt***243;r***261; wygodniej by***322;oby zrobi***263; przez goto. Z teoretycznego punktu widzenia dawno jest udowodnione ***380;e wszystko da si***281; napisa***263; trzema typami instrukcji - sekwencji ( ; ), iteracji (while) i selekcji (if). Reszta to tylko dodatki. |
Cytat:
Nieformalnie te***380; jest gorzej - du***380;o gorsza czytelno***347;***263;. Pami***281;taj ***380;e z za***322;o***380;enia oprogramowania nie pisze jedna osoba. Natomiast je***380;eli chodzi o optymalno***347;***263; to dobre zrobienie goto jest bardziej efektywne od zwyk***322;ych p***281;tli, ale trudno jest zrobi***263; dobre i przemy***347;lane labele i instrukcje goto, cho***263; mo***380;na. Tak jest np. w niekt***243;rych fragmentach kodu w j***261;drze linuxa (albo by***322;o, przynajmniej w 2.4). Cytat:
p***281;tle i ify s***261; t***322;umaczone na test rekord***243;w (inst. procesora) i odpowiedni skok do odpowiedniej etykiety (inst. procesora). |
Za odpowiedzi wszystkim dzi***281;kuj***281;. Goto wykre***347;lam ze s***322;ownika ;]
//nikt nie wie co jest zr***261;bane w rysowaniu tych tabelek? Zlitujcie si***281; nad moj***261; biedn***261; dusz***261;... :szczerb: |
@pawe***322;blu
nie m***243;wie jak to wygl***261;da w sprz***281;towej realizacji na procesorze tylko z punktu widzenia algorytmiki. Oczywi***347;cie ***380;e while jest t***322;umaczony na instrukcje testu i skoku (a tak***380;e na ca***322;***261; mas***281; innych typu wrzucenie zmiennej do rejestru) bo taka jest budowa obecnych procesor***243;w. Dlatego w asseblerze oczywi***347;cie etykiety s***261;. Kiedy***347; na wyk***322;adzie by***322;a maszyna kt***243;ra mia***322;a kilka strasznie prymitywnych instrukcji typu skok, zwi***281;kszenie warto***347;ci o 1 itp. I by***322;a ca***322;kowicie r***243;wnowa***380;na wszystkim obecnym komputerom. Tylko ***380;e zrobienie na niej czegokolwiek na poziomie 3+5 to by***322;a masakra. Ale kompilator pewnie zrobi***263; by si***281; da***322;o :P |
Wszystkie czasy w strefie CET. Aktualna godzina: 16:20. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.