Kalkulator - jak zatrzymać instrukcje warunkowa? (if)

0

Witam. Mój problem polega na tym że, nie umiem zrobić zęby po wciśnięciu klawisza 't' znowu mi wracał do ostatniego działania.. Podam kod i sami zobaczcie o co mi chodzi. Może mi ktoś to wytłumaczyć jak to zrobić żeby wszystko dobrze działało? czekam na odpowiedz. Pozdrawiam

#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{

 float a,b,c,wynik, delta, x, x1, x2, pierwiastek;
 int liczba, key ;
 char t;
 printf("Kalkulator \n");
 start:
 printf("1. Dodawanie\n");
 printf("2. Odejmowanie\n");
 printf("Wybrales: ");
	while(key)
	{

		if (_kbhit())
		{
			key = _getch();
			if (key == '1')
			{
			dodawanie:	
			printf("\t\t1. Wybrales dodawanie\n");
			printf("\nPodaj a : ");
			scanf("%f", &a);
			printf("\nPodaj b : ");
			scanf("%f", &b);
			wynik = a+b;
			printf("\nWynnik = %f", wynik);
			printf("\njeszcze raz? tak = 't' inne dzialanie 'z', wyjscie 'esc'\n");		
			}
			else if (key == 't')
			{
				goto dodawanie;	
			}
			if (key == '2')
			{
			odejmowanie:	
			printf("\t\t1. Wybrales odejmowanie\n");
			printf("\nPodaj a : ");
			scanf("%f", &a);
			printf("\nPodaj b : ");
			scanf("%f", &b);
			wynik = a-b;
			printf("\nWynnik = %f", wynik);
			printf("\njeszcze raz? tak = 't' inne dzialanie 'z', wyjscie 'esc'\n");	
			}
			else if (key == 't')
			{
				goto odejmowanie;	
			}
			if (key == 'z')
			{
				goto start;
			}
  		}
	}

}
```c

0
  1. Pozbądź się goto
  2. Użyj normalnej pętli while.
0

Poza tym... po wciśniętu t ładnie wraca do dodawania - przynajmniej u mnie. Jeśli chodzi o odejmowanie to sorry, ale skracając masz:
else if (key == 't') goto dodawanie;
[...]
else if (key == 't') goto odejmowanie;
Przecież zawsze wykona się pierwszy if.

0

Przerób if`y na switch i dodaj w case funkcje. Łatwiej się potem odnaleźć w ifach

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