logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zaimplementować listę wskaźnikową w C++ z wartościami i^2%50?

macko.79 16 Cze 2011 22:24 1964 7
  • #1 9621169
    macko.79
    Poziom 16  
    Posty: 226
    Pomógł: 17
    Ocena: 40
    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: text
    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
    #2 9621793
    directx11
    Poziom 17  
    Posty: 250
    Pomógł: 25
    Ocena: 14
    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
    #3 9621896
    Dariusz Bismor
    Poziom 18  
    Posty: 150
    Pomógł: 35
    Ocena: 16
    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: text
    Zaloguj się, aby zobaczyć kod


    HTH,
    Dariusz
  • #4 9623552
    macko.79
    Poziom 16  
    Posty: 226
    Pomógł: 17
    Ocena: 40
    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
    #5 9624990
    winuser2
    Poziom 17  
    Posty: 377
    Pomógł: 19
    Ocena: 14
    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
  • #6 9625191
    Dariusz Bismor
    Poziom 18  
    Posty: 150
    Pomógł: 35
    Ocena: 16
    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
  • #7 9625202
    winuser2
    Poziom 17  
    Posty: 377
    Pomógł: 19
    Ocena: 14
    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.
  • #8 9630188
    macko.79
    Poziom 16  
    Posty: 226
    Pomógł: 17
    Ocena: 40
    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.

Podsumowanie tematu

✨ Użytkownik zadał pytanie dotyczące implementacji listy wskaźnikowej w C++, w której wartości kulek mają być obliczane jako i^2%50. W odpowiedziach zwrócono uwagę na problemy z rozumieniem wskaźników oraz na błędne obliczenia wartości kulek. Zasugerowano, że użytkownik powinien stworzyć jednokierunkową listę wskaźnikową, a także posortować ją. Podano przykłady kodu, w tym użycie klasy Kulka oraz algorytmu sortowania. Użytkownik podziękował za pomoc i potwierdził, że zadanie udało mu się zrealizować.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA