Pisze sobie taki prosty kalkulatorek w ANSI C i mam pewien problem, a mianowicie lekko mi się zapętla i nie wiem jak temu zaradzić. Wszystko dzieje sie w funkcji dalej, gdzie po wybraniu opcji t obraz mrugnie tylko i nadal jest to samo pytanie, a powinno przejść do pytania drugiego (Czy na tych samych liczbach). Przy wybieraniu opcji n ładnie przechodzi i zamyka program. Dodam jeszcze, że po wpisaniu tt przechodzi dalej, wyświetla drugie pytanie, ale tak jakby z automatyczną odpowiedzią i dalszą instrukcją (taką jak w przypadku pozytywnej odpowiedzi). Kompletnie nie wiem jak sobie z tym poradzić...
#include <stdio.h>
#include <conio.h>
int a,b, operacja;
int warunek1, warunek;
char decyzja, decyzja2;
void menu ()
{
printf("\tTwoje liczby a= %d\tb= %d\n\nTypy operacji: \n1. Dodawanie\n2. Odejmowanie\n3. Mnozenie \n4. Dzielenie\n0. Zakonczenie dzialania programu\n\nOperacja: \t", a, b);
scanf("%d", &operacja);
}
int dodawanie (int x, int y)
{
int suma;
suma = x+y;
return suma;
}
int odejmowanie (int x, int y)
{
int roznica;
roznica = x-y;
return roznica;
}
int mnozenie (int x, int y)
{
int iloczyn;
iloczyn = x*y;
return iloczyn;
}
int dzielenie (int x, int y)
{
int iloraz;
iloraz = x/y;
return iloraz;
}
void dalej ()
{
printf("\n\nCzy chcesz kontynuowac? (t/n)");
decyzja = getchar();
if(decyzja == 't'){
system("cls");
printf("\n\n\nNa tych samych liczbach? (t/n)");
decyzja2 = getchar();
if(decyzja2 == 't'){
menu();
}
else if(decyzja2 == 'n'){
}
}
else if(decyzja == 'n'){
warunek = 0;
warunek1 = 0;
system("cls");
printf("Milego dnia...");
}
}
int main()
{
printf(".....:::::KALKULATOR:::::.....\n \n");
warunek1 = 1;
warunek = 1;
while(warunek1 == 1){
printf("Podaj pierwsza liczbe: ");
scanf("%d", &a);
printf("Podaj druga liczbe: ");
scanf("%d", &b);
system("cls");
menu ();
while(warunek == 1){
switch(operacja){
case 1: system("cls");
printf("\nSuma liczb %d i %d wynosi: %d", a, b, dodawanie (a, b));
dalej ();
break;
case 2: system("cls");
printf("\nRoznica liczb %d i %d wynosi: %d", a, b, odejmowanie (a, b));
dalej ();
break;
case 3: system("cls");
printf("\nIloczyn liczb %d i %d wynosi: %d", a, b, mnozenie( a, b));
dalej ();
break;
case 4: system("cls");
printf("\nIloraz liczb %d i %d wynosi: %d", a, b, dzielenie (a, b));
dalej ();
break;
case 0: system("cls");
printf("Milego dnia...");
warunek = 0;
warunek1 = 0;
break;
default: system("cls");
printf("Nie ma takiej operacji, podaj prawidlowy typ operacji jaka ma zostac wykonana!\n\n");
menu ();
warunek = 1;
warunek1 = 0;
break;
}
}
}
getch();
return 0;
}