• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Język C...dlaczego if wykona polecenie dwa razy?

0 głosów
108 wizyt
pytanie zadane 3 listopada 2020 w C i C++ przez BIREXD Obywatel (1,180 p.)

Witam mam taki kod:

#include <stdio.h>

int main()
{
    double a, c;
	char b;
	
	printf("---------- KALKULATOR ----------\n\n");
	
	printf("Jakie dzialanie chcesz wykonac?\n");
	printf("+ - Dodawanie\n");
	printf("- - Odejmowanie\n");
	printf("* - Mnozenie\n");
	printf("/ - Dzielenie\n");
	printf("k - Koniec programu\n\n");
	
	printf("Wprowadz odpowiedni znak: ");
	scanf("%c", &b);
	printf("---------------------------\n");
	
	for(char bufor=' '; bufor!='Y'; )
	{
		if(b != '+' && b != '-' && b != '*' && b != '/' && b != 'k')
		{
			printf("Podany znak jest nieprawidlowy! \n Wprowadz odpowiedni znak:");
			scanf("%c", &b);
		}
		
		else bufor = 'Y';
	}
		printf("%c" , b);
}

Po wprowadzeniu innego znaku wyświetla mi się komunikat:

Podany znak jest nieprawidlowy!
Wprowadz odpowiedni znak: Podany znak jest nieprawidlowy!
Wprowadz odpowiedni znak:

Moje pytanie polega na tym dlaczego to jest zdublowane...nie mam pomysłu jak to rozwiązać. Wiem że mogę skorzystać z innego rozwiązanie ale muszę to zrobić za pomocą pętli for oraz if.

1 odpowiedź

+1 głos
odpowiedź 3 listopada 2020 przez tangarr Mędrzec (155,180 p.)
wybrane 3 listopada 2020 przez BIREXD
 
Najlepsza

Funkcja scanf wczytuje ci znak nowej linii (enter) z bufora.

Wystarczy lekko zmodyfikować format, żeby funkcja zaczęła ignorować białe znaki.

scanf(" %c", &b);
komentarz 3 listopada 2020 przez BIREXD Obywatel (1,180 p.)
Faktycznie...dziękuje za pomoc

Podobne pytania

0 głosów
2 odpowiedzi 312 wizyt
pytanie zadane 3 marca 2018 w C i C++ przez Kuelo Początkujący (410 p.)
0 głosów
1 odpowiedź 250 wizyt
pytanie zadane 22 listopada 2015 w C i C++ przez Sinnley Stary wyjadacz (12,810 p.)
0 głosów
1 odpowiedź 4,354 wizyt

93,424 zapytań

142,421 odpowiedzi

322,646 komentarzy

62,785 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...