Schulaufgaben mit dem Borland Builder...HILFE
-
Hallo,
ich mache eine Ausbildung zum kaufmännischen Assistenten für Wirtschaftsinformatik und bin mittlerweile im zweiten Ausbildungsjahr.
Wir arbeiten im Unterricht mit dem C++ Builder 6 und haben zwei Aufgaben erhalten, die wir lösen müssen.
Ich habe sie glaube ich schon zum größten Teil gelöst, die Programme wollen aber nicht so laufen, wie ich es will.
Ich schreibe die Aufgaben mit meinen Lösungen mal hier rein, vielleicht hat der eine oder andere ja Lust mir zu helfen, denn im Augenblick weiß ich leider nicht weiter.
1. Rechnerprogramm
Schreibe das Programm für das folgende Strukturgramm:
Klick dir 2 Zahlen
Strukturgramm:
Aufschrift Label1: „Wähle eine Rechenart“
Speicherplatz „Zahl1 erzeugen“
Speicherplatz „Zahl2 erzeugen“
Zufallszahl1 erzeugen
Zufallszahl1 in Zahl1 speichern
Zufallszahl2 erzeugen
Zufallszahl2 in Zahl2 speichern
Zahl1 in Label2 erzeugen
Zahl2 in Label3 erzeugen
Beschriftung Label1 ändern
Zufallszahl1 erzeugen
Zufallszahl1 an Label2 übergeben
Zufallszahl2 erzeugen
Zufallszahl2 an Label3 übergeben//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { randomize(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Label1Click(TObject *Sender) { Label1 -> Caption="Wähle eine Rechenart"; Button1 -> Caption="+"; Button1 -> Caption="-"; Button1 -> Caption="*"; Button1 -> Caption="/"; Label2 -> Caption=random(5)+1; Label3-> Caption=random(5)+1; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int zahl1,zahl2; String a; zahl1 =StrToInt (Label2 -> Caption); zahl2 =StrToInt (Label3 -> Caption); a=IntToStr(zahl1+zahl2); Label1->Caption="Das Ergebnis der Addition ist" +a; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { int zahl1,zahl2; String a; zahl1 =StrToInt (Label2 -> Caption); zahl2 =StrToInt (Label3 -> Caption); a=IntToStr(zahl1-zahl2); Label1->Caption="Das Ergebnis der Subtraktion ist" +a; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { int zahl1,zahl2; String a; zahl1 =StrToInt (Label2 -> Caption); zahl2 =StrToInt (Label3 -> Caption); a=IntToStr(zahl1*zahl2); Label1->Caption="Das Ergebnis der Multiplikation ist" +a; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { int zahl1,zahl2; String a; zahl1 =StrToInt (Label2 -> Caption); zahl2 =StrToInt (Label3 -> Caption); a=IntToStr(zahl1/zahl2); Label1->Caption="Das Ergebnis der Division ist" +a; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { Close(); } //---------------------------------------------------------------------------2. Währungsumrechnung
a) Nennen Sie die Objekte: ButtonStart, EditEuro und EditDollar.
b) OnKlick auf ButtonStart soll von Euro in Dollar umgerechnet werden, mit einem festen Kurs von 1,12 (Variable:kurs).
c) Der Dollarbetrag soll in EditDollar angezeigt werden (Format: 120,24 $).Jetzt soll der Kurs veränderbar werden.
d) Ein neuer Button KursAendern soll ein weiteres Editfeld (EditKurs) sichtbar machen.
e) Sobald sich hier etwas ändert (und erst dann!), soll ein neues Button (ButtonKursUebernahme) erscheinen.
f) Ein Klick auf dieses Button verändert den Inhalt der Variablen kurs und lässt EditKurs und ButtonKurs Uebernahme wieder verschwinden.Mein Lösungsansatz:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "umrechner_u.h" double kurs=1.12; //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonStartClick(TObject *Sender) { EditDollar -> Text= EditEuro -> Text*kurs; } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonKursaendernClick(TObject *Sender) { EditKursaendern -> Visible=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::EditKursaendernChange(TObject *Sender) { ButtonUebernahme -> Visible=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonUebernahmeClick(TObject *Sender) { kurs = StrToFloat(EditKursaendern -> Text); EditKursaendern -> Visible=false; ButtonUebernahme -> Visible=false; } //---------------------------------------------------------------------------Vielen Dank im voraus für eure Hilfe.
<edit> sfds [b]</edit>]
-
Hallo
- Schlechter, nicht aussagekräftiger Threadtitel
- Kein Syntax-Highlithning (beim Posten im Forum der Button C/C++ links unter den Smilies) benutzt, um Code zu formatieren
- Das eigentliche Problem nicht beschriebenbis bald
akari
-
Hi
hab das kurz überflogen
das ist garantiert ein Fehler
EditDollar -> Text= EditEuro -> Text*kurs;es muss so heißen
EditDollar -> Text= FloatToStr(StrToFloat(EditEuro -> Text)*kurs);vllt findet jemand noch mehr Fehler

übrigens wenn du unter halb von Quelltext auf die Fehler klickst
kommst du an die fehlerhafte Zeile.
Das machst du so lange biss ohne Fehler.
Kanst auch F1 drücken und kanst heraus finden was faul ist.Grüsse
-
Programmabläufe lassen sich übrigens auch gerne mit dem Debugger nachvollziehen. Das erspart dir und uns Postings mit ewig langen Listings mit irelevantem Code und völlig undreflektierten Fehlermeldungen wie "geht nicht".
-
Hi,
1. In TForm1::Label1Click ordnest Du die vier Grundrechenarten jedesmal dem gleichen Button zu.
2. Praktischer wäre es in der Art:
void __fastcall TForm1::AlleButtonsClick(TObject *Sender) { AnsiString Rechenart[4] = {"Addition", "Subtraktion", "Multiplikation", "Division"}; int zahl1,zahl2; String a; zahl1 = StrToInt(Label2->Caption); zahl2 = StrToInt(Label3->Caption); switch(((TButton*)Sender)->Tag) // Die Tags müssen natürlich vorher { // in der IDE gesetzt werden. case 0: a = IntToStr(zahl1 + zahl2); break; case 1: a = IntToStr(zahl1 - zahl2); break; case 2: a = IntToStr(zahl1 * zahl2); break; case 3: a = IntToStr(zahl1 / zahl2); break; } Label1->Caption="Das Ergebnis der "+Rechenart[(((TButton*)Sender)->Tag]+" ist " + a; }3. Warum eigentlich Zufallszahlen??? Statt dessen 2 Edits, so daß der User eigene Zahlen eingeben kann ...
Umrechnung:
1. Zum Eingeben des Kurses reicht eigentlich ein permanent sichtbares Editierfeld, was dann jedesmal vor der Umrechnung ausgelesen wird. Ich hoffe, Dein Lehrer hatte sich diesen Umweg ausgedacht
2. Find ich jetzt keines.
Viele Grüße,
Christian Sonder