Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

powiększanie tablicy 2d za pomocą realloc

#1
Ściana  powiększanie tablicy 2d za pomocą realloc
Cześć
mam oto taki kod:

Kod:
        int ilosc cech = 5;

        double **pkt;
        pkt = (double**) malloc(1 * sizeof(*pkt));
        for(unsigned int i=0; i<1; i++)
        {
            pkt[i]=(double *) malloc( (ilosc_cech) * sizeof(*pkt[i]));
        }


W tym momencie mam tablice o wymiarach 1x5
Chciałbym w jakiejś pętli powiększać tą tablice o 1 wiersz czyli docelowo wyglądało by to tak:
1 petla: 2x5
2 petla: 3x5
etc.

pytanie moje jest takie:
jak prawidłowo użyć funkcji realloc aby powiększyć tablice o 1 wiersz?

Z góry dziękuje za pomoc
 System operacyjny: windows_eight Przeglądarka: chrome
#2
RE: powiększanie tablicy 2d za pomocą realloc
Cześć, musisz trzymać gdzieś dotychczasową liczbę wierszy, żeby było wiadomo, o ile zwiększyć. Później wystarczy zwyczajnie wywołać funkcję realloc:
Kod:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    double **pkt;
    int p = 5, n = 1, i, j;
    pkt = (double**)malloc(n*sizeof(double*));
    for (i = 0; i < n; i++)
    {
        pkt[i] = (double*)malloc(p*sizeof(double));
        for (j = 0; j < p; j++)
            pkt[i][j] = (n-1)*p+j;
    }
    for (n = 2; n < 5; n++)
    {
        pkt = (double**)realloc(pkt, n*sizeof(double*));

        pkt[n-1] = (double*)malloc(p*sizeof(double));
        for (j = 0; j < p; j++)
            pkt[n-1][j] = (n-1)*p+j;
    }
    n--;

    for (i = 0; i < n; i++)
    {
        for (j = 0; j < p; j++)
            printf("%4.0f", pkt[i][j]);
        puts("");
    }

    for (i = 0; i < n; i++)
        free(pkt[i]);
    free(pkt);
    return 0;
}
Przy okazji zastanów się, czy nie lepiej od razu przydzielić odpowiednią ilość pamięci, ponieważ to jest kosztowna operacja.
 System operacyjny: linux_ubuntu Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki (powiększanie tablicy 2d za pomocą realloc)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Java- wypisanie liczb, które nie są podane w tablicy , wypisanie liczb z tablicy all? ccomp 10 14657 16.07.2017, 20:10
Ostatni post: ccomp
  Wyszukiwanie w tablicy soul1648 3 7175 01.04.2017, 14:26
Ostatni post: Ajgor
  [C++] Działanie na tablicy znakowej saba13579 8 6691 21.03.2017, 22:30
Ostatni post: Szachista

Skocz do:


Wybrane wątki (powiększanie tablicy 2d za pomocą realloc)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Proszę o pomoc w uzupełnieniu ankiety dt. Zawodu Programisty MaleMonki 0 206 17.11.2019 12:47
Ostatni post: MaleMonki
  Spring framework – jakie strony polecacie do nauki? olek23 5 1944 15.11.2019 15:57
Ostatni post: Alsenas
  Skrypt pod sklep internetowy Talcia 2 380 15.11.2019 15:52
Ostatni post: Alsenas
  Programowanie windy (problem) w C++ mysza2323 2 609 06.11.2019 23:04
Ostatni post: mysza2323
  Programy w C ~Anonim 1 1119 22.10.2019 17:48
Ostatni post: Szachista
  Książki do nauki C# olek23 14 6690 17.10.2019 13:06
Ostatni post: Ajgor
  Wyświetlanie informacji z bazy danych na stronie www PitPlay 1 2060 16.09.2019 11:18
Ostatni post: Ajgor
  Błąd przy uruchamianiu programu w Java z wiersza poleceń Physicist 3 1687 30.08.2019 14:16
Ostatni post: Physicist
  Python z wiersza poleceń Physicist 15 8787 21.08.2019 20:14
Ostatni post: Physicist
  Transfer plików via FTP Visual Basic FireBytes 3 4743 15.08.2019 07:41
Ostatni post: Szachista
  Menu wysuwane z boku patryk67 1 2901 07.08.2019 12:43
Ostatni post: aht
  Visual Basic Excel l.całkowitą przedstawić w postaci szesnastkowej fugaz 4 4422 18.06.2019 21:36
Ostatni post: fugaz
  Nauka do Olimpiady Informatycznej? piotr0905 1 4445 08.06.2019 16:50
Ostatni post: wlisik
Ściana Prosta gra w Builder C++ Kiranek1 1 4358 31.05.2019 15:20
Ostatni post: Szachista
  Menu (Nie widoczne długie opisy) wanhelsing 5 6090 28.04.2019 19:31
Ostatni post: koneton