Problem z pętlą do while

0

Witam!
Wie ktoś, dlaczego po wpisaniu liczby '1' pętla do while nie chce działać?

#include <stdio.h>

int main(void)
{
int tab[8];
int i, k, l, q;
const int j = 1;

    printf("Czesc\n");

    for (l=2, k=-1; k<8; k++)
    tab[k] = pow(l, k);

k=0;

do
{
        printf("Aby zobaczyć pierwsze osiem poteg liczby %d wpisz 1?\n", l);
        scanf("%d", &q);

}while(q != j);
{

    printf("%d\n", tab[k]);
    k++;
}
}
 
0

Dlaczego zaczynasz k od -1?

W wypisywaniu nie ma żadnej pętli, co nie działa? for działa, druga while(q != j); działa.

0

Zacząłem od -1, ponieważ po zwiększeniu o 1 zaczyna od 0. Jak wpisze 0 to zwiększy o 1 i zacznie od 1. Chyba, że źle to rozumiem. A co do pętli to mi nie działa. Gdy wpisuję '1' wyskakuje mi:
Process returned 2 <0x2) execution time : 2.114 s
Press any key to continue.

0

Dodaj na koniec return 0;.

Nie zacznie od 0, zacznie od -1 bo tak napisałeś.

Edit: zauważyłem dopiero teraz, że jeszcze brakuje #include <math.h>.

Kod działa tak, jak napisałeś:

endrju@kormoran smieciki % gcc -std=c1x -Wall -Wextra -lm 4pwtf.c
4pwtf.c: In function ‘main’:
4pwtf.c:7:5: warning: unused variable ‘i’ [-Wunused-variable]
endrju@kormoran smieciki % ./a.out 
Czesc
Aby zobaczyć pierwsze osiem poteg liczby 2 wpisz 1?
1
1
0

A co do samego kodu, to dla zainteresowanych:

#include <stdio.h>
#include <math.h>

int main(void)
{
int tab[8];
int i, k, l, q;
const int j = 1;

    printf("Czesc\n");

    for (l=2, k=0; k<=8; k++)
    tab[k] = pow(l, k);

do
{
        printf("Aby zobaczyæ pierwsze osiem poteg liczby %d wpisz 1?\n", l);
        scanf("%d", &k);

}while(k=!j);
{
    for(k=0; k<8; k++)
    printf("%d\n", tab[k]);
}

getchar();
return 0;
} 

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