[C++] Tworzenie dynamicznej tablicy o różnej ilości wierszy

jackblack
Użytkownik
Użytkownik
Posty: 175
Rejestracja: 27 paź 2013, o 20:59
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 5 razy
Pomógł: 10 razy

[C++] Tworzenie dynamicznej tablicy o różnej ilości wierszy

Post autor: jackblack »

Dzień dobry.

Mam do napisania program, którego jedną z operacji jest stworzenie tablicy o wierszach w liczbie n, używając funkcji z C: malloc, calloc, realloc, free, etc. Nie można używać "[]" - trzeba działać na samych wskaźnikach.
Ma to działać mniej więcej tak:
1) Wpisujemy na standardowe wejście liczbę n.
2) Tutaj będzie opis każdego z wierszy: Wiersz[1]: wpisujemy liczbę x, która określa ilość znaków w wierszu, a po liczbie x wpisujemy, ciąg znaków, który chcemy w wierszu umieścić.
Powtarzamy tę czynność aż dojdziemy do n-tego wiersza. Czyli np:
START:
N=3
2 x y
3 x y z
4 a b f 8
KONIEC.

Czyli tablica wygląda tak:
[x][y]
[x][y][z]
[a][f][8]

Na tej zasadzie ma to działać. Przyznam się, że jestem dopiero początkujący i to zadanie jest dla mnie trochę wyzwaniem.
WAŻNE: Możemy użyć do tego tylko funkcji malloc, calloc, realloc. Nie używamy operatora new i biblioteki string.

Czy mógłby ktoś napisać mi kod tego programiku lub przynajmniej powiedzieć, jak to zrobić?
Pozdrawiam,
Jacek.
Mutant101
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 29 lis 2014, o 16:37
Płeć: Mężczyzna
Lokalizacja: Everest

[C++] Tworzenie dynamicznej tablicy o różnej ilości wierszy

Post autor: Mutant101 »

Jak masz C++ to nie używaj starego C tylko wektora

Kod: Zaznacz cały

http://www.cplusplus.com/reference/vector/vector/


#takBardzoPomoc
jackblack
Użytkownik
Użytkownik
Posty: 175
Rejestracja: 27 paź 2013, o 20:59
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 5 razy
Pomógł: 10 razy

[C++] Tworzenie dynamicznej tablicy o różnej ilości wierszy

Post autor: jackblack »

Mogę użyć tylko biblioteki cstdlib i iostream. Tworzenie dynamicznej tablicy musi się niestety odbyć metodą z C, mimo, że językiem zadania jest język C++.
Jak zrobić to przy pomocy malloca?
Awatar użytkownika
Kacperdev
Użytkownik
Użytkownik
Posty: 3260
Rejestracja: 23 mar 2010, o 19:19
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 17 razy
Pomógł: 686 razy

[C++] Tworzenie dynamicznej tablicy o różnej ilości wierszy

Post autor: Kacperdev »

jackblack, poczytaj o wskaźniku na wskaźnik.
jackblack
Użytkownik
Użytkownik
Posty: 175
Rejestracja: 27 paź 2013, o 20:59
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 5 razy
Pomógł: 10 razy

[C++] Tworzenie dynamicznej tablicy o różnej ilości wierszy

Post autor: jackblack »

Właśnie czytam... Ale przyznam, że jestem sporym noobkiem w programowaniu i nie rozumiem tematu w ogóle.. :/
Awatar użytkownika
Kacperdev
Użytkownik
Użytkownik
Posty: 3260
Rejestracja: 23 mar 2010, o 19:19
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 17 razy
Pomógł: 686 razy

[C++] Tworzenie dynamicznej tablicy o różnej ilości wierszy

Post autor: Kacperdev »

Cały zestaw danych ma być zapisany w jednej tablicy. Czy ma tu być \(\displaystyle{ N}\) tablic. Innymi słowy, każy wiersz ma być oddzielną tablicą?
jackblack
Użytkownik
Użytkownik
Posty: 175
Rejestracja: 27 paź 2013, o 20:59
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 5 razy
Pomógł: 10 razy

[C++] Tworzenie dynamicznej tablicy o różnej ilości wierszy

Post autor: jackblack »

Tak. Ma to być tablica, której elementami są tablice. Przyznam się, że nie wiem do końca jak to ma wyglądać od strony kodu, ale wiem, jak to ma działać.
Awatar użytkownika
Kacperdev
Użytkownik
Użytkownik
Posty: 3260
Rejestracja: 23 mar 2010, o 19:19
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 17 razy
Pomógł: 686 razy

[C++] Tworzenie dynamicznej tablicy o różnej ilości wierszy

Post autor: Kacperdev »

Kod: Zaznacz cały

int ** tab;
int i=0;
tab=malloc(lw*sizeof(*tab));
for(i=0;i<lw;++i) *(tab+i)=malloc(lk*sizeof(**tab));
W pierwszym wierszu tworzę wskaźnik na wskaźnik.
w trzecim przydzielam pamięć to tablicy wskaźników (lw - liczba wierszy) które będą wierszami.
Następnie do każdego wiersza przydzielam odpowiednią ilość pamięci na kolumnę.

dobrze przeanalizuj ten kod i przede wszystkim eksperymentuj.
jackblack
Użytkownik
Użytkownik
Posty: 175
Rejestracja: 27 paź 2013, o 20:59
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 5 razy
Pomógł: 10 razy

[C++] Tworzenie dynamicznej tablicy o różnej ilości wierszy

Post autor: jackblack »

Bardzo dziękuję.
Już się zabieram za analizę tego kodu.

Pozdrawiam.

EDIT:

W 3 i 4 linijce kodu wyrzuca mi błąd:
In function 'int main()':
[Error] invalid conversion from 'void*' to 'int**' [-fpermissive]
[Error] invalid conversion from 'void*' to 'int*' [-fpermissive]

Czym to może być spowodowane?

EDIT:
Już wszystko działa. Trochę pokombinowałem i smiga.
Dziękuję za pomoc.
ODPOWIEDZ