Hallo erstmal, ich muss einen Taschenrechner in MFC programmieren. Kann aber garnix. Ich bin schon soweit das er eine Zahl in ein Feld einträgt aber wenn ich auf eine weitere Zahlentaste z.B. 0 drücke wird die vorherige überschrieben. Wie kann ich es machen das die Zahl nich überschrieben sondern angehänt wird? Danke im vorraus ;o) mfg Alex
Indem Du den String nicht überschreibst? www.codeproject.com ist eine nette Anlaufstelle für MFC-Anfänger (und auch fortgeschrittenere)
Danke für die Seite, aber ich bin auch In Englisch keine so flotte Biene. ;O( Trotz dem Danke versucch mich mal durch zu schlängeln. Kannst du mir vielleicht auch sagen wie ich einen String überschreibe? Bis jetzt hab ich immer nur den Buttons einen Wert zugewiesen den sie ausgeben wenn man auf sie drückt. Mein Button "0" sieht so aus: void CpoiDlg::OnBnClickedButton10() { UpdateData(true); Erg_1=0; UpdateData(false); } Danke für deine Hilfe :o)
du solltest dir irgendwo einen string anlegen, an den du immer die zahlen anhängst und den du jedes mal ausgibst
Autor: Rufus T. Firefly Datum: 09.02.2005 12:02 Was ist Erg_1? Erg_1 ist das Feld in dem das Ergebnis zum Schluss ausgegeben werden soll. Autor: Tobi Datum: 09.02.2005 12:19 Du solltest dir irgendwo einen string anlegen, an den du immer die zahlen anhängst und den du jedes mal ausgibst. Wie leg ich mir einen String an? Und wie geb ich die aus?
wie wäre es mit Ergebnis = Ergebnis * 10 + 1; // wenn "1" Gedrückt dann aktuelle // Zahl um eine Stelle nach Links und // 1 dazuaddieren. Gruss
Dann soll ich es am besten so schreiben: Bei Button 0 void CpoiDlg::OnBnClickedButton10() { UpdateData(true); Ergebnis=Ergebnis*10+0; UpdateData(false); } Gruss zurück :O)
Danke,danke,danke,danke x 10000 Es funktioniert mit "Ergebnis=Ergebnis*10+0;". Ich habe das jetzt mit jedem Button gemacht. Jetzt hätt ich nur noch eine Frage. Wie stell ich es an, dass er auch die Zahl multipliziert, dividiert, addiert oder subtrahiert wenn ich auf die entsprechende Taste drücke? Und wie lasse ich ihn dann eine zweite Zahl einlesen? :O( ok eswaren zwei Fragen. ;o) Gruss Alex
Wie siehts denn aus? soll der rechner auch punkt vor strich berücksichtigen? Es wird dir nach überlegung doch klar sein, daß du weitere variablen brauchst die du dann bei drücken weiterer aktions-tasten +-x/= usw miteinander richtig in unterprogrammen verrechnest viel Erfolg.
es währe nicht schlecht wenn das gehen würde. Aber wie gesagt ich bin ein blutiger Anfänger. Ich bin mit Hilfe jetzt auch nur soweit gekommen. Kannst du mir vielleicht weiter helfen? Wäre echt nett. Ich hoff das ich auch Erfolg ernten werde. Gruss Alex
@asd ich würde ernsthaft empfehlen mich erst einmal in die grundlagen der programmierung einzuarbeiten, bevor du weiter machst. solche sachen wie der umgang mit strings usw sollten bekannt sein, sonst wird sehr schwer werden
Ich mach das je nicht beruflich. Es war eine Aufgabe das Spiel Schiffe versenken zu Programmieren. Aber zum einüben in MFC hab ich mir gedacht das ich erst einmal einen Tachenrechner programmiere. Und ich kann garnix. grus alex
Um Berechnungen wie Addition, Subtraktion, Division, ... durchzuführen, schreib dir doch für jede Rechenart eine Funktion. z.B. int addiere(int a, int b) { int c; c = a + b; return c; } Als Anfänger solltest du das ganze erstmal als Konsolenprogramm versuchen, später hast du die Möglichkeit die graphische Oberfläche zu gestalten. PS: Schiffe versenken find ich für den Anfang ganz schön hart.
Ich hab das schon als Konsolenprogamm gemacht bloß möcht ich es jetzt auch umsetzten können. Aber danke :o) Wie kann ich es machen das er unterscheiden kann das die erste eingegebene Zahl wie du geschrieben hast a ist und das die zweite Zahl b ist? Das Schiffe versenken Spiel wurde mir zugewiesen. Es ist schon schwer aber wenn ich das schaffe (wenns geht mit deiner Hilfe ;o) als Mädchen, das noch nie programmiert, hat ist das schon gut. denk ich Danke für die bisherige Hilfe
So sieht mein Taschenrechner bis jetzt aus.
Sorry ich keinn mich mit MFC nicht aus, aber er will eine DLL von mir haben. (MFC70D.DLL) Die Funktione addiere rufst du wie folgt auf: int main( int argc, char * argv[]) { ... //Variablen anlegen ... //Wert summand_a einlesen ... //Wert summand_b einlesen ergebnis = addiere(summand_a, summand_b); ... //ergebnis ausgeben }
So hab ich es bei dem Konsolenprogramm gemacht. Aber ich kann das realisieren wenn ich zwei Fenster habe in das eine ich die erste und in das zweite die zweite Ziffer eingebe. Dann geht das so. Hab jetzt ein Foto von meinem Rechner gemacht. Kannst es dir anschauen. Mach jetzt noch eins mit den Bezeichnungen für die Variabeln.
Hab jetzt die Bezeichnungen für die Buttons und das Feld gegeben.
Wie du richtig erkannt hast brauchst du zum berechnen der Addition/sub/Mul/Div jeweils 2 Operanden (a und b). ? wie gibst du bei einem Taschenrechner die beiden operanden ein ? Du gibst die erste Zahl an, dann den Operator und danach den 2.Operand danach gefolgt von einem "=" oder weiteren Operator. => Du brauchst also noch einen weiteren Speicher um den ersten/zweiten Operand zu merken => bei einem Operator "+" / "-" ... "=" merken des Operanden Bsp: Du drückst "1","2","3" => ergebnis = 123 jetzt "+" => opd1 = ergebnis, Operator='+', ergebnis=0 dann "4","5" => ergebnis = 45 dann "=" jetzt wird erst das ergebnis berechnet if (operand == '+') dann ergebnis = opd1 + ergebnis Hoffe das gibt nen Anstoß Gruss
Guten Morgen Ich weiß jetzt schon einmal was für einen Weg ich gehen muss. danke. Aber kannst du mir auch sagen wie ich einen zweiten Speicher erstelle? Den ersten Schritt habe ich ja schon gemacht indem ich die Zahlen eingeben kann und er gibt sie mir auch richtig aus. Jetzt verteh ich bloß nicht was du als nächstes geschrieben hast. "jetzt "+" => opd1 = ergebnis, Operator='+', ergebnis=0" Wie soll ich das in MFC umsetzen? Alex
in mfc musst du dazu garnix umsetzten. du brauchst 2 weitere variablen: - eine für das rechenzeichen - eine für die 2. zahl wenn ein rechenzeichen eingegeben wird speicherst du das in der vorgesehenen var, kopierst die bisher eingegebene zahl in die 2. variable und liest wieder ein
Das hat mir leider nicht geholfen. Denn ich weiß nicht wie ich das umsetzten in MFC soll. Also ich weiß nicht wie ich das schreiben soll. Sorry
sorry, aber ich werde hier keinen fertigen code posten. dieser teil der umsetzung hats nichts, aber auch garnichts mit mfc zu tun sondern mit reinem programmieren. wie hast du den rechner denn als konsolenprogramm gemacht? überigens gibt es eine menge gute c++ tutorials im netz, da sollte man sich auch hin und wieder mal selber ein paar details zusammenlesen
Wir hatten ein einwöchige Schulung. Ich habe davon zweit Tage verpasst da ich krank war. jetzt hieß es ich sollt das Spiel Schiffe versenken in MFC machen. Von dem ich noch nie was gehört habe. Ich habe von dir auch keinen vertigen Post gewollt. Und auserdem brauchst du ja auch nicht versuchen mir zu helfen, wenn du sowieso nur strunzen (für doofe nörgeln) kannst. Toll freu dich du kannst so einen Mist ich aber nicht. Sei doch ruhig wenn du nicht helfen willst. Es gibt andere hier die mir schon sehr weit geholfen haben in dem sie mir Sachen kla gemacht haben. Also Schnabel zu oder hilf mir indem du mir Sacher erkläst. Gruss Alex
Ich doch nur nach Hilfe gefragt du sagts gleich das du mir keinen Psot geben willst den ich auch gar net haben will. Ich brauch doch nur Hilfe............ :o(
"Also ich weiß nicht wie ich das schreiben soll." das hört sich nunmal sehr nach einer frage nach code an. wenn das nicht so gemeint war nehm ich das natürlich zurück. leider fragen hier zu oft leute nach fertigen sachen.. du brauchst wie gesagt eine varibale für das rechenzeichen: dort schreibst du bei einem druck auf +,-,/,* das zeichen rein z.b operator = "+"; zusätlich musst du die vorher eingegebene zahl in einer andere variable speichern: zahl2 = zahl1; dann zahl1 wieder auf null setzten für neue eingaben: zahl1 = 0; die sache ist, jetzt musst du noch erkennen wenn etwas gerechnet werden muss. dafür wäre noch eine variable geeignet, die speichert, ob du schon 2 zahlen beisammen hast bool zahl2_vorhanden; standardmässig oder nach dem löschen ist diese var false. nachdem du zahl2 = zahl1 gemacht hast ist zahl2_vorhanden = true als nächstes musst du dann schaun, ob, wenn ein rechenzeichen gedrückt wird noch eine alte rechnung da ist. grob ungefähr alles so: zahl1 = 0; zahl2 = 0; operator = 0; zahl2_vorhanden = false; ** jetzt 1. zahl eingeben und z.b + drücken zahl2 = zahl1; operator = "+"; zahl1 = 0; zahl2_vorhanden = true; ** jetzt 2. zahl eingeben. und ein rechenzeichen drücken: zahl2_vorhanden ist jetzt true, d.h erst rechnen: if (operator == "+") zahl2 = zahl2+zahl1; if (operator == "-") ...usw danach zahl1 = 0 setzten und wieder von vorne beginnen das ergenis steht dann immer in zahl2 drin
nachtrag: beim letzten abschnitt nach den if anweisungen noch das neue rechenzeichen speichern!
Ok danke ich werds versuchen. Arbeite gerade daran in MFC mein Schifferversenken zu programmieren. Bin jetzt soweit das er Schiffe setzt, muss aber noch schauen das ich es hinbekommedas er mir auch zweier und dreier Schiffchen baut. Nochmal danke für deine Hilfe.
??? alex??? ??? Hast du zuvor schon einmal, in irgend einer Sprache programmiert? Es ist ja schön, dass du schon "Einer" Schiffe setzen kannst. Ich geh mal davon aus, dass du dein Schiff per Zufallszahl setzt. Wenn du längere Schiffe setzen willst, dann musst du eben ein oder mehrere Felder dazufügen, in die entsprechende Richtung, die du haben willst (oder auch zufällig). Aber das Taschenrechnerprogrämmchen solltest du auf alle Fälle vorher fertigmachen und verstehen, weil du sonst von dem was wir dir sagen werden nicht viel verstehen wirst. Also, erst die kleinen Brötchen backen!!
Ich hab noch nie programmiert. Ok Chef. Ich back jetzt kleine Brötchen. Fang gleich an. :o) Alex
Mich würde interessieren wer von einem absolutem Programmieranfänger gleich verlangt ein ganzes Spiel zu programmieren.
och ein spiel wäre nicht soo schwer.. parser für richtig geile taschenrechner sind komplexer als man das meinen würde ;) da sitzt man auch wenn man weis wies geht eine zeit lang... gut mit infix=>postfix sollts fix gehn ;) schifferl versenken programmieren ohne hintergrundwissen über oop stell ich mir sehr amüsant vor G ich würd da mir ein mehrdimensionales pointer array anlegen... die mit 0 füllen und dann die anzahl der schifferl die du setzen willst objekte anlegen.. im pointer array setzt zu jetzt überall wo das schifferl stehn soll einen pointer auf das jeweilige schiff-objekt.. beim versenken brauchst nur auf die zu beschießende stelle schaun.. ist da eine 0 ist wasser und sonnst weist sofort welches schiff dran ist ;)... im schiff müsstest noch ein array reinpacken in dem die getroffenen zellen stehn.. im einfachsten fall ein CTypedPtrArray oder ein ob array.. das füllst mit objekten wo eigentlich nur zeile und spalte drinnen ist.. das durchsuchst bei jedem treffer und damit weist du dann ob schon getroffen wurde oder nicht... umgekehrt könntest du das teil auch mit den positionen füllen wo das schiff steht und jede position die getroffen wurde rauslöschen... wenn keine elemente drinnen sind ist das ding tot... je nach geschmack ;) gut genug hilfe jetz viel spass beim codieren G
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.