Wie findet ihr diesen Code?
-
Also ich habe mal ein einfaches programm zur Berechnung der Kraft F eines Körpers mit der beschleunigung a und der masse m geschrieben! Jetzt wollte ich euch fragen wie ihr meinen Code findet oder ob der noch "verbesserungswürdig" ist!
#include <iostream> #include <conio.h> using namespace std; int main() { double accelaration; double mass; double power; bool fertig = false; int Durchlaeufe = 100; cout << "-------------------------------------------\n" << "-----Willkommen bei dem Kraftberechner-----\n" << "-------------------------------------------\n" << flush; cout << "\n\n" << flush; cout << "Bitte Waehlen sie ihre Berechnungsart: \n" << "(1)Kraft = Beschleunigung * Masse \n" << "(2)Beschleuniging = Kraft/Masse \n" << "(3)Masse = Kraft/Beschleunigung \n" << flush; for (int i = 0; (i < Durchlaeufe) && !fertig; ++i) { switch (getch()) { case '1': system ("cls"); cout << "Bitte geben Sie ihre Beschleunigung an(in m/s^2):\n"; cin >> accelaration; cout << "Geben Sie nun ihre Masse an(in Kilogramm): \n"; cin >> mass; power = accelaration * mass; system("cls"); cout << "Ergebnis:\n" << power << "N\n"; break; case '2': system ("cls"); cout << "Bitte geben Sie ihre Kraft an(in Newton):\n"; cin >> power; cout << "Bitte geben Sie ihre Masse an(in Kilogramm):\n"; cin >> mass; accelaration = power/mass ; system("cls"); cout << "Ergebnis:\n" << accelaration << "m/s^2\n"; break; case '3': system ("cls"); cout << "Bitte geben Sie ihre Kraft an(in Newton):\n"; cin >> power; cout << "Bitte geben Sie ihre Beschleuniging an(in m/s^2):\n"; cin >> accelaration; mass = power/accelaration; system("cls"); cout << "Ergebnis:\n" << mass << "kg\n"; break; } cout <<"Wollen sie eine weitere Rechnung machen?(j/n)" << flush; switch (getch()) { case 'j': system("cls"); cout << "Bitte Waehlen sie ihre Berechnungsart:\n" << "(1)Kraft = Beschleunigung * Masse \n" << "(2)Beschleuniging = Kraft/Masse \n" << "(3)Masse = Kraft/Beschleunigung \n" << flush; break; case 'n': system("cls"); fertig = true; break; }; } }
So das ist er
Bin für jeden Vorschlag offen!
Mux
-
Scheiße.
-
okay
Hab ihn übrigens absichtlich so einfach gehalten xD
Edith: Könntest du mir bitte acuh sagen warum? Würde ihn ja ganz gern verbessern wie schon gesagt
-
Zu viel Windows-spezifischer Murks dabei, oft falsch eingerückt, Denglisch verwendet und Variablen nicht in einheitlichem Stil. Außerdem conio.h includet und namespace aufgelöst. \n und flush kann durch endl ersetzt werden.
-
okay
also das mit dem denglisch ist schätz ich mal auf das Durchlauefe bezogen?
hab ich vergessen xD
Windows speziefisch? o.O
conio.h ist nur wegen dem getch dabei und bracuht man namespace dann nicht mehr oder wie? xD
ach ja eins meiner ersten WIRKLICHEN programme
Zu flush und \n:
ich weiß aber endl macht iwie einen anderen Zeilenabstand... schaut nich so dolle aus zumindest bei DEV-c++Mux
-
system("cls"); <-- weg damit
getch() durch std::cin.get(); ersetzen.
using namespace std; raus und stattdessen std::cout, std::endl,... verwenden.Für eins deiner ersten Programme schön, hab schon viel viel schlimmeres gesehen, meine ersten Codes waren nicht so schön.
-
achso...
aber system ("cls") machts optisch iwie besser... is das so schlimm oder sollte man lieber weniger wert auf optik legen?
-
Funktioniert soweit ich weiß nur unter Windows, außerdem wird da ein zweiter Prozess gestartet afaik, lass das mal lieber
Statt der Variable fertig kannst du einfach ein return 0; verwenden.
-
öhmm... wenn ich using namespace std weglass will er endl nich mehr o.O liegst an mir am compiler oder muss ichs doch benutzen?? xD
-
std::endl
-
Hab ich auch gedacht hatte mich wohl vertippt
okay dann noch system ("cls") raus...
Edith: Mit cin.get() geht switch nich mehr... also keine weitere rechnung
Mal schauen wie ich das umschreiben muss >:D
-
Dort musst du in nen temporären char einlesen. So:
char tmp; std::cin >> tmp; switch(tmp)
-
okay wollt ich zwar eig selber drauf kommen aber danke
so okay verbesserungen abgeschlossen code perfekt
nein wie findest du ihn jetzt?
-
Zeig nochmal verbesserte Version her
-
#include <iostream> int main() { double accelaration; double mass; double power; bool fertig = false; int Durchlaeufe = 100; std::cout << "-------------------------------------------\n" << "-----Willkommen bei dem Kraftberechner-----\n" << "------------------------------------------- " << std::endl; std::cout << "\n\n" << std::endl; std::cout << "Bitte Waehlen sie ihre Berechnungsart: \n" << "(1)Kraft = Beschleunigung * Masse \n" << "(2)Beschleuniging = Kraft/Masse \n" << "(3)Masse = Kraft/Beschleunigung " << std::endl; for (int i = 0; (i < Durchlaeufe) && !fertig; ++i) { switch (std::cin.get()) { case '1': std::cout << "Bitte geben Sie ihre Beschleunigung an(in m/s^2):\n"; std::cin >> accelaration; std::cout << "Geben Sie nun ihre Masse an(in Kilogramm): \n"; std::cin >> mass; power = accelaration * mass; system("cls"); std::cout << "Ergebnis:\n" << power << "N\n"; break; case '2': std::cout << "Bitte geben Sie ihre Kraft an(in Newton):\n"; std::cin >> power; std::cout << "Bitte geben Sie ihre Masse an(in Kilogramm):\n"; std::cin >> mass; accelaration = power/mass ; system("cls"); std::cout << "Ergebnis:\n" << accelaration << "m/s^2\n"; break; case '3': std::cout << "Bitte geben Sie ihre Kraft an(in Newton):\n"; std::cin >> power; std::cout << "Bitte geben Sie ihre Beschleuniging an(in m/s^2):\n"; std::cin >> accelaration; mass = power/accelaration; system("cls"); std::cout << "Ergebnis:\n" << mass << "kg\n"; break; } std::cout <<"Wollen sie eine weitere Rechnung machen?(j/n)" << std::endl; char tmp; std::cin >> tmp; switch(tmp) { case 'j': std::cout << "Bitte Waehlen sie ihre Berechnungsart: \n" << "(1)Kraft = Beschleunigung * Masse \n" << "(2)Beschleuniging = Kraft/Masse \n" << "(3)Masse = Kraft/Beschleunigung " << std::endl; break; case 'n': return 0; break; }; } }
flüchtigkeitsfehler vorbehalten xD habs nur schnell verbessert wie du gesagt hast
-
#include <iostream> void processUserInput() { std::cout << "Bitte Waehlen sie ihre Berechnungsart:" << std::endl << "(1)Kraft = Beschleunigung * Masse" << std::endl << "(2)Beschleuniging = Kraft/Masse" << std::endl << "(3)Masse = Kraft/Beschleunigung" << std::endl; char tmp; std::cin >> tmp; switch(tmp) { case '1': std::cout << "Bitte geben Sie ihre Beschleunigung an(in m/s^2):" << std::endl; std::cin >> accelaration; std::cout << "Geben Sie nun ihre Masse an(in Kilogramm):" << std::endl; std::cin >> mass; power = accelaration * mass; std::cout << "Ergebnis:" << std::endl << power << "N" << std::endl; break; case '2': std::cout << "Bitte geben Sie ihre Kraft an(in Newton):" << std::endl; std::cin >> power; std::cout << "Bitte geben Sie ihre Masse an(in Kilogramm):" << std::endl; std::cin >> mass; accelaration = power / mass; std::cout << "Ergebnis:" << std::endl << accelaration << "m/s^2" << std::endl; break; case '3': std::cout << "Bitte geben Sie ihre Kraft an(in Newton):" << std::endl; std::cin >> power; std::cout << "Bitte geben Sie ihre Beschleuniging an(in m/s^2):" << std::endl; std::cin >> accelaration; mass = power/accelaration; std::cout << "Ergebnis:" << std::endl << mass << "kg" << std::endl; break; default: // Was passiert, wenn der User weder '1', '2' oder '3' eingibt? } std::cout << "Wollen sie eine weitere Rechnung machen?(j/n)" << std::endl; std::cin >> tmp; switch(tmp) { case 'j': processUserInput(); break; case 'n': return; default: // Was passiert, wenn der User weder 'j' noch 'n' eingibt? } } int main() { double accelaration, mass, power; std::cout << "-------------------------------------------" << std::endl << "-----Willkommen bei dem Kraftberechner-----" << std::endl << "-------------------------------------------" << std::endl; processUserInput(); }
Habs mal etwas umgestellt.
-
Das ist ja so fürn A**** in dem Fall alles einfach in eine Funktion zu packen...(vorallem weil deine Version nicht mal funktioniert). Schreib ruhig using namespace std; bei einfachen Programmen wie deins.
-
okay danke für den code
ich glaub ich lass den atomkrieg ausbrechen wenn der user nich auf 1,2,3, 'j' oder 'n' drückt >: D
-
Es heisst nicht Edith, sondern edit ohne h (kommt vom Englischen).
Wie du wahrscheinlich schon selbst bemerkt hast, wiederholt sich der Code in den einzelnen switches zum Grossteil. Warum nicht sowas:
int read_acceleration() { std::cout << "Bitte geben Sie ihre Beschleunigung an(in m/s^2):" << std::endl; int i; std::cin >> i; return i; } // analog für alle Grössen case '1': int a = read_acceleration(); int m = read_mass(); std::cout << "Ergebnis:\n" << a*m << "N\n"; break; // analog für alle cases
Das processUserInput würde ich auflösen, solche Sachen können problemlos in main rein.
-
HighLigerBiMBam schrieb:
Das ist ja so fürn A**** in dem Fall alles einfach in eine Funktion zu packen...(vorallem weil deine Version nicht mal funktioniert). Schreib ruhig using namespace std; bei einfachen Programmen wie deins.
Ist ungetestet