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

C++ - System 16kowy i dziesiętny, wskaźniki.

terry1996 12 Gru 2015 14:43 1434 27
  • #1 12 Gru 2015 14:43
    terry1996
    Poziom 18  

    Witam
    Musze napisać w c++ taki program i średnio wiem jak się za to zabrać.

    1.
    Napisz program wyświetlający na konsoli (dziesiętnie oraz szesnastkowo)
    wartości kolejnych bajtów kodujących w pamięci zawartości zmiennych kilku wybranych typów
    np. char, int, float, double
    Jak należałoby rozbudować ten program
    aby zawartości kolejnych bajtów były wyświetlane w postaci binarnej ?
    (czy można to zrobić za pomocą funkcji ze standardowych bibliotek C++)


    2.
    Oprócz tego chciałbym przerobić ten program tak by spełniał kryteria:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Napisać program, który wczytuje n łańcuchów znakowych, każdy o długości
    nie większej niż 40 znaków, a następnie sortuje je w kolejności alfabetycznej.
    Uwagi: - zakończenie wczytywania napisów następuje po wprowadzeniu
    łańcucha "pustego",
    - przyjąć, że maksymalna liczba łańcuchów do sortownia to 40,
    - wskaźniki na kolejne łańcuchy przechowywać w tablicy,
    - podczas sortowania przemieszczać wskaźniki na łańcuchy,
    - do sortowania wykorzystać funkcję biblioteczną, która porównuje dwa łańcuchy
    znaków i pozwala określić, który z nich jest "bliżej" początku alfabetu, a który "dalej"
    (jaka to funkcja ?)


    Dodam, że już dużo czytałem nt wskaźników i na prawdę dużo nad tym programem spędziłem i nigdy nie działało dobrze. (usunąłem i edytowałem część kodu, żeby nie było tych wskaźników)

    0 27
  • #2 12 Gru 2015 15:01
    ryszard1955
    Poziom 19  

    Proszę nie unikać wskaźników, one są bardzo pomocne w operacjach na tablicach.

    0
  • #3 12 Gru 2015 15:04
    terry1996
    Poziom 18  

    No nie unikam, tylko nie umiem tego zrobić :P
    Jak możesz mógłbyś edytować mój kod?

    0
  • #4 12 Gru 2015 15:23
    ryszard1955
    Poziom 19  

    Wskaźniki ułatwiają odwoływaniu się do kolejnych elementów tablicy, gdyż są adresami ich elementów, Czy napisany kod wymaga dużych korekt żeby spełniał poniższe wymagania?

    0
  • #5 12 Gru 2015 15:50
    terry1996
    Poziom 18  

    No nie wymaga dużych korekt, ale jak je wprowadzam to nie działa.

    0
  • #6 12 Gru 2015 15:57
    ryszard1955
    Poziom 19  

    Wrzuciłem ten kod do codeblocksa i jak uruchamiam go, i po wypisaniu jakiekolwiek ciągu znaków nic on nie robi.

    0
  • #7 12 Gru 2015 16:10
    terry1996
    Poziom 18  

    kompiluje go w falconie i spełnia wszytskie warunki jakie są podane w poleceniu :P (oprócz wskaźników)

    0
  • #8 12 Gru 2015 17:36
    -psiak-
    Poziom 32  

    1. W zadaniu nie ma postaci binarnej. Pomocna struktura:

    Kod: c
    Zaloguj się, aby zobaczyć kod
    wczytujesz do vd, zaś odczytujesz z bytes[];
    2. Zadanie wykonano niepoprawnie, nie napisano że tych napisów ma być nie więcej niż 40. Jak używasz sobie string to użyj i vector: http://ideone.com/WHq34R
    Kod: c
    Zaloguj się, aby zobaczyć kod
    A jak chcesz jednak spełnić zadanie to wczytujesz do:
    Kod: c
    Zaloguj się, aby zobaczyć kod
    kolekcjonujesz w:
    Kod: c
    Zaloguj się, aby zobaczyć kod
    i żonglujesz przydzielaniem pamięci.

    0
  • #9 12 Gru 2015 17:40
    terry1996
    Poziom 18  

    while(!array[n-1].empty() && n<40);
    myślę, że to n<40 ogranicza jednak do max 40 stringów :)

    dzięki za pomoc, spróbuję wszystko zrozumieć :)

    0
  • #10 12 Gru 2015 17:58
    -psiak-
    Poziom 32  

    terry1996 napisał:
    ... myślę, że to n<40 ogranicza jednak do max 40 stringów ...
    Owszem. Problem jednak polega na tym, że w zadaniu nie wspomniano o takim ograniczeniu.

    0
  • #11 12 Gru 2015 18:16
    terry1996
    Poziom 18  

    no tak trzeba ostrzec klienta :)

    A ten kod jest dobry (od strony technicznej- wskaźniki)? bo 1 raz mi się skompilował.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #12 12 Gru 2015 18:47
    ryszard1955
    Poziom 19  

    Uruchamiałem ten program, i we wprowadzonym dowolnym napisie znaki nie były wcale sortowane.

    0
  • #13 12 Gru 2015 18:53
    terry1996
    Poziom 18  

    Może zły kod wkleiłem. Teraz wkleiłem na 100% działający. Mi sortuje - FALCON

    0
  • #14 12 Gru 2015 19:08
    -psiak-
    Poziom 32  

    terry1996 napisał:
    no tak trzeba ostrzec klienta :)
    - to wprowadź ograniczenie do jednego napisu i cały program zamknie się w 3-ch wierszach.

    terry1996 napisał:
    A ten kod jest dobry (od strony technicznej- wskaźniki)?
    Nie. Ma nie być string'ów. Za sam pomysł wskaźnika na string - powinieneś nie zaliczyć całego semestru.

    0
  • #15 12 Gru 2015 19:13
    terry1996
    Poziom 18  

    Prowadzący sugerował, że łatwiej zrealizować jego polecenie na stringach, a nie na charach.
    Wszyscy, którzy na zajęciach zaczynali z charem dostawali opieprz :DD - T.Jeleniewski PWr

    0
  • #16 12 Gru 2015 19:39
    ryszard1955
    Poziom 19  

    Nic się nie zmieniło, i ten kod w dalszym ciągu nie sortuje.

    0
  • #17 12 Gru 2015 19:53
    terry1996
    Poziom 18  

    @ryszard1955 użyj innego kompilatora, bo nie wiem czego używasz :D
    program ma zamieniać miejscami stringi(sorować je), a nie sortować w nich pojedyncze litery

    0
  • #18 12 Gru 2015 20:01
    -psiak-
    Poziom 32  

    @ryszard1955, ma racje. To coś nie sortuje poprawnie, ponieważ porównujesz array zaś wymieniasz wsk.

    terry1996 napisał:
    Prowadzący sugerował, że łatwiej zrealizować jego polecenie na stringach, a nie na charach.
    Wszyscy, którzy na zajęciach zaczynali z charem dostawali opieprz :DD - T.Jeleniewski PWr
    Zobaczysz jaki opieprz dostaniesz za string*.

    0
  • #19 12 Gru 2015 20:15
    terry1996
    Poziom 18  

    A swoją droga to dlaczego nie może być string?

    0
  • #20 12 Gru 2015 20:52
    -psiak-
    Poziom 32  

    terry1996 napisał:
    A swoją droga to dlaczego nie może być string?
    Może być ale jak używasz "wyższych" technologii czyli C++ to musisz używać C++ czyli program powinien wyglądać tak lub jakoś tak: https://www.elektroda.pl/rtvforum/viewtopic.php?p=15234107#15234107

    To co próbujesz zrobić to przymocowanie silnika od lamborgini do wiejskiej karocy,
    wygląda paskudnie i nie zda egzaminu, bo się rozwali na pierwszej dziurze w drodze.

    Robiąc to w ten sposób jak robisz w sumie nie uczysz się niczego, ani nowych technologii (C++) ani starych sprawdzonych czasem (C) ani też nie uczysz się zarządzania pamięcią na niskim poziomie - co tak naprawdę jest celem tego zadania.

    0
  • #21 12 Gru 2015 21:04
    ryszard1955
    Poziom 19  

    terry1996 napisał:
    [b]program ma zamieniać miejscami stringi(sorować je), a nie sortować w nich pojedyncze litery

    To jak ma być wprowadzany tekst, pojedyncze znaki bez przerwy jednym ciągiem, czy jak?

    0
  • #22 12 Gru 2015 21:06
    terry1996
    Poziom 18  

    no wprowadzam od 1 do 40 zdań, każde po 40 znaków. np
    Jestem Piotr
    Nie lubie kotów
    Domek na drzewie.


    posortowane ma być:
    Domek na drzewie.
    Jestem Piotr
    Nie lubie kotów

    Dodano po 1 [minuty]:

    @-psiak- wykładowca mówił, żeby nie używać na razie vectora, chyba, że ktoś go już zna.

    0
  • Pomocny post
    #23 12 Gru 2015 21:13
    -psiak-
    Poziom 32  

    ryszard1955 napisał:
    To jak ma być wprowadzany tekst, pojedyncze znaki bez przerwy jednym ciągiem, czy jak?
    Z tego co napisano w zadaniu ma być jedno z:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dodano po 2 [minuty]:

    terry1996 napisał:
    @-psiak- wykładowca mówił, żeby nie używać na razie vectora, chyba, że ktoś go już zna.
    No to, kurdyban, przeczytaj jedną stronę i go poznaj: http://www.cplusplus.com/reference/vector/vector/vector/

    0
  • #24 12 Gru 2015 21:48
    ryszard1955
    Poziom 19  

    To ja wcześniej nie zrozumiałem, zgodnie z tym, co kolega wyjaśnił, program ten dobrze sortuje.

    0
  • #25 12 Gru 2015 22:11
    -psiak-
    Poziom 32  

    ryszard1955 napisał:
    To ja wcześniej nie zrozumiałem, zgodnie z tym, co kolega wyjaśnił, program ten dobrze sortuje.
    Racja, nie zauważyłem że program nie spełnia punktu:
    Cytat:
    - podczas sortowania przemieszczać wskaźniki na łańcuchy
    - jak tylko to się zmieni - przestanie sortować.

    0
  • #26 13 Gru 2015 14:31
    terry1996
    Poziom 18  

    Dobra z tym sobie w miarę poradziłem,
    teraz szukam jak zamienić
    char znak='1';
    na
    int liczba=1.
    Jak robię liczba=(int)znak to podaje mi kod ASCII. :(

    0
  • Pomocny post
    #27 13 Gru 2015 14:48
    -psiak-
    Poziom 32  

    Kod: c
    Zaloguj się, aby zobaczyć kod
    Zaznaczaj pomocne posty, to istotnie zwiększy ilość chętnych do odpowiedzi.

    0
  • #28 09 Sty 2016 17:34
    terry1996
    Poziom 18  

    dziękuje za pomoc :)

    0