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.

Tablica dynamiczna dwuwymiarowa w C

Cinx21 10 Jan 2010 16:17 3725 3
  • #1
    Cinx21
    Level 2  
    Witam mam taki kod:
    Code:
    #include <stdio.h>
    
    #include <stdlib.h>
    int main()
    {
        int rozmiar;
        int **tab;
        int k,i,j;
        printf ("podaj rozmiar tablicy: \n");
        scanf ("%d", &rozmiar);
        tab = (int**)malloc(rozmiar * sizeof (int*));
        for (k=0; k<rozmiar; k++)
        {                             
            tab[k] = (int*)malloc(rozmiar * sizeof (int));
        }
        tab[3][4] = 1; // probowalem tez *(*(tab+3)+4) = 1; <- taki sam efekt
        printf(" \n");
        for(i=0; i<rozmiar; i++) printf ("%d", i);
        printf ("\n");
        for(i=0; i<rozmiar; i++)
        {
             printf("%d", i);
             for(j=0; j<rozmiar ; j++) if (tab[i][j] == 1)  printf ("!");
             printf("\n");
        }
        for(k=0;k<rozmiar;k++) free(tab[k]);
        free(tab);
        return 0;
    }




    Wszystko ladnie sie kompiluje, tylko dlaczego jak uruchamiam program, to wykrzyknik pokazuje sie w innym miejscu. Jestem zielony w tych tablicach dynamicznych. Jest to program cwiczeniowy, bez wiekszego celu.
    Tutaj jest wynik programu

    Tablica dynamiczna dwuwymiarowa w C
    Proszę umieszczać kod w znacznikach [code].
    [Dr.Vee]
  • #2
    x3r
    Level 18  
    Nie bardzo wiem co chcesz osiągnąć. Jak na mój gust wykrzyknij pojawia się dokładnie tam gdzie się można spodziewać po przeczytaniu kodu. Wyjaśnij jaki wynik chciałeś uzyskać to pomożemy.

    pozdrawiam
  • Helpful post
    #3
    Matejkos
    Level 20  
    Myślę że kolega chciał aby ! był w miejscu 3,4 ale tak się nie stało dlaczego?
    Otóż myślę że wystarczą 2 zmiany jedna to przed wydrukiem na ekranie dodaj spacje po \n w funkcji printf co ładnie zacznie drukować górny wiersz od znaku dale przez co później będzie ta tabela wyglądać jak tabela.
    A teraz główny błąd sprawdzasz czy jesteś w określonym miejscu ale miejsca nie zmieniasz to znaczy for z j przechodzi dalej nie robiąc nic dodaj w instrukcji if co ma robić kiedy warunek nie jest spełniony i każ wydrukować spacje wtedy wszystko powinno ładnie Działać
    Pozdrawiam Matejkos
  • #4
    Cinx21
    Level 2  
    Ok super dzięki! Problem nie był w tablicy dynamicznej tylko w petli for, a raczej if :) Juz sie wszystko się rozjaśniło.
    Pozdrawiam,
    Marcin