| Autor |
Nachricht |
lumma87
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.12.2010
Beiträge: 7
|
lumma87 Mitglied
21:03:13 22.02.2011 Titel: |
kleiner Taschenrechner |
Zitieren |
Servus Zusammen,
ich hoffe mir kann einer weiterhelfen.
Ich habe mir gerade mit WinForms einen kleinen Taschenrechner erstellt!
Er ist wie folgt aufgebaut:
2 TextBox für die Eingabe der zu Berechnenden Zahlen
1 Label als Anzeige für das Ergebnis
1 ComboBox mit den Mathematischen Zeichen z.B. + - * /
1 Button fürs Berechnen
Als erstes hatte ich die Mathematischen Zeichen mit RadioButton dargestellt und es hat alles geklappt:
| C++/CLI: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | private: System::Void cmdberechnen_Click(System::Object^ sender, System::EventArgs^ e) {
Single zahl1, zahl2, ergebnis = 0;
Boolean divDurchNull = false;
zahl1=Convert::ToSingle(txt1->Text);
zahl2=Convert::ToSingle(txt2->Text);
if (radio1->Checked == true)
ergebnis = zahl1 + zahl2;
if (radio2->Checked == true)
ergebnis = zahl1 - zahl2;
if (radio3->Checked == true)
ergebnis = zahl1 * zahl2;
if (radio4->Checked == true)
ergebnis = zahl1 / zahl2;
if (comboBox1->SelectedItem == true){
if (zahl2 == 0)
divDurchNull = true;
else
ergebnis = zahl1 / zahl2;
}
if (divDurchNull == true)
label2->Text = "Nicht Deklariert";
else
label2->Text = Convert::ToString(ergebnis);
} | |
| C++/CLI: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | private: System::Void cmdberechnen_Click(System::Object^ sender, System::EventArgs^ e) {
Single zahl1, zahl2, ergebnis = 0;
Boolean divDurchNull = false;
zahl1=Convert::ToSingle(txt1->Text);
zahl2=Convert::ToSingle(txt2->Text);
if (radio1->Checked == true)
ergebnis = zahl1 + zahl2;
if (radio2->Checked == true)
ergebnis = zahl1 - zahl2;
if (radio3->Checked == true)
ergebnis = zahl1 * zahl2;
if (radio4->Checked == true)
ergebnis = zahl1 / zahl2;
if (comboBox1->SelectedItem == true){
if (zahl2 == 0)
divDurchNull = true;
else
ergebnis = zahl1 / zahl2;
}
if (divDurchNull == true)
label2->Text = "Nicht Deklariert";
else
label2->Text = Convert::ToString(ergebnis);
} | |
| C++/CLI: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | private: System::Void cmdberechnen_Click(System::Object^ sender, System::EventArgs^ e) {
Single zahl1, zahl2, ergebnis = 0;
Boolean divDurchNull = false;
zahl1=Convert::ToSingle(txt1->Text);
zahl2=Convert::ToSingle(txt2->Text);
if (radio1->Checked == true)
ergebnis = zahl1 + zahl2;
if (radio2->Checked == true)
ergebnis = zahl1 - zahl2;
if (radio3->Checked == true)
ergebnis = zahl1 * zahl2;
if (radio4->Checked == true)
ergebnis = zahl1 / zahl2;
if (comboBox1->SelectedItem == true){
if (zahl2 == 0)
divDurchNull = true;
else
ergebnis = zahl1 / zahl2;
}
if (divDurchNull == true)
label2->Text = "Nicht Deklariert";
else
label2->Text = Convert::ToString(ergebnis);
} | |
kann mir eventuell einer einen Tipp geben wie ich die Zeichen aus der ComboBox zum Berechnen nehmen kann? |
|
|
|
 |
Doug_HH
Mitglied
Benutzerprofil
Anmeldungsdatum: 30.09.2007
Beiträge: 493
|
Doug_HH Mitglied
21:21:40 22.02.2011 Titel: |
|
Zitieren |
Ich würde das über eine "switch-case Anweisung" machen.
Dieser Vorschlag ist noch Ausbaufähig...
| C++/CLI: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | Single zahl1, zahl2, ergebnis = 0;
Boolean divDurchNull = false;
zahl1=Convert::ToSingle(txt1->Text);
zahl2=Convert::ToSingle(txt2->Text);
switch (Convert::ToChar(comboBox1->Text))
{
case '+':
ergebnis = zahl1 + zahl2;
break;
case '-':
ergebnis = zahl1 - zahl2;
break;
case '/':
ergebnis = zahl1 / zahl2;
break;
case '*':
ergebnis = zahl1 * zahl2;
break;
default:
break;
}
label1->Text = ergebnis.ToString();
| |
| C++/CLI: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | Single zahl1, zahl2, ergebnis = 0;
Boolean divDurchNull = false;
zahl1=Convert::ToSingle(txt1->Text);
zahl2=Convert::ToSingle(txt2->Text);
switch (Convert::ToChar(comboBox1->Text))
{
case '+':
ergebnis = zahl1 + zahl2;
break;
case '-':
ergebnis = zahl1 - zahl2;
break;
case '/':
ergebnis = zahl1 / zahl2;
break;
case '*':
ergebnis = zahl1 * zahl2;
break;
default:
break;
}
label1->Text = ergebnis.ToString();
| |
| C++/CLI: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | Single zahl1, zahl2, ergebnis = 0;
Boolean divDurchNull = false;
zahl1=Convert::ToSingle(txt1->Text);
zahl2=Convert::ToSingle(txt2->Text);
switch (Convert::ToChar(comboBox1->Text))
{
case '+':
ergebnis = zahl1 + zahl2;
break;
case '-':
ergebnis = zahl1 - zahl2;
break;
case '/':
ergebnis = zahl1 / zahl2;
break;
case '*':
ergebnis = zahl1 * zahl2;
break;
default:
break;
}
label1->Text = ergebnis.ToString();
| |
|
_________________ The next time you think you are perfect, try walking on water.
www.rb-softarticle.com
|
|
 |
lumma87
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.12.2010
Beiträge: 7
|
lumma87 Mitglied
21:27:11 22.02.2011 Titel: |
|
Zitieren |
Danke für die schnelle Antwort!
Damit funktioniert es auf jeden Fall schon mal! |
|
|
|
 |
lumma87
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.12.2010
Beiträge: 7
|
lumma87 Mitglied
21:37:57 22.02.2011 Titel: |
|
Zitieren |
Ich habe es jetzt mal so probiert, aber es klappt nicht!
kann mir jemand sagen wo der fehler ist?
| C++/CLI: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | private: System::Void cmdberechnen_Click(System::Object^ sender, System::EventArgs^ e) {
Single zahl1, zahl2, ergebnis = 0;
Boolean divDurchNull = false;
zahl1=Convert::ToSingle(txt1->Text);
zahl2=Convert::ToSingle(txt2->Text);
if (comboBox1->SelectedIndex=0)
ergebnis = zahl1 + zahl2;
if (comboBox1->SelectedIndex=1)
ergebnis = zahl1 - zahl2;
if (comboBox1->SelectedIndex=2)
ergebnis = zahl1 * zahl2;
if (comboBox1->SelectedIndex=3)
ergebnis = zahl1 / zahl2;
if (comboBox1->SelectedIndex=3){
if (zahl2 == 0)
divDurchNull = true;
else
ergebnis = zahl1 / zahl2;
}
if (divDurchNull == true)
label2->Text = "Nicht Deklariert";
else
label2->Text = Convert::ToString(ergebnis);
} | |
| C++/CLI: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | private: System::Void cmdberechnen_Click(System::Object^ sender, System::EventArgs^ e) {
Single zahl1, zahl2, ergebnis = 0;
Boolean divDurchNull = false;
zahl1=Convert::ToSingle(txt1->Text);
zahl2=Convert::ToSingle(txt2->Text);
if (comboBox1->SelectedIndex=0)
ergebnis = zahl1 + zahl2;
if (comboBox1->SelectedIndex=1)
ergebnis = zahl1 - zahl2;
if (comboBox1->SelectedIndex=2)
ergebnis = zahl1 * zahl2;
if (comboBox1->SelectedIndex=3)
ergebnis = zahl1 / zahl2;
if (comboBox1->SelectedIndex=3){
if (zahl2 == 0)
divDurchNull = true;
else
ergebnis = zahl1 / zahl2;
}
if (divDurchNull == true)
label2->Text = "Nicht Deklariert";
else
label2->Text = Convert::ToString(ergebnis);
} | |
| C++/CLI: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | private: System::Void cmdberechnen_Click(System::Object^ sender, System::EventArgs^ e) {
Single zahl1, zahl2, ergebnis = 0;
Boolean divDurchNull = false;
zahl1=Convert::ToSingle(txt1->Text);
zahl2=Convert::ToSingle(txt2->Text);
if (comboBox1->SelectedIndex=0)
ergebnis = zahl1 + zahl2;
if (comboBox1->SelectedIndex=1)
ergebnis = zahl1 - zahl2;
if (comboBox1->SelectedIndex=2)
ergebnis = zahl1 * zahl2;
if (comboBox1->SelectedIndex=3)
ergebnis = zahl1 / zahl2;
if (comboBox1->SelectedIndex=3){
if (zahl2 == 0)
divDurchNull = true;
else
ergebnis = zahl1 / zahl2;
}
if (divDurchNull == true)
label2->Text = "Nicht Deklariert";
else
label2->Text = Convert::ToString(ergebnis);
} | |
Fehler 1 error C2451: Bedingter Ausdruck des Typs 'void' nicht zulässig |
|
|
|
 |
theta
Mitglied
Benutzerprofil
Anmeldungsdatum: 26.09.2008
Beiträge: 3814
|
theta Mitglied
21:41:24 22.02.2011 Titel: |
|
Zitieren |
Vergleiche sind mit ==.
Zuweisungen sind mit =. |
|
|
|
 |
lumma87
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.12.2010
Beiträge: 7
|
lumma87 Mitglied
21:57:34 22.02.2011 Titel: |
|
Zitieren |
Ohh man... Wenn man seine AUgen nicht aufmacht ...
Danke schön |
|
|
|
 |
lumma87
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.12.2010
Beiträge: 7
|
lumma87 Mitglied
22:06:44 22.02.2011 Titel: |
|
Zitieren |
Ich habe noch mal eine kleine frage!
Ich habe ne Aufgabe dort soll nach dem Betätigen von einem Button ein Label von der Position 0 nach 200 wandern:
Ich habe folgendes erstellt:
label1->Top = label1->Top + 2;
so wandert das label aber immer nur 2 nach unten bei betätigen des button!
Wie bekomme ich es hin das nach einmal betätigen das Label komplett wandert?
Danke |
|
|
|
 |
Doug_HH
Mitglied
Benutzerprofil
Anmeldungsdatum: 30.09.2007
Beiträge: 493
|
Doug_HH Mitglied
23:25:07 22.02.2011 Titel: |
|
Zitieren |
Da solltest Du ein neues Thread anfangen.
Wenn Du es über eine Schleife machst, siehst Du das wandern nicht.
Also würde ich es über einen Timer machen.
Sieht nach einer Schulaufgabe aus!?
Man kann sowas auch so schreiben...
| C++/CLI: | | label1->Top += 2; | |
| C++/CLI: | | label1->Top += 2; | |
| C++/CLI: | | label1->Top += 2; | |
Gruß
Doug_HH
Edit: Code auf kurze Schreibweise geändert. |
_________________ The next time you think you are perfect, try walking on water.
www.rb-softarticle.com
Zuletzt bearbeitet von Doug_HH am 23:27:50 22.02.2011, insgesamt 1-mal bearbeitet |
|
 |
Stare
Unregistrierter
|
Stare Unregistrierter
15:09:50 20.01.2012 Titel: |
|
Zitieren |
Und wie kann man das jetzt wandern lassen? Habe nämlich das selbe problem und ich stehe hier extrem auf dem Schlauch |
|
|
|
 |
µ
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.06.2001
Beiträge: 1551
|
µ Mitglied
15:20:38 20.01.2012 Titel: |
|
Zitieren |
Mit einem Timer! Steht doch da oben. |
|
|
|
 |
Stare
Unregistrierter
|
Stare Unregistrierter
15:24:43 20.01.2012 Titel: |
|
Zitieren |
Und wie erselle ich einen Timer?
Weil bisher kam in meinen unterlagen noch kein timer vor.
Deswegen würde mich interessieren wie man das mit einer Schleife erstellt. |
|
|
|
 |
µ
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.06.2001
Beiträge: 1551
|
µ Mitglied
18:05:42 20.01.2012 Titel: |
|
Zitieren |
Hier ist sogar ein Beispiel für C++/CLI:
msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx
Die MSDN ist eine wichtige Quelle!
In den Handler des Timer-Tick Events schreibst Du aber keine Schleife. Der Timer ersetzt ja gerade das iterative Verhalten einer Schleife so wie man es in Event-gesteuertem GUI-Code machen muss, wenn man eine Animation realisieren will.
Jedes Tick lässt das label nur um einen Schritt wandern, bis die Zielposition erreicht ist. Dann bricht man den Timer ab.
Falls Du Dir die Sprache aussuchen kannst, solltest Du vielleicht zu C# wechseln. Ansonsten: Mein Beileid |
Zuletzt bearbeitet von µ am 18:06:26 20.01.2012, insgesamt 1-mal bearbeitet |
|
 |