Co wypisze program? Nie wypisuje elementów podanych tablicy

2015-02-05 16:23
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 ?

Pozostało 580 znaków

2015-02-05 16:41
0

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


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans, 2015-02-05 16:42
źle opisał, ale chodziło o 21-szy element tekst[20]=='i' - twonek 2015-02-05 16:45

Pozostało 580 znaków

2015-02-05 16:43
0

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

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

Pozostało 580 znaków

2015-02-05 17:08
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

Pozostało 580 znaków

2015-02-05 17:15
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`

to funkcja rekurencyjna dlatego tak jakby od tyłu wypisują się te litery? - nowicjusz35 2015-02-05 18:30
Odpal debuggera, leć przez program linijka po linijce to zrozumiesz. Albo jakiś bardzo dobry tekst o rekurencji musisz przeczytać. - twonek 2015-02-05 23:25

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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