Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

c++ - Malloc i realloc powiększanie tablic

Softmar 03 Apr 2014 16:40 1563 7
  • #1
    Softmar
    Level 9  
    Cześć, chciałbym powiększać moją tablicę dynamiczną ale kod się nie kompiluje.
    Czy mógłby ktoś mi w tym pomóc ?

    Code: cpp
    Log in, to see the code

    Kod się wysypuje. Proszę o ewentualne wskazówki.

    Dodano po 4 [godziny] 15 [minuty]:

    Mam też 2 pytanie, powiększając tablic za każdym razem o 2, jak później usuwać po 1 elemencie z końca tablicy ?
  • #2
    krru
    Level 33  
    Softmar wrote:
    Code: cpp
    Log in, to see the code




    czy x może się równać x+2?
  • #3
    the_fifth_horseman
    Level 32  
    Po pierwsze, jeżeli kod się nie kompiluje to sprawdź jaki masz komunikat o błędzie. Regulamin 3.1.17 - nikt odczyta za ciebie komunikatów twojego kompilatora.

    Po drugie, komentarze jednoliniowe zaczynamy // a nie / .

    Po trzecie, jakie zaćmienie przyniosło ten okaz geniuszu?
    Code: cpp
    Log in, to see the code

    To się wykona tylko w jednej sytuacji, i nie jest nią brak miejsca.

    Po czwarte, gdzie inicjalizujesz zmienne rozmiar i size?

    Quote:
    Mam też 2 pytanie, powiększając tablic za każdym razem o 2, jak później usuwać po 1 elemencie z końca tablicy ?

    Nie powiększasz jej o 2. Powiększasz ją dwukrotnie, co zresztą zaznaczyłeś w komentarzach.

    A jak usunąć ostatni element już ci mówiłem:
    the_fifth_horseman wrote:
    Softmar wrote:
    Jak napisać za pomocą realloc usuwanie ostatniego elementu tablicy ?

    Po prostu realokujesz tablicę na rozmiar równy pomniejszonej o 1 liczbie elementów przemnożonej przez rozmiar pojedynczego elementu.
  • #4
    Softmar
    Level 9  
    http://pl.wikibooks.org/wiki/C/malloc -> wasze
    Code: cpp
    Log in, to see the code


    Dodano po 24 [minuty]:

    Poprawiłem kod, działa poprawnie.
    Code: cpp
    Log in, to see the code

    Jak teraz pomniejszać elementy co 1 od tyłu ?
  • #5
    the_fifth_horseman
    Level 32  
    Softmar wrote:
    Jak teraz pomniejszać elementy co 1 od tyłu ?
    Wyjaśniłem ci jak to zrobić, próbowałeś to samemu oprogramować według tych wskazówek?
  • #6
    Softmar
    Level 9  
    Code: cpp
    Log in, to see the code



    Według mnie pomniejszanie o jeden element,
    Code: cpp
    Log in, to see the code


    Możecie zerknąć na to okiem ?
  • Helpful post
    #7
    the_fifth_horseman
    Level 32  
    Masz w tym jeden błąd - po pierwszej instrukcji w pętli licznik będzie zawsze równy x-1. W związku z tym, pętlę musisz wykonywać tylko dopóki x>0.

    Zwracam tylko uwagę, że alokacja i zwalnianie pamięci zajmuje czas.
    Jeżeli chcesz zaimplementować coś na kształt stosu, to wydajniej od pomniejszania i powiększania zalokowanego obszaru jest alokować miejsce na zapas (co robisz) a zwalniać tylko kiedy ilość wykorzystanej pamięci spadnie poniżej jakiegoś progu (czego nie robisz)
  • #8
    Softmar
    Level 9  
    A jak powinien wyglądać warunek na zwalnianie pamięci (próg) ?

    Code: cpp
    Log in, to see the code