Cześć.
Program działa poprawnie do momentu, gdy należy wpisać cyfrę odwołującą do linijki ‘case’; po wpisaniu którejś z cyfr program w tym momencie przeskakuje do końca instrukcji switch wyświetlając komunikat z default.
Getchar dobrze szczytuję liczbę (sprawdzone scanf).
#include <stdio.h>
int main(){
int x; //liczba calkowita I
int y; //liczba calkowita II
char z;
printf("KALKULATOR OBSLUGUJE DZIALANIA: DODAWANIE, ODEJMOWANIE, MNOZENIE, DZIELENIE; \n\tNASTEPNIE PODAJE WYNIK ");
//wczytywanie danych
printf("\n\nPodaj x (liczbe calkowita w systemie dziesietnym): ");
if (scanf("%d",&x)!=1 || getchar()!='\n'){
printf("Bledne dane.\n");
printf("\nKoniec programu.\n");
return 0;
}
printf("Podaj y (liczbe calkowita w systemie dziesietnym): ");
if (scanf("%d",&y)!=1 || getchar()!='\n'){
printf("Bledne dane.\n");
printf("\nKoniec programu.\n");
return 0;
}
//wyswietlenie danych
printf("\nOto Twoje dane:");
printf("\nPodales x = %d\n",x);
printf("Podales y = %d\n",y);
//menu wyboru dzialan
printf("\nProgram prosi o wybranie dzialania z menu wciskajac dla:\n");
printf("Dodawania (1), odejmowania (2), mnozenia (3), dzieleni (4)\t");
z=getchar();
printf("\n\n%c\n\n",z);
switch(z)
{
case 1:
{
printf("\nWybrales dodawanie, oto wynik:%d",x+y);
break;
}
case 2:
{
printf("\nWybrales odejmowanie, oto wynik:%d",x-y);
break;
}
case 3:
{
printf("\nWybrales mnozenie, oto wynik:%d",x*y);
break;
}
case 4:
{
printf("\nWybrales dzielenie, oto wynik:%d",x/y);
break;
}
default :
{
printf("Nie znam takiego dzialania");
break;
}
}
printf("\n\nKoniec programu.\n");
printf("Autor programu: Damian\n\n");
return 0;
}