Kalkulator - jak zatrzymać instrukcje warunkowa? (if)

Kalkulator - jak zatrzymać instrukcje warunkowa? (if)
M9
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 11 lat
  • Postów:1
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

Kopiuj
#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

Kopiuj
edytowany 1x, ostatnio: miecho91
madmike
!Temat wątku ma w sposób jasny opisywać problem, jedno słowo kalkulator i wielkie pomocy nic nie opisuje. Zmień temat, bo inaczej wątek trafi do kosza!
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0
  1. Pozbądź się goto
  2. Użyj normalnej pętli while.

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
TU
  • Rejestracja:około 19 lat
  • Ostatnio:prawie 6 lat
  • Lokalizacja:Lublin
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.

D7
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 8 lat
  • Postów:5
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.