Sprawdzanie czy arg jest intem.

0

Witajcie! Jestem świeżakiem na forum jak i w programowaniu.
Mam problem z warunkiem, który sprawdzałby czy przypadkiem użytkownik nie chce wpisać litery zamiast liczby.
Taki if nie chce mi przejść i przogram wykonuje się w nieskończoność

if (a=='char' || b=='char')
	break;

Warunek ten umieściłem po pobraniu a,b i przed switchem.

Może jakiś głupi błąd robię to prosiłbym o pomoc tak samo jak i mniejsze baty bo jestem początkujący xD

0

Użyj funkcji isdigit.

0

użyj to co @up, a to działa tak

bool isDigit(char n){
    return n>='0'&&n<='9';
}

Chyba, że chodzi Ci o to Zabezpieczenie przed wpisywaniem liter

1

Albo normalnie.

int main()
{
    int a;
    while(!(scanf("%d",&a)))
    {
        printf("Error\n");
        fflush(stdin);
    }
    printf("%d",a);
    return 0;
}

@up

Troche sie spoznilem. Szukalem w artykulach tego i nie moglem znalezc linka ;) To przepisalem sam.

0

Właśnie analizuję wasze odpowiedzi i zaraz dam znać czy pomogło.

Edit:

Jednak nie mogę sobie poradzić z tak prostym zadaniem xD
mój kod:

// Prosty kalkulator obslugujacy obliczenia: +, -, *, /, %;

#include <stdio.h>

int main()
{
	int dzialanie, a, b;
	printf("Witaj w prostym kalkulatorze.");
	do
	{
 		printf("\nWybierz dzialanie jakie chcesz przeprowadzic:\n"
		"1. Dodawanie \n2. Odejmowanie \n3. Mnozenie \n4. Dzielenie \n5. Modulo \n0. Wyjscie\n\n");
		scanf("%d", &dzialanie);
		if(dzialanie!=0 && dzialanie<6)
		{
			printf("\nPodaj liczby do dzialania: ");
			scanf("%d %d", &a, &b);
		}

		switch(dzialanie)
		{
			case 1:
				printf("%d + %d = %d\n", a, b, a+b);
				break;
			case 2:
				printf("%d - %d = %d\n", a, b, a-b);
				break;
			case 3:
				printf("%d * %d = %d\n", a, b, a*b);
				break;
			case 4:
				printf("%d / %d = %.3f\n", a, b, (float)a/b);
				break;
			case 5:
				printf("%d %d = %d\n", a, b, a%b);
				break;
			case 0:
				break;
			default:
   				printf("Blad\n");
   				break;
		}
	}
	while(dzialanie!=0);
	printf("Dziekujemy za skorzystanie programu.\nZegnaj.\n");

	return 0;
}

Nie wiem w którym miejscu mam wstawić Twój kod @Krycho
Próbowałem jednak wywala mi działanie:

0 + 1 = 1

Edit2
Chyba się poddam, bo brak mi tak banalnych umiejętności...

if(dzialanie!=0 && dzialanie<6)
		{
			printf("\nPodaj liczby do dzialania: ");
			while(!(scanf("%d %d", &a, &b)<2));
			{
				printf("Error\n");
				fflush(stdin);
			}
		}

		switch(dzialanie)

wpisuje dwa inty i dalej czeka na wpisanie a jak wpisze char to procek idzie w ruch
Co robić?

1
    int a,b;
    while(scanf("%d %d",&a,&b)!=2)
    {
        cout << "error\n";
        fflush(stdin);
    }

Wpisujac cokolwiek innego niz 2 liczby bedzie error.

0
// Prosty kalkulator obslugujacy obliczenia: +, -, *, /, %;

#include <stdio.h>
#include <ctype.h>

int main()
{
	int dzialanie, a, b;
	printf("Witaj w prostym kalkulatorze.");
	do
	{
 		printf("\nWybierz dzialanie jakie chcesz przeprowadzic:\n"
		"1. Dodawanie \n2. Odejmowanie \n3. Mnozenie \n4. Dzielenie \n5. Modulo \n0. Wyjscie\n\n");
		scanf("%d", &dzialanie);
		if(dzialanie!=0 && dzialanie<6)
		{
			printf("\nPodaj liczby do dzialania: ");
			while(scanf("%d %d", &a, &b)!=2);
			{
				printf("Error\n");
				fflush(stdin);
			}
		}
		
		{
		switch(dzialanie)
		{
			case 1:
				printf("%d + %d = %d\n", a, b, a+b);
				break;
			case 2:
				printf("%d - %d = %d\n", a, b, a-b);
				break;
			case 3:
				printf("%d * %d = %d\n", a, b, a*b);
				break;
			case 4:
				printf("%d / %d = %.3f\n", a, b, (float)a/b);
				break;
			case 5:
				printf("%d %d = %d\n", a, b, a%b);
				break;
			case 0:
				break;
			default:
   				printf("Blad\n");
   				break;
		}
		}
	}	
	while(dzialanie!=0);
	printf("Dziekujemy za skorzystanie programu.\nZegnaj.\n");

	return 0;
}

Jak wpisuję int i char to program łapie zwiechę. jeśli wpisuję dwa inty to i tak wyświetla error i czeka na podanie numeru kolejnego działania. Co tu jest dalej nie tak?

EDIT:

Dobra już wiem co jest nie tak xD Średnik po while xD Już (chyba) działa tak jak powinno. Dzięki jeszcze raz za pomoc :)

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