[Pomoc] Nie można wpisywać liter w kalkulatorze

0

Witam.
A więc tak siedzę nad tym z kilka godzin i nie mogę tego zrozumieć ;/.
No to przejdę do rzeczy napisałem kalkulator(trochę pomogły mi tutki w internecie).
Ale jak wiadomo w kalkulatorze powinno wpisywać się tylko liczby a nie litery :/

Tu jest mój kod:

///////////////////////////////////////////////////////////////
#include <windows.h>
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
#include <stdlib.h> 

using namespace std;



///////////////////////////////////////////////////////////////////////////////
void funkcje ( int type )
{
	HANDLE uchwyt;
	uchwyt = GetStdHandle(STD_OUTPUT_HANDLE);
	
	system("cls");
     
     switch( type )
     {
             case 5:
             cout<<"====================="<<endl<<endl;
             SetConsoleTextAttribute(uchwyt,3);
             cout<<"Witaj w Kalkulatorze! "<<endl;
             cout<<endl;
             SetConsoleTextAttribute(uchwyt,7);
             cout<<"====================="<<endl;
             cout<<"= 1 Dodawanie          "<<endl;
             cout<<"= 2 Odejmowanie      "<<endl;
             cout<<"= 3 Mnozenie           "<<endl;
             cout<<"= 4 Dzielenie           "<<endl;
             cout<<"= 0 Wyjscie         "<<endl;
             cout<<"====================="<<endl;
             break;
             
			 case 1:
			{
             cout<<"==================================="<<endl;
             SetConsoleTextAttribute(uchwyt,3);
             cout<<"              Dodawanie          "<<endl;
			 SetConsoleTextAttribute(uchwyt,7);    
             cout<<"==================================="<<endl;
             cout<<"Witaj w Programie Dodawanie!"<<endl;
             cout<<"==================================="<<endl;
			 cout<<"Pierwsza cyfra: ";
			 float a;
			 std::cin >> a;
			 cout<<"Druga cyfra: ";
			 float b;
			 std::cin >> b;
			 cout<<"Wynik: "<< a << " + " << b << " = " << a + b << std::endl << std::endl << std::endl;
			 cout<<endl;
			 cout<<endl;
             cout<<endl;
             cout<<"==================================="<<endl;
             cout<<"Aby wrocic do menu wcisnij 0"<<endl;
             cout<<"==================================="<<endl;
			}            
             break; 

             case 2:
			{
             cout<<"==================================="<<endl;
             SetConsoleTextAttribute(uchwyt,3);
             cout<<"              Odejmowanie         "<<endl;
			 SetConsoleTextAttribute(uchwyt,7);    
             cout<<"==================================="<<endl;
             cout<<"Witaj w Programie Odejmowanie!"<<endl;
             cout<<"==================================="<<endl;
			 cout<<"Pierwsza cyfra: ";
			 float c;
			 std::cin >> c;
			 cout<<"Druga cyfra: ";
			 float d;
			 std::cin >> d;
			 cout<<"Wynik: "<< c << " - " << d << " = " << c - d << std::endl << std::endl << std::endl;
			 cout<<endl;
			 cout<<endl;
             cout<<endl;
             cout<<"==================================="<<endl;
             cout<<"Aby wrocic do menu wcisnij 0"<<endl;
             cout<<"==================================="<<endl;
			}            
             break;     
             
             case 3:
			{
             cout<<"==================================="<<endl;
             SetConsoleTextAttribute(uchwyt,3);
             cout<<"              Mnozenie         "<<endl;
			 SetConsoleTextAttribute(uchwyt,7);    
             cout<<"==================================="<<endl;
             cout<<"Witaj w Programie Mnozenia!"<<endl;
             cout<<"==================================="<<endl;
			 cout<<"Pierwsza cyfra: ";
			 float e;
			 std::cin >> e;
			 cout<<"Druga cyfra: ";
			 float f;
			 std::cin >> f;
			 cout<<"Wynik: "<< e << " * " << f << " = " << e * f << std::endl << std::endl << std::endl;
			 cout<<endl;
			 cout<<endl;
             cout<<endl;
             cout<<"==================================="<<endl;
             cout<<"Aby wrocic do menu wcisnij 0"<<endl;
             cout<<"==================================="<<endl;
			} 
             break;
             
             case 4:
             {
             cout<<"==================================="<<endl;
             SetConsoleTextAttribute(uchwyt,3);
             cout<<"              Dzielenie         "<<endl;
			 SetConsoleTextAttribute(uchwyt,7);    
             cout<<"==================================="<<endl;
             cout<<"Witaj w Programie Dzielenie!"<<endl;
             cout<<"==================================="<<endl;
			 cout<<"Pierwsza cyfra: ";
			 float g;
			 std::cin >> g;
			 cout<<"Druga cyfra: ";
			 float h;
			 std::cin >> h;
			 if ( h == 0 )
			 std::cout << "Nie dziel przez 0!!!" << std::endl; 
			 else
			 std::cout << "Wynik dzielenia: " << g << " : " << h << " = " << g / h << std::endl << std::endl << std::endl;
			 cout<<endl;
			 cout<<endl;
             cout<<endl;
             cout<<"==================================="<<endl;
             cout<<"Aby wrocic do menu wcisnij 0"<<endl;
             cout<<"==================================="<<endl;
			} 
			break;
             
             }
	

}




///////////////////////////////////////////////////////////////////////////////
bool Kalkulator()
{
	int menu = 5;

	int klawisz = 100;

	bool redraw = 1;

	funkcje(menu);

	for(;;)
	{
		
		if(_kbhit())
		{
			klawisz = _getch();
			
			switch(menu)
			{

			// Menu glowne
			case 5:
				switch(klawisz)
				{
				case '1' : menu = 1; redraw = 1; break;
				case '2' : menu = 2; redraw = 1; break;
				case '3' : menu = 3; redraw = 1; break;
				case '4' : menu = 4; redraw = 1; break;
				case '0' : menu = 0; break;
				case 27  : menu = 0; break;
				default: cout<<"Nieznany klawisz!"<<endl; Sleep(100); redraw = 1; break;
				}
				break;
	
			// Menu Dodawania
			case 1:
				if( klawisz == '0' ) {menu = 5; redraw = 1;}
			break;


			// Menu Odejmowania
			case 2:
			if( klawisz == '0' ) {menu = 5; redraw = 1;}
			break;

			// Menu Mnozenia
			case 3:
				if( klawisz == '0' ) {menu = 5; redraw = 1;}
			break;

			// Menu Dzielenia
			case 4:
				if( klawisz == '0' ) {menu = 5; redraw = 1;}
			break;

			// Menu wyjscia
			case 0:
				{return 0;}
			}}

		if (redraw)
		{funkcje(menu);
		redraw = 0;}
	}



	return 0;
}

///////////////////////////////////////////////////////////////////////////////
int main()
{

	Kalkulator();

	return 0;
} 

Prosiłbym o gotowca tzn. o przerobienie mojego kodu na właściwy :).
Nie, że liczę na gotowe tylko z gotowców najlepiej się uczę, ponieważ sobie "przeskanuję" kod.

Oczywiście z góry thx :)

0
  1. podziel "funkcje" na funkcje

  2. cyfra to nie liczba

  3. zamień "SetConsoleTextAttribute(uchwyt,3);" na coś w rodzaju "SetConsoleTextAttribute(uchwyt,COL_BLUE);"
    gdzie COL_BLUE to twoja stała

  4. wydziel takie funkcje:

  • wyświetlenie
  • pobranie danych (jednej lub wszystkich potrzebnych)
  • obsłużenie komendy menu

po tym można skupić się na merytoryce:

  1. wartości float nie wolno porównywać z zerem
    if ( h == 0 )

  2. dodaj obsługę błędów jak w artykule wskazanym przez Shalom.

1

Spodobała mi się propozycja kacper546.
Tylko ona nie działa? Albo nie wiem w takim miejscu to umieścić :/
A tamte linki co mi podaliście nie ogarniam :/
Proszę o szybką odpowiedź, ponieważ muszę to mieć na jutro.

Z góry thx ;)

1

@n0name_l To może zamiast się mądrzyć, byś mi coś poradził?:)
Bo jak byś nie zauważył jestem początkujący :)

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