2-rozmerné pole v C

Programovacie jazyky, rady, poradňa...
pakman
Medium Expert
Medium Expert
Príspevky: 100
Registrovaný: 13 okt 2009, 21:51

2-rozmerné pole v C

Príspevok od používateľa pakman »

Ahojte, tu je môj kód:

Kód: Vybrať všetko

#include <stdio.h>

int main()
{
    int sirka,vyska,i,j;
    char strecha[50][50];

    printf("Zadaj pocet riadkov\n");
    scanf("%d", &vyska);
    printf("Zadaj pocet stlpcov\n");
    scanf("%d", &sirka);
    printf("Nakresli strechu\n");
    for(i=1;i<=sirka;i++){
        for(j=1;j<=vyska;j++){
            printf("Zadaj bod %d.%d\n", i, j);
            scanf("%c", &strecha[i][j]);
        }
    }
    for(i=1;i<=sirka;i++){
        for(j=1;j<=vyska;j++){
            printf("%c", strecha[i][j]);
        }
        printf("\n");
    }
}
-keď to spustím tak ma vypíta:
zadaj bod 1.1
zadaj bod 1.2
teda vypíta odomňa naraz dva prvky poľa, malo by ma to pýtať po jednom prvku poľa, ale keď som zmenil pole na typ int, tak to funguje ako má, ako je to možné?
Aiden
Darca
Darca
Používateľov profilový obrázok
Príspevky: 2213
Registrovaný: 06 apr 2007, 14:28

Re: 2-rozmerné pole v C

Príspevok od používateľa Aiden »

medzi

Kód: Vybrať všetko

printf("Zadaj bod %d.%d\n", i, j);
scanf("%c", &strecha[i][j]);
pridaj

Kód: Vybrať všetko

fflush(stdin);
Pravdepodobne ti to berie enter este zo zadania poctu stlpcov.
pakman
Medium Expert
Medium Expert
Príspevky: 100
Registrovaný: 13 okt 2009, 21:51

Re: 2-rozmerné pole v C

Príspevok od používateľa pakman »

diky, robil som to cez ten int, ale teraz mám iný problém..

Kód: Vybrať všetko

#include <stdio.h>

int main()
{
    int i,j,a;
    int strecha[4][4];
    strecha[1][1]=0;
    strecha[1][2]=1;
    strecha[1][3]=1;
    strecha[1][4]=0;
    strecha[1][5]=0;
    strecha[2][1]=0;
    strecha[2][2]=0;
    strecha[2][3]=0;
    strecha[2][4]=0;
    strecha[2][5]=0;
    strecha[3][1]=0;
    strecha[3][2]=1;
    strecha[3][3]=1;
    strecha[3][4]=1;
    strecha[3][5]=1;
    strecha[4][1]=1;
    strecha[4][2]=1;
    strecha[4][3]=1;
    strecha[4][4]=1;
    strecha[4][5]=0;
    strecha[5][1]=0;
    strecha[5][2]=1;
    strecha[5][3]=1;
    strecha[5][4]=1;
    strecha[5][5]=0;

    printf("Strecha:\n");
    for(i=1;i<=5;i++){
        for(j=1;j<=5;j++){
            printf("%d", strecha[i][j]);
        }
        printf("\n");
    }
    for(i=2;i<=4;i++){
        for(j=2;j<=4;j++){
            a=1;
            if(strecha[i-1][j]==0)
                a=0;
            else if(strecha[i-1][j-1]==0)
                a=0;
            else if(strecha[i-1][j+1]==0)
                a=0;
            else if(strecha[i+1][j-1]==0)
                a=0;
            else if(strecha[i+1][j+1]==0)
                a=0;
            else if(strecha[i+1][j]==0)
                a=0;
            else if(strecha[i][j-1]==0)
                a=0;
            else if(strecha[i][j+1]==0)
                a=0;
            if(a==1)
                strecha[i][j]=2;
        }
    }
    printf("Strecha s bezpecnymi miestami:\n");
    for(i=1;i<=5;i++){
        for(j=1;j<=5;j++){
            printf("%d", strecha[i][j]);
        }
        printf("\n");
    }
}
-podľa toho by som mal mať na tej prvej "streche" iba jednotky a nuly, ale mne tam hodí aj štvorku a päťku, okrem toho mi to už aj padne po vykonaní kódu..

RE: aha tak už som to upravil na int strecha[5][5];
-ale v tom problém nebol, hádže mi to do toho poľa hocijaké čísla, teraz iba jedna päťka navyše, predtým mi tam hodilo 2 čísla, ktoré som tam nezadal, nwm či to bude kompilátorom alebo čím, skúsil som to cez LCC compiler, ale výsledok bol ten istý
Napísať odpoveď