• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

kalkulator C++

Object Storage Arubacloud
0 głosów
551 wizyt
pytanie zadane 12 marca 2019 w C i C++ przez Nicolog Nowicjusz (120 p.)
edycja 12 marca 2019 przez Nicolog

Witam zaczynam co dopiero zabawe z programowaniem w c++ i chciałem napisac kalkulator w pliku exe używajac  CRl i oto wyskoczył mi taki problem przy obliczaniu wyniku :

Jakby mogł ktos to wyjaśnić to byłbym wdzieczny 




	
		

#pragma endregion
		double ifirstnum;
		double isecondnum;
		double iresult;
		String^ ioperation;

	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {


	}
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
	

}
private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {
	
}
private: System::Void button4_Click(System::Object^  sender, System::EventArgs^  e) {
	

}
private: System::Void button5_Click(System::Object^  sender, System::EventArgs^  e) {
	

}
private: System::Void button6_Click(System::Object^  sender, System::EventArgs^  e) {
	

}
private: System::Void button7_Click(System::Object^  sender, System::EventArgs^  e) {
	

}
private: System::Void button8_Click(System::Object^  sender, System::EventArgs^  e) {
	

}
private: System::Void button9_Click(System::Object^  sender, System::EventArgs^  e) {
	

}
private: System::Void button13_Click(System::Object^  sender, System::EventArgs^  e) {
	
}
private: System::Void button14_Click(System::Object^  sender, System::EventArgs^  e) {
	lblDisplay->Text = "0";
	lblShowOp->Text = "";
}
private: System::Void button10_Click(System::Object^  sender, System::EventArgs^  e) {
	
}
private: System::Void button11_Click(System::Object^  sender, System::EventArgs^  e) {
	
}
private: System::Void button15_Click(System::Object^  sender, System::EventArgs^  e) {
	
}
private: System::Void button16_Click(System::Object^  sender, System::EventArgs^  e) {
	
}
private: System::Void button12_Click(System::Object^  sender, System::EventArgs^  e) {

	lblDisplay->Text = "";
	isecondnum = Double::Parse(lblDisplay->Text);
	
	
	if (ioperation == "+")
	{
		iresult = ifirstnum + isecondnum;
		lblDisplay->Text = System::Convert::ToString(iresult);
	}
	else if(ioperation == "-")
	{
		iresult = ifirstnum - isecondnum;
		lblDisplay->Text = System::Convert::ToString(iresult);
	}
	else if (ioperation == "*")
	{
		iresult = ifirstnum * isecondnum;
		lblDisplay->Text = System::Convert::ToString(iresult);
	}
	else if (ioperation == "/")
	{
		iresult = ifirstnum / isecondnum;
		lblDisplay->Text = System::Convert::ToString(iresult);
	}
}
private: System::Void MyForm1_Load(System::Object^  sender, System::EventArgs^  e) {
	
}
private: System::Void maskedTextBox1_MaskInputRejected(System::Object^  sender, System::Windows::Forms::MaskInputRejectedEventArgs^  e) {
}
private: System::Void button17_Click(System::Object^  sender, System::EventArgs^  e) {
	if (!lblDisplay->Text->Contains("."))
	{
		lblDisplay->Text = lblDisplay->Text + ".";
		
	}
}

private: System::Void Button_click(System::Object^  sender, System::EventArgs^  e) {
	Button ^ Numbers = safe_cast<Button^>(sender);
	
	if (lblDisplay->Text == "0")
	{
		lblDisplay->Text = Numbers->Text;
		}
	else
	{
		lblDisplay->Text = lblDisplay->Text + Numbers->Text;
	}
}
private: System::Void Arithmetic(System::Object^  sender, System::EventArgs^  e) {
	Button ^ op = safe_cast<Button^>(sender);
	ifirstnum = Double::Parse(lblDisplay->Text);
	lblDisplay->Text = "";
	ioperation = op->Text;
	lblShowOp->Text = System::Convert::ToString(ifirstnum) + " " + ioperation;

}
private: System::Void lblDisplay_Click(System::Object^  sender, System::EventArgs^  e) {
}
};
}

 

1 odpowiedź

0 głosów
odpowiedź 12 marca 2019 przez niezalogowany

Podałeś w lblDisplay ciąg znaków, którego nie można zamienić na double (np mogłeś użyć przecinka jako separatora dziesiętnego). Obsłuż rzucany wyjątek, lub użyj Double::TryParse (zwraca true/false):

if (!Double::TryParse(lblDisplay->Text, isecondnum) {
    // Błąd!
}

PS. Nie warto uczyć się C++/CLI.

Podobne pytania

0 głosów
4 odpowiedzi 772 wizyt
pytanie zadane 8 kwietnia 2020 w C i C++ przez Miszka255 Początkujący (280 p.)
0 głosów
0 odpowiedzi 1,021 wizyt
pytanie zadane 23 lipca 2017 w C i C++ przez Slavian Początkujący (420 p.)
0 głosów
1 odpowiedź 2,416 wizyt
pytanie zadane 2 września 2018 w C i C++ przez Archeon Początkujący (480 p.)

92,588 zapytań

141,439 odpowiedzi

319,688 komentarzy

61,974 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...