Pętla while omija krok

0

Hej, mam do napisania program w którym user wybiera operator arytmetyczny a następnie 2 inty które są np. dodawane i ma to robić do czasu gdy nie wpisze "q". Działa przy pierwszej pętli, ale potem omija krok wyboru operatora i Od razu przechodzi do wyboru zmiennej a. O co chodzi?

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

int main()

{
	char oper;
	int a,b;

	while (oper !='q')
	{
		
	printf("\npodaj operator");
	scanf("%c",&oper);
	
	printf("\npodaj liczbe a");
	scanf("%d",&a);
	
	printf("\npodaj liczbe b");
	scanf("%d",&b);

	switch(oper)
	{
	case '+':printf("a+b=%d",a+b);
	break;
	
	case '-':printf("a-b=%d",a-b);
	break;
	
	case 'q':break;
	


	
	
	}	
	}
	
	
}
0

W tym wypadku lepiej wykorzystać pętlę do .. while, bo najpierw sprawdzasz co jest w zmiennej oper (tuż po deklaracji), a potem wpisujesz do niej wartość z klawiatury, przez co na koniec w instrukcji wyboru switch cudowanie;

3

scanf(" %c",&oper); // bardzo ważna spacja przed %c

0

Miałem podobny problem i rzeczywiście spacja pomogła. Ale czy mógłby mi ktoś wyjaśnić dlaczego ta spacja jest akurat tam potrzebna i dlaczego jak jej nie ma, to pętla co 2 obroty pomija pobranie litery?

0

http://www.cplusplus.com/reference/cstdio/scanf/
Od:

Whitespace character: the function will read ...

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