Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C++ program dotyczący wskazników

16 Cze 2011 22:24 1631 7
  • Poziom 16  
    Witam.
    Mam ogromną prośbę do osób którzy umieją pisać programy w C++.
    Nie będę owijał w bawełnę ale mam problem dotyczący zadania ze wskaźnikami których nie za bardzo rozumiem :cry:
    Muszę zrobić zadanie,a nawet nie wiem jak się za nie zabrać.
    Oto treść:
    Stwórz poprzez wskaźniki łańcuch 100 kulek, każda o wartości i^2%50.
    Posegreguj je lub od razu wstaw w odpowiednie miejsce.

    Wiem, że chodzi tu o zaimplementowanie listy wskaźnikowej ale nie wiem jak to napisać.
    Napisałem już coś takiego:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Program pokazuje liczby:
    0
    3
    6
    9
    12
    15...
    aż do 300
    I tak się zastanawiam jak go wykorzystać do zadanej treści zadania?
    Za wszelką pomoc z góry dziękuję.

    Proszę pamiętać o używaniu znaczników syntax. Opcja Listing kodu. - arnoldziq
  • Pomocny post
    Poziom 17  
    No ale w czym dokładnie leży problem? Napisałeś program, który tworzy taki łańcuch, w dodatku posortowany od razu, więc? Chyba, że to nie Ty pisałeś (wartość kulki jest obliczana w inny sposób, niż masz zadane w zadaniu) i próbujesz to tylko zaadoptować do swoich potrzeb? I co to za wzór na wartość kulki i^2%50? "i" to kolejna iteracja a "%" ma oznaczać dzielenie "modulo"?
  • Pomocny post
    Poziom 18  
    Twój problem prawdopodobnie nie dotyczy C++, tylko C. W C++ rozwiązanie nie korzysta (bezpośrednio) ze wskaźników i jest następujące:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    HTH,
    Dariusz
  • Poziom 16  
    Witam.
    Właśnie największy problem to ten wzór i^2%50
    Gdy użyje go do programu, to owszem wyświetla mi się tablica z cyframi,ale bez żadnego składu ani ładu :cry:
    kolejno 0-3-0-1-6-7-4-5 itd do 102.
    Gdyby chociaż, były one posortowane już była by połowa sukcesu.
    Ale niestety, jakbym nie kombinował, to nie sortują się kolejno od najmniejszej do największej. :cry:
    P.S
    Dariusz dzięki Ci za programik, bo trochę na nim po ćwiczę :D
  • Pomocny post
    Poziom 17  
    Niestety, ale rozwiązanie podane przez Dariusz Bismor nie jest poprawnym. A to dlatego, że w treści zadania podano :

    Stwórz poprzez wskaźniki łańcuch 100 kulek

    Dotychczas spotkałem się z wieloma akademickimi zadankami, chyba ani razu nie chodziło w nich o skorzystanie z gotowych kontenerów typu std::list czy std::vector, jeśli treść była podobna do tej. Tymbardziej, że nadminiono aby korzystać ze wskaźników. Tak więc rozchodzi się tutaj o implementację listy jednokierunkowej, czyli tak jak twórca tematu dotychczas kombinował. Potem tylko posortować listę (trochę żonglowania wskaźnikami, ale wyjdzie mu to na dobre).

    Algorytm sortowania : http://pl.wikipedia.org/wiki/Sortowanie_bąbelkowe
  • Poziom 18  
    Rozwiązanie podane przeze mnie jest poprawnym rozwiązaniem problemu generacji tego specyficznego ciągu liczb, pakowania ich w listę i sortowania w języku C++. Każde inne rozwiązanie tego problemu w C++ - przez tworzenie własnej listy - jest niepoprawne w języku C++. Programowanie wysokiego poziomu bowiem polega na tym, że korzystamy z gotowych pojemników, a dalej wzorców projektowych, a nie piszemy wszystkiego "od Adama i Ewy". Nie wyważamy otwartych drzwi.

    Niestety, jest wiele osób, w tym także takich, które uczą programowania w C++, które uważają, że nie da się nauczyć programować w C++ nie rozpoczynając od wskaźników i całej z nimi zabawy. Od dawna walczę z takim błędnym podejściem (nie tylko zresztą ja, odsyłam do książki Koenig, Moo). Wskaźniki nieodłącznie pojawiają się także w C++ (np. korzysta z nich wzorzec most zwany też pimpl, korzystają techniki RAII, itd.), ale na znacznie bardziej zaawansowanym poziomie (kto z czytających wie co to wzorzec most - bez zaglądania do wikipedii?). Jedynie ucząc C++ osoby dobrze znające C można od razu pracować na wskaźnikach - ale takie osoby nie pytają się jak utworzyć listę pojedynczo linkowaną i jak ją posortować.

    Podsumowując, problem podany przez macko.79 dotyczył programowania w C, nie w C++ - co zaznaczyłem na początku mojego poprzedniego postu.

    HTH,
    Dariusz
  • Poziom 17  
    Całkowicie się z tobą zgadzam, jednak zapominasz chyba, że jest to zadanie akademickie. Ich celem jest poznanie budowy struktur danych typu lista czy kolejka (tu akurat lista) a także operacji na wskaźnikach. Nie można tutaj użyć kontenerów z STL, ponieważ zadanie nie miałoby sensu.
  • Poziom 16  
    Witam i dziękuję wszystkim za pomoc.
    Prawdę mówiąc bardzo mi się przydały wasze wypowiedzi (nawet sprzeczki). :D
    Zadanie ze wskaźnikami miałem też na egzaminie z informatyki i zaliczyłem. :D
    Jeszcze raz dziękuję za pomocne wypowiedzi.