Przepisanie jednej tablicy do drugiej

Odpowiedz Nowy wątek
2015-03-19 20:34

Rejestracja: 6 lat temu

Ostatnio: 7 miesięcy temu

0

Mam za zadanie stworzyć klase stos bazując na tablicy. Ok. ustalam sobie rozmiar tablicy przez define itp itd
Tylko jeśli chce dodac cos ponad rozmiar, program ma mi powiększać tą tablice.
W jaki sposób można to zrealizować?
Myślałem nad alokacją nowej tablicy, jednak nie wiem jak ustawić ją na "główną" w klasie po zamianie rozmiaru i przepisaniu tablicy

Pozostało 580 znaków

2015-03-19 20:36

Rejestracja: 7 lat temu

Ostatnio: 1 dzień temu

Lokalizacja: Wrocław

0

No cóż.. pozostaje wskaźnik i alokacja pamięci. A kiedy trzeba ci powiększyć stos, no to alokujesz na nowo, i przepisujesz dane itd.


Asm/C/C++

Pozostało 580 znaków

2015-03-19 20:38

Rejestracja: 6 lat temu

Ostatnio: 7 godzin temu

realloc
http://www.cplusplus.com/reference/cstdlib/realloc/

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int *numbers = NULL, input, count = 0;
    while(scanf("%d", &input)!=EOF){
        numbers = realloc(numbers, ++count*sizeof(int));
        numbers[count-1] = input;
    }

    int i = 0;
    for(i; i < count; ++i)
        printf("%d ", numbers[i]);
    return 0;
}

in:
1 2 3 4 5
out:
1 2 3 4 5
http://ideone.com/Aj2scp

edytowany 1x, ostatnio: spartanPAGE, 2015-03-19 20:48

Pozostało 580 znaków

2015-03-19 20:46

Rejestracja: 6 lat temu

Ostatnio: 7 miesięcy temu

0

Czyli alokuje dynamicznie tablice ROZMIAR i jak się kończy miejsce to realokuje? Tylko czy zawartość nie zniknie...

@golinek3 może zwróciłbyś uwagę na podany przeze mnie przykład programu i jego działanie? - spartanPAGE 2015-03-19 20:56
przepraszam, nie zauważyłem zmiany - golinek3 2015-03-19 20:57

Pozostało 580 znaków

2015-03-19 20:54

Rejestracja: 6 lat temu

Ostatnio: 18 godzin temu

1

Zawartość nie zniknie bo realloc robi

  1. Alokuje nową tablicę z nowym rozmiarem.
  2. Przepisuje starą tablicę na początek nowej.
  3. Zwalnia starą tablicę

Pozostało 580 znaków

2015-03-19 21:07

Rejestracja: 6 lat temu

Ostatnio: 7 miesięcy temu

0

dodam tylko, że żeby realokować, tablica musi być najpierw zaalokowana dynamicznie. Masło maślane, ale jednak ja np. sam chwile myślałem gdzie jest błąd i dlaczego się wyłącza.
Wszystko pięknie działa, dzięki za pomoc!

Pozostało 580 znaków

2015-03-19 21:11

Rejestracja: 5 lat temu

Ostatnio: 11 godzin temu

Lokalizacja: Łódź

0

Można też zrobić sobie listę tablic... Będzie w miarę szybki dostęp do określonego elementu, a jednocześnie nie trzeba będzie realokacji robić. No ale jak to zadanie szkolne, to może rzeczywiście nie być dobry pomysł, choć jako alternatywę bym sobie napisał dodatkowo.


Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie
to ma być klasa stos bazująca na tablicy. normalnie zastosowałbym vector i problem rozmiaru jest mało istotny - golinek3 2015-03-19 21:17

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0