| Autor |
Nachricht |
Flyerz1934
Unregistrierter
|
Flyerz1934 Unregistrierter
09:26:42 15.05.2012 Titel: |
Verbesserungsvorschläge |
Zitieren |
| Code: | 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 | #include <iostream>
#include <string>
using namespace std;
int main()
{
int ichoice;
int ichoice1;
int choice;
int choice1;
int choice2;
int choice3;
const double PI = 3.14;
double umfang_kreis;
double radius_kreis;
double flaeche_kreis;
double grundflaeche_pyramide;
double hoehe_pyramide;
double volumen_pyramide;
double seite_dreieck;
double hoehe_dreieck;
double flaeche_dreieck;
double seite_rhomboid;
double hoehe_rhomboid;
double flaeche_rhomboid;
double flaeche_rhombus;
double hoehe_rhombus;
double seite_rhombus;
double flaeche_quadrat;
double seite_quadrat;
double laenge_rechteck;
double breite_rechteck;
double tiefe_rechteck;
double volumen_rechteck;
double flaeche_rechteck;
double kantenlaenge_wuerfel;
double volumen_wuerfel;
float num1;
float num2;
float sum1;
char multi = '*';
char ccount;
char cyesno;
char durch = '/';
Menu:
system("cls");
cout << "Waehle: " << endl;
cout << "1. Mathematik" << endl;
cout << "2. Geometrie" << endl;
cout << "3. Exit" << endl;
cin >> ichoice;
system("cls");
if(ichoice == 1) {goto Mathematik; }
if(ichoice == 2) {goto Geometrie;}
if(ichoice == 3) {goto Exit; }
else {
cout << "Falsche Eingabe!" << endl;
cerr << "Druecke eine Taste um fortzufahren" << endl;
getchar();
goto Menu;
}
Mathematik:
system("cls");
cout << "1 Zahl: ";
cin >> num1;
cout << "Operationszeichen (+, -, *, /):";
cin >> ccount;
cout << "2 Zahl: ";
cin >> num2;
system("cls");
if(ccount =='+') { sum1 = num1 + num2; };
if(ccount =='-') { sum1 = num1 - num2; };
if(ccount =='*') { sum1 = num1 * num2; };
if(ccount =='/') { sum1 = num1 / num2; };
cout << "Summe: " << endl;
cout << num1 << " " << ccount << " " << num2 << " = " << sum1 << endl << endl;
cout << "Nochmal rechnen?" << endl << "[Y/N]: ";
cin >> cyesno;
if(cyesno =='y') {goto Mathematik; }
if(cyesno =='n') {goto Menu;}
else { goto confirm_calc; }
confirm_calc:
cout << endl << endl << endl << "Falsche Eingabe!" << endl;
cout << "Nochmal rechnen?" << endl << "[Y/N]: ";
cin >> cyesno;
if(cyesno =='y') {goto Mathematik; }
if(cyesno =='n') {goto Menu;}
else { goto confirm_calc; }
Geometrie:
system("cls");
cout << "Waehle: " << endl;
cout << "1. Rechteck, Quadrat, Wuerfel" << endl;
cout << "2. Rhombus, Rhomboid" << endl;
cout << "3. Dreieck, Pyramide" << endl;
cout << "4. Kreis, Kugel" << endl;
cin >> ichoice1;
system("cls");
if(ichoice1 == 1){goto Rechteck_Quadrat_Wuerfel; }
if(ichoice1 == 2){goto Rhombus_Rhomboid; }
if(ichoice1 == 3){goto Dreieck_Pyramide; }
if(ichoice1 == 4){goto Kreis_Kugel; }
else {
cout << "Falsche Eingabe!" << endl;
cout << "Druecke eine Taste um fortzufahren" << endl;
getchar();
goto Menu;
}
Rechteck_Quadrat_Wuerfel:
system("cls");
cout << "1. Flaeche: Rechteck" << endl;
cout << "2. Flaeche: Quadrat" << endl;
cout << "3. Volumen: Rechteck(Quader)" << endl;
cout << "4. Volumen: Wuerfel" << endl;
cin >> choice;
system("cls");
if(choice == 1){goto Flaeche_Rechteck; }
if(choice == 2){goto Flaeche_Quadrat; }
if(choice == 3){goto Volumen_Rechteck; }
if(choice == 4){goto Volumen_Wuerfel; }
else {
cout << "Falsche Eingabe!" << endl;
cout << "Druecke eine Taste um fortzufahren" << endl;
getchar();
goto Menu;
}
Flaeche_Rechteck:
system("cls");
cout << "Geben Sie die Länge ein: ";
cin >> laenge_rechteck;
cout << "Geben Sie die Breite ein: ";
cin >> breite_rechteck;
flaeche_rechteck = ( laenge_rechteck * breite_rechteck );
cout << laenge_rechteck << " " << multi << " " << breite_rechteck << " = " << flaeche_rechteck << "cm2" << endl << endl;
cout << "Noch eine Rechtecksflaeche berechnen?" << endl << "[Y/N]: ";
cin >> cyesno;
if(cyesno =='y') {goto Flaeche_Rechteck; }
if(cyesno =='n') {goto Menu;}
else { goto confirm_calc; }
Volumen_Rechteck:
system("cls");
cout << "Geben Sie die Länge ein: ";
cin >> laenge_rechteck;
cout << "Geben Sie die Breite ein: ";
cin >> breite_rechteck;
cout << "Geben Sie die Tiefe ein: ";
cin >> tiefe_rechteck;
volumen_rechteck = ( laenge_rechteck * breite_rechteck * tiefe_rechteck );
cout << laenge_rechteck << " " << multi << " " << breite_rechteck << " " << multi << " " << tiefe_rechteck << " = " << volumen_rechteck << "ccm" << endl << endl;
cout << "Noch ein Rechtecksvolumen berechnen?" << endl << "[Y/N]: ";
cin >> cyesno;
if(cyesno =='y') {goto Volumen_Rechteck; }
if(cyesno =='n') {goto Menu;}
else { goto confirm_calc; }
Flaeche_Quadrat:
system("cls");
cout << "Geben Sie eine Seitenlänge ein: ";
cin >> seite_quadrat;
flaeche_quadrat = ( seite_quadrat * seite_quadrat );
cout << seite_quadrat << " " << multi << " " << seite_quadrat << " = " << flaeche_quadrat << "cm2" << endl << endl;
cout << "Noch eine Quadratflaeche berechnen berechnen?" << endl << "[Y/N]: ";
cin >> cyesno;
if(cyesno =='y') {goto Flaeche_Quadrat; }
if(cyesno =='n') {goto Menu;}
else { goto confirm_calc; }
Volumen_Wuerfel:
system("cls");
cout << "Geben Sie die Kantenlänge ein: ";
cin >> kantenlaenge_wuerfel;
volumen_wuerfel = ( kantenlaenge_wuerfel * kantenlaenge_wuerfel * kantenlaenge_wuerfel );
cout << kantenlaenge_wuerfel << " " << multi << " " << kantenlaenge_wuerfel << " " << multi << " " << kantenlaenge_wuerfel << " = " << volumen_wuerfel << "ccm" << endl << endl;
cout << "Noch eine Würfel berechnen?" << endl << "[Y/N]: ";
cin >> cyesno;
if(cyesno =='y') {goto Volumen_Wuerfel; }
if(cyesno =='n') {goto Menu;}
else { goto confirm_calc; }
Rhombus_Rhomboid:
system("cls");
cout << "1. Flaeche: Rhombus" << endl;
cout << "2. Flaeche: Rhomboid" << endl;
cin >> choice1;
system("cls");
if(choice1 == 1){goto Flaeche_Rhombus; }
if(choice1 == 2){goto Flaeche_Rhomboid; }
else {
cout << "Falsche Eingabe!" << endl;
cout << "Druecke eine Taste um fortzufahren" << endl;
getchar();
goto Menu;
}
Flaeche_Rhombus:
system("cls");
cout << "Geben Sie irgendeine Seite ein: ";
cin >> seite_rhombus;
cout << "Geben Sie die Hoehe h ein: ";
cin >> hoehe_rhombus;
flaeche_rhombus = ( seite_rhombus * hoehe_rhombus );
cout << seite_rhombus << " " << multi << " " << hoehe_rhombus << " = " << flaeche_rhombus << endl << endl;
cout << "Noch eine Rhombus berechnen?" << endl << "[Y/N]: ";
cin >> cyesno;
if(cyesno =='y') {goto Flaeche_Rhombus; }
if(cyesno =='n') {goto Menu;}
else { goto confirm_calc; }
Flaeche_Rhomboid:
system("cls");
cout << "Geben Sie eine Seite ein: ";
cin >> seite_rhomboid;
cout << "Geben Sie die dazugehoerige Hoehe ein: ";
cin >> hoehe_rhomboid;
flaeche_rhomboid = ( seite_rhomboid * hoehe_rhomboid );
cout << seite_rhomboid << " " << multi << " " << hoehe_rhomboid << " = " << flaeche_rhomboid << endl << endl;
cout << "Noch eine Rhomboid berechnen?" << endl << "[Y/N]: ";
cin >> cyesno;
if(cyesno =='y') {goto Flaeche_Rhomboid; }
if(cyesno =='n') {goto Menu;}
else { goto confirm_calc; }
Dreieck_Pyramide:
system("cls");
cout << "1. Flaeche: Dreieck" << endl;
cout << "2. Volumen: Pyramide" << endl;
cin >> choice2;
system("cls");
if(choice2 == 1){goto Flaeche_Dreieck; }
if(choice2 == 2){goto Volumen_Pyramide; }
else {
cout << "Falsche Eingabe!" << endl;
cout << "Druecke eine Taste um fortzufahren" << endl;
getchar();
goto Menu;
}
Flaeche_Dreieck:
system("cls");
cout << "Geben Sie eine Seite ein: ";
cin >> seite_dreieck;
cout << "Geben Sie die dazugehoerige Hoehe ein: ";
cin >> hoehe_dreieck;
flaeche_dreieck = ( seite_dreieck * hoehe_dreieck / 2 );
cout << seite_dreieck << " " << multi << " " << hoehe_dreieck << " " << durch << " " << " 2 " << " = " << flaeche_dreieck << endl << endl;
cout << "Noch ein Dreieck berechnen?" << endl << "[Y/N]: ";
cin >> cyesno;
if(cyesno =='y') {goto Flaeche_Dreieck; }
if(cyesno =='n') {goto Menu;}
else { goto confirm_calc; }
Volumen_Pyramide:
system("cls");
cout << "Geben Sie die Grundflaeche ein: ";
cin >> grundflaeche_pyramide;
cout << "Geben Sie die Hoehe der Pyramide ein: ";
cin >> hoehe_pyramide;
volumen_pyramide = ( grundflaeche_pyramide * hoehe_pyramide / 3 );
cout << grundflaeche_pyramide << " " << multi << " " << hoehe_pyramide << " " << durch << " " << " 2 " << " = " << volumen_pyramide << endl << endl;
cout << "Noch eine Pyramide berechnen?" << endl << "[Y/N]: ";
cin >> cyesno;
if(cyesno =='y') {goto Volumen_Pyramide; }
if(cyesno =='n') {goto Menu;}
else { goto confirm_calc; }
Kreis_Kugel:
system("cls");
cout << "1. Flaeche: Kreis" << endl;
cout << "2. Umfang: Kreis" << endl;
cin >> choice3;
system("cls");
if(choice3 == 1){goto Flaeche_Kreis; }
if(choice3 == 2){goto Umfang_Kreis; }
else {
cout << "Falsche Eingabe!" << endl;
cout << "Druecke eine Taste um fortzufahren" << endl;
getchar();
goto Menu;
}
Flaeche_Kreis:
system("cls");
cout << "Geben Sie den Radius ein: ";
cin >> radius_kreis;
flaeche_kreis = ( radius_kreis * radius_kreis * PI );
cout << radius_kreis << " " << multi << " " << radius_kreis << " " << multi << " " << PI << " = " << flaeche_kreis << endl << endl;
cout << "Noch einen Kreis berechnen?" << endl << "[Y/N]: ";
cin >> cyesno;
if(cyesno =='y') {goto Flaeche_Kreis; }
if(cyesno =='n') {goto Menu;}
else { goto confirm_calc; }
Umfang_Kreis:
system("cls");
cout << "Geben Sie den Radius ein: ";
cin >> radius_kreis;
umfang_kreis = ( radius_kreis * 2 * PI );
cout << radius_kreis << " " << multi << " " << 2 << " " << multi << " " << PI << " = " << umfang_kreis << endl << endl;
cout << "Noch einen Umfang berechnen?" << endl << "[Y/N]: ";
cin >> cyesno;
if(cyesno =='y') {goto Umfang_Kreis; }
if(cyesno =='n') {goto Menu;}
else { goto confirm_calc; }
Exit:
return 0;
} | | |
|
|
|
 |
Unregistrierter
|
Unregistrierter
09:55:09 15.05.2012 Titel: |
|
Zitieren |
Alles neu! Haste bei Jürgen Wolf gelernt oder was!? Das ist unglaublich hässlich, Variablennamen immer so lokal wie möglich halten, niemals den Standard-Namensraum ausschütten, keine OS-spezifischen Konsolenbefehle benutzen, und dazu ist das alles noch so imperativ programmiert..... |
|
|
|
 |
arghonaut
Unregistrierter
|
arghonaut Unregistrierter
10:05:38 15.05.2012 Titel: |
|
Zitieren |
| Hacker schrieb: | | Alles neu! Haste bei Jürgen Wolf gelernt oder was!? Das ist unglaublich hässlich, Variablennamen immer so lokal wie möglich halten, niemals den Standard-Namensraum ausschütten, keine OS-spezifischen Konsolenbefehle benutzen, und dazu ist das alles noch so imperativ programmiert..... |
Das ist doch alles relativ wurscht.
Das eigentliche Problem ist mMn., dass alles in der main gemacht wird, und anstatt die Funktionalität in Funktionen/Klassen auszulagern, wird alles hinter Sprungmarken (goto) versteckt. Das wird unheimlich unübersichtlich und schwer erweiterbar. |
|
|
|
 |
SeppJ
Moderator
Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17936
|
SeppJ Moderator
10:09:11 15.05.2012 Titel: |
|
Zitieren |
Abstraktion! Du wiederholst 20x fast den gleichen Code. Versuche dein Problem in Funktionen zu zerlegen, die du mehrmals benutzen kannst. Optimalerweise* hast du in deinem Code keine zwei Zeilen Code jemals doppelt.
Werde den Spaghettisalat mit den ganzen gotos los! Die Zerlegung in Funktionen wird dir dabei helfen. Im Prinzip dürfte jedes goto bei dir stattdessen ein Funktionsaufruf werden, denn deine jetzigen Codeblöcke entsprechen schon fast Funktionen. Vorteil der Funktionen ist aber gewaltig, denn dann ist garantiert, dass die Codeblöcke auch wirklich unanbhängig sind und ein normaler Mensch (d.h. jeder außer dir und du selber in ein bis zwei Wochen) kann das Programm nachvollziehen, ohne neue Hirnwindungen zu bekommen.
Das sind erst einmal die allerwichtigsten zwei Punkte. Wenn das gemacht ist, kann man weitergucken, es gibt noch viel mehr Verbesserungspotential.
*: Naja, wirklich optimal ist das nicht, aber es ist eine gute Anfängerübung, wenn du dies anstrebst. |
_________________ Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List
|
|
 |
Unregistrierter
|
Unregistrierter
11:46:52 15.05.2012 Titel: |
|
Zitieren |
| arghonaut schrieb: | | Hacker schrieb: | | Alles neu! Haste bei Jürgen Wolf gelernt oder was!? Das ist unglaublich hässlich, Variablennamen immer so lokal wie möglich halten, niemals den Standard-Namensraum ausschütten, keine OS-spezifischen Konsolenbefehle benutzen, und dazu ist das alles noch so imperativ programmiert..... |
Das ist doch alles relativ wurscht.
Das eigentliche Problem ist mMn., dass alles in der main gemacht wird, und anstatt die Funktionalität in Funktionen/Klassen auszulagern, wird alles hinter Sprungmarken (goto) versteckt. Das wird unheimlich unübersichtlich und schwer erweiterbar. |
Hmmm? Das war ein Punkt von mir. |
|
|
|
 |
Flyerz1934
Unregistrierter
|
Flyerz1934 Unregistrierter
12:14:51 15.05.2012 Titel: |
|
Zitieren |
Vielen Dank für die Vorschläge.
Nun ich mach das Programm für die Schule als Projekt.
Öhm ich übe das Ganze mit einem Buch (jetzt lerne ich C++ , Dirk Louis)
Ausserdem werde ich das alles noch in der Ausbildung lernen .
Das Buch hab ich noch ned fertig deshalb kenn ich das mit den Funktionen nicht.
Ich werde das sicher noch versuchen zu ändern.
Könnt ihr mir sagen wie man hoch 2 macht? |
|
|
|
 |
volkard
Moderator
Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 25682
|
volkard Moderator
12:16:52 15.05.2012 Titel: |
|
Zitieren |
|
 |
SeppJ
Moderator
Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17936
|
SeppJ Moderator
12:18:27 15.05.2012 Titel: |
|
Zitieren |
|
 |
314159265358979
Mitglied
Benutzerprofil
Anmeldungsdatum: 09.03.2010
Beiträge: 4658
|
314159265358979 Mitglied
12:21:00 15.05.2012 Titel: |
|
Zitieren |
@volkard: Er will doch x^2, nicht 2^x. |
|
|
|
 |
volkard
Moderator
Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 25682
|
volkard Moderator
12:22:52 15.05.2012 Titel: |
|
Zitieren |
| Flyerz1934 schrieb: | | Das Buch hab ich noch ned fertig deshalb kenn ich das mit den Funktionen nicht. |
Draußen scheint die Sonne. Setz eine Sonnebrille auf und geh mit dem Buch in den Garten und hau es Dir flugs in den Kopf. Ganz oberflächlich, so daß Du es bis morgen durch hast.
Und dann mach weiter wie gehabt, aber mit einem besseren Blick fürs Große. Im Endeffekt sparst Du damit sicherlich einiges an Zeit. (Benutze für dieses Projekt keine selbergebauten Klassen.) |
_________________ ewr-dienstleister krankenversicherung
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|