Pętla while.. do nie działa w prostym programie[C]. Co źle robię

0

Witajcie
Mam następujący problem w języku [C].
nie umiem własciwie skorzystac z pętli while..do

Daje przykładowy krótki programik własnie z ta pętlą.
Chciałbym, aby po wpisaniu kodu (tutaj litery 'x'), program się zaczynał od początku, a po wpisaniu każdej innej się kończył.

Poprawcie mi to co źle robię. rozkminiam ten temat i już ponad 1 godzine i nie moge ruszyć z miejsca.
Ten programik to tylko taki przykładowy:

 #include <stdio.h>
#include <conio.h>
main()
{
int liczba1,liczba2; 
int kod;

do
{
printf("\n Podaj pierwsza liczbe: ");
scanf("%d",&liczba1); 
printf("\n Podaj druga liczbe: ");
scanf("%d",&liczba2);
printf("\n Iloczyn: %d * %d = %d",liczba1,liczba2,liczba1*liczba2);
printf("\n Iloraz: %d : %d = %d",liczba1,liczba2,liczba1/liczba2);
printf("\n Suma: %d + %d = %d",liczba1,liczba2,liczba1+liczba2);
printf("\n Roznica: %d - %d = %d",liczba1,liczba2,liczba1-liczba2);
printf("\n");
printf("\n");
printf("Podaj kod:  ");
scanf("%c",&kod);
}
while(kod=='x');
getch();
return 0;
}
0

Zamiast int kod char kod, nie krzywdź do while!

0
#include <stdio.h>
#include <conio.h>
main()
{
int liczba1,liczba2; 
char kod;

do
{
printf("\n Podaj pierwsza liczbe: ");
scanf("%d",&liczba1); 
printf("\n Podaj druga liczbe: ");
scanf("%d",&liczba2);
printf("\n Iloczyn: %d * %d = %d",liczba1,liczba2,liczba1*liczba2);
printf("\n Iloraz: %d : %d = %d",liczba1,liczba2,liczba1/liczba2);
printf("\n Suma: %d + %d = %d",liczba1,liczba2,liczba1+liczba2);
printf("\n Roznica: %d - %d = %d",liczba1,liczba2,liczba1-liczba2);
printf("\n");
printf("\n");
printf("Podaj kod:  ");
scanf("%c",&kod);
}
while(kod=='x');
getch();
return 0;
}
 

Dałem char kod ale niec sie nie zmieniło. Po prostu nie mogę wpisać nic.Po nacisnieciu dowolnego klawisza program sie zamyka. Czy to jes backspace,enter,esc, dowolna litera się kończy. Może mógłby go ktoś skompilować tak żeby działał. Bardzo by mi to pomogło :)

0

Spróbuj dodać fflush(stdin); przed scanf. Chwilowo nie mogę go niestety skompilować i przetestować.

PS. dla wiedzących o co chodzi - (t0my <-> t0m_k) ;)

1

no właśnie fflush(sdout) (ani stdin) nie działa. też miałem taki problem, na jednym forum znalazłem rozwiązanie:

scanf(" %c",&kod); //spacja przed %c

aż tak bardzo nie jestem ogarnięty teoretycznie z C - czy ktoś mógłby wytłumaczyć raz na zawsze, czemu spacja w scanf działa, a fflush nie?

0

http://pl.wikibooks.org/wiki/C/scanf

Wystąpienie w formacie białego znaku powoduje, że funkcje z rodziny scanf będą odczytywać i odrzucać znaki, aż do napotkania pierwszego znaku nie będącego białym znakiem.

Wszystkie inne znaki (tj. nie białe znaki oraz nie sekwencje sterujące) muszą dokładnie pasować do danych wejściowych.

Wszystkie białe znaki z wejścia są ignorowane, chyba że sekwencja sterująca określa format [, c lub n.

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