Co wypisze program? Nie wypisuje elementów podanych tablicy

0

Mam taki kod:

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

char rek(int x, int y, char *tekst)
{
    printf("\nx = %d \ny = %d\n",x,y);
    if(x == 0) return 'x';
    if(x < 0) rek(23, y < 0 ? 3 : 13, tekst);
    if(x > 0)
    {
        if(x > 10) rek(x - y, x > 10 ? 18 : 5,tekst);
        else rek(x - 5, 0 , tekst);
        printf("%c",tekst[x]);
    }

}
int main()
{
    rek(-1, - 1, "Podstawy programowania 2013");
    return 0;
}

x i y wyszły mi dobre bo sprawdziłem komendą printfe w kodzie. Ale jeśli jest x = 20 to powinno wypisać 20 element tablicy czyli literę i, a wypisuję literę a. Czemu tak się dzieje ?

0

Wróć do podstawówki. Jeśli x=20, to wypisuje 21 element. tekst[20] jest 21 pierwszym elementem tablicy.

0

Zamiast się zastanawiać i zgadywać wypisuj te zmienne:

printf("(x=%d) %c \n", x, tekst[x]);
0

Dodałem

printf("(x=%d) %c \n", x, tekst[x]); 

i nie mogę zrozumieć dlaczego dla np. pierwszy wypis to x = 5 jak mam x = 20

0

Bo nie masz x = 20.

Cały output programu przecież tak wygląda (nawet zaznaczyłem Ci który x odpowiada któremu printf):
`x = -1
y = -1

x = 23
y = 3

x = 20
y = 18

x = 2
y = 18

x = -3
y = 0

x = 23 (3)
y = 13

x = 10 (2)
y = 18

x = 5 (1)
y = 0

x = 0
y = 0
(x=5) a (1)
(x=10) r (2)
(x=23) 2 (3)
(x=2) d
(x=20) i
(x=23) 2`

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