Rechenprogramm erstellen
-
Hallo zusammen
Ich habe vor kurzem angefangen c++ zu lernen. Dazu will ich nun ein kleines Rechenprogramm schreiben. Man sollte in einem Menu auslesen können was man berechnen will, dannach sollte der Bildschirm mit clrscr(); gelöscht werden und die Aufgabe beginnen. Soweit, so gut.
Dazu habe ich mit der switch funktion gearbeitet. Jetzt möchte ich aber, dass nachdem die rechnung fertig gerechnet wurde, wieder das Menu kommt und man dort z.B. exit eingeben muss damit das Programm beendet. Wie kann ich das machen? Ich währe über beispiele sehr froh. Und gibt es eine Möglichkeit Text oder Hintergrundfarbe zu verändern, oder Text zu zentrieren usw damit das Programm etwas besser aussieht?
Hier ein auszug aus meinem Code:
#include <iostream.h> #include <conio.h> #include <dos.h> // Variablen deklarieren/definieren short fmenu; float f1hoehe; float f1breite; float f1laenge; // Programm start void main(void) { clrscr(); cout << "Wilkommen im Rechenprogramm." << endl; cout << "" << endl << endl; cout << "Mit diesem Programm koennt ihr verschiedenste Sachen ausrechnen." << endl; cout << "Einfach den entsprechenden Menupunkt auswaehlen, und die Variabeln eingeben." << endl; cout << "Falls ihr Fehler findet oder ihr noch Ideen habt, die in diesem Programm" << endl; cout << "eingebracht werden sollten, dann schreibt eine Mail an stefsursee@gmx.ch" << endl; cout << "oder ihr ladet euch den frei zugaenglichen Source Code runter" << endl; cout << "und legt selber hand an. Viel Spass noch... :)" << endl << endl; cout << "Menu" << endl << endl <<endl; // Menü cout << "1. Flaeche eines Rechtecks/Quadrates" << endl; cout << "2. Flaeche eines Dreiecks" << endl; cout << "3. Flaeche ..." << endl; cout << "" << endl; cout << "Menupunkt: "; cin >> fmenu; switch (fmenu) { case 1 : { clrscr(); cout << "Flaeche/Volumen eines Rechtecks/Quaders" << endl << endl << endl; cout << "Bitte Breite eingeben: "; cin >> f1breite; cout << "Bitte Laenge eingeben: "; cin >> f1laenge; cout << "Bitte hoehe eingeben: "; cin >> f1hoehe; cout << "" << endl << endl; cout<<"Die Flaeche betraegt: "<<f1breite*f1laenge<<endl; cout << "Das Volumen betraegt: " << f1breite*f1laenge*f1hoehe << endl; break; } case 2 : { cout << "menu 2" << endl; break; } case 3 : { cout << "menu 3" << endl; break; } default: { cout << "Ungueltige eingabe!" << endl; break; } } getch(); }
Vielen dank schonmal für eure Hilfe.
mfg. steport
-
Hi!
Also mal von den Fehlern in deinem Programm abgesehen wie z.b
void main(void)
oder das nicht mehr gebräuchliche
clrscr()
der dos.h, kannst du mal mit dem Befehl setw() rumspielen ... damit hast du die möglichkeit den Text zentriert auszugeben.
Man kann sich damit aber auch kleine Tabellen machen .... man muss ein bisle
ausprobieren.kleines Bsp:
#include <iostream> #include <iomanip> using namespace std; int main() { cout << setw(5) << "1" << " | " << setw(5) << "2" << " | " << setw(5) << "3" << endl; cout << "------|-------|------" << endl; cout << setw(5) << "11" << " | " << setw(5) << "21" << " | " << setw(5) << "31" << endl; cout << "------|-------|------" << endl; cout << setw(5) << "12" << " | " << setw(5) << "22" << " | " << setw(5) << "32" << endl; cout << "------|-------|------" << endl; cout << setw(5) << "13" << " | " << setw(5) << "23" << " | " << setw(5) << "33" << endl; cout << "------|-------|------" << endl; return 0; }
Und nicht #include <iomanip> vergessen
cu
-
Danke für die Hilfe. Jetzt sieht das ganze schon viel besser aus.
Jetzt bleibt nur noch die Menu und Textfarben frage offen.
-
Ich habe nun versucht am Ende des Programms, mit dem Gegoogelten befehl
execl("test.bat","r")
das Programm nochmal auszuführen um wieder zum Menü zu gelangen. Jedoch stürzt das Programm nach 2x neustart ab und winxp will einen Probembericht senden.
-
Hi
Für sowas würde ich lieber eine while schleife benutzen !
z.b:
bool running(true); while(running) { if(ende) running = false; }
cu
-
Vielen Dank. An die Idee mit der while Schleife habe ich gar nicht gedacht. Jetzt funktioniert alles so wie es sollte.
-
Das Programm arbeitetso wie es sollte. Wenn ich aber irgendwo ein Buchstabe anstatt einer Zahl eingebe, dann läuft das Programm bis zum Ende der While schleife durch und geht wieder zu anfang, oder es Stürtzt ab.
Gibt es eine Möglichkeit eine Eingabe zu beschränken (z.B. nur Zahlen oder nur j/n)?mfg. steport
-
Ja das kann man so machen. Allerdings müsstest du dir selber dazu Funktionen schreiben und dir mal in der Konsolen-FAQ den Beitrag zu getch() anschauen.
-
Hi!
Wenn du nur willst das der Benutzer Zahlen eingeben kann, dann mach doch sowas:
//main.cpp #include <iostream> using namespace std; int main(){ int wahl; cout << "\n1.Addition" << endl; cout << "\n2.Multiplikation" << endl; cout << "\nBitte wählen sie eine Option:" << endl; cin >> wahl; if(wahl == 1){ // Addition.... } else if(wahl == 2){ // Subtraktion } else{ cout << "\nSorry!" << endl; cout << "andere eingaben nicht möglich" << endl; } return 0; }
So könnte man das doch machen oder ?
Ich hoffe ich hab jetzt kein scheiss erzählt.cu
-
Hi
So habe ich das eigentlich nicht gedacht. Ich habe so etwas beim Menu gemacht, da ist das auch gut so. Aber wenn ich dann frage j/n dann kann man für nein(n) auch irgend eine andere eingabe eingeben. Das ist zwar eine nebensache, stört aber trozdem irgendwie.
So ist das gemeint:
if (fauswahl == j) { blabla } else { blabla }
ich habe dann versucht die if elseif else Schleife zu verwenden (aus einem Buch)
if (fauswahl == j) { cout << "blabla" << endl; } else if (fauswahl == n) { cout << "anderes blabla" << endl; } else { cout << "falsche eingabe!" << endl; }
Dies funktionier bei mir aber nicht. Der else if teil wird einfach nicht behandelt. Wenn ich n eingebe, springt er trotzdem zum else Teil.
Naja, wie gesag eigentlich nebensache aber trotzdem störend.Was ich eigentlich will ist, dass ich bei einer Rechnung nur Zahlen eingeben kann.
Bsp:... cout << "" << endl; cout << setw(56) << "Flaeche eines Rechtecks/Quadrates" << endl; cout << setw(60) << "-----------------------------------------" << endl << endl << endl; cout << "Die Formel fuer ein Rechteck lautet: breite * hoehe" << endl; cout << "Bitte Breite eingeben: "; cin >> f1breite; cout << "Bitte Laenge eingeben: "; cin >> f1laenge; cout << "---------------" << endl << endl << endl; cout<<"Die Flaeche betraegt: "<<f1breite*f1laenge<<endl; getch(); ...
Hier sollte f1laenge und f1breite nur Zahlen sein.
Ich werde mal das konsolen faq lesen.
mfg. steport
-
@project101
Anstatt ewig vielen if-else würde ich eher einen switch nehmen
-
-
Hallo,
jj schrieb:
WAS spricht gegen
void main(void)
da spricht alles dagegen, denn es ist kein ANSI-Standard.
Daran ändert auch nichts, daß es Compiler gibt, die das akzeptieren, lese auch:
http://www.c-plusplus.net/forum/viewtopic.php?t=39346
MfG
-
Hi, für sowas würde ich eigentlich net c++ benutzen. Delphi wehre besser. Dann musst du nicht in der Konsole rumschreiben.
Ich hab dir mal ein kleines Proggy geschreiben:
http://dking.funpic.de/Objektberechnung.rar
Aber es ist nur ein Forschlag. c++ rulz, aber in dem Fall ist Delphie einfach praktischer.
cya
-
Hi!
@Gott der 2: Warum sollte delphi bitte für sowas besser sein !?
Mit c++ kann man sowas doch locker machen. Was ist denn bei delphi so viel besser ?cu
-
Danke für eure Hilfe
Ich habe jetzt mein kleines Rechenprogramm fertig. Es ist mein erstes Programm dass mehr als 2 Dialoge hat. Wenn ihr es ausprobieren wollt:
http://lpar.netappeal.ch/uploads/Project1.exe (Ziel speichern unter...)mfg. steport
-
[wegeditiert]
... zweite Seite nicht gesehen.
MfG Aoeke
-
Hi!
@steport: gar nich mal schlecht so als erstes prog
hatte sowas auch zuert gemacht. kannst dir das ja mal ankucken ...
sind aber nur so die Grundsachen. nix großes .... aber wie ich finde ganz nett gemacht.http://www.c-plus-plus-archiv.de/archiv/download.php?file=XPrechner+2004+V1.5.zip
Das einzige was ich blöderweise vergessen habe is die wait() Funktion einzubinden, damit sich die exe nicht sofort schliesst nach dem starten.
Einfach aus dem Compiler aus starten dann gehts ....
würde mich über Lob und Kretik freuen
cu
-
@steport:
Hab nen vermeintlichen Fehler gefunden
Wenn man das Programm startet, und dann statt einer Zahl einen Buchstaben eingibt, so beendet man das Programm mit Tastendruck, aber:
Wenn man einmal etwas berechnet, z.B. eine Kugel, dann wieder zur Auswahl gelangt und NUN einen Buchstaben eingibt, kann man nichts mehr machen, außer oben auf Schließen zu drücken (zumindest bei mir ;))so far
-
Moin
@jbmaier: jo der Fehler ist mir bei seinem Prog auch aufgefallen.
beim meinem kommt man aber leider nach dem beenden nicht mehr zurück
zum Menü. hab ich vergessen umzusetzen.könnte man mit ner while -schleife
umsetzen .... bin jetzt aber zu faulcu all
Ps: keine Tips oder Kretik über mein Prog !? please ......