Warum geht das nicht?
-
Wer den schaden hat, braucht für den spott nich zu sorgen....
Kann mir vielleicht jemand sagen, WIE ich das Problem heben kann?
-
1. Das heisst #include <iostream> und nicht #include <iostream.h>. Wenn dein Compiler noch iostream.h durchgehen läßt solltest du ihn aktualisieren. Dann fehlt ein using namespace std; nach den includes.
2. #include <cstdio> ist besser als #include <stdio.h>
3. Changer macht nicht vernünftiges, solltest du nochmal anschauen.
4. Du willst doch nicht den Wert ändern, wenn du ein X zeichnen willst, sondern einfach den Wert auf true setzen:
if(anz1 >= 14) pa = true;
5. Der ganze Drawer Teil sollte nach dem Changer Teil kommen, da sonst alles noch auf false steht.
6. Du solltest, um das Lernen von std::vector zu Beschleunigen, deinen jetzigen Quelltext 100 mal in Notepad eintippen ohne Copy und Paste zu benutzen.
-
Oh ,klar,
ich vergaß:
int i; //i = Changer(x); <<- Buh! i = x; //<< Aah!
-
#include<iostream.h> // veraltet: <iostream> nehmen #include<stdio.h> // hier genauso <cstdlib>, außerdem brauchst du das nicht void Drawer(bool x) { if(x) cout << "Û"; else cout << " "; }
edit: zu langsam
mfg
-
Ein Studium der Schleifen und switch/case Anweisungen (sprich: der absoluten Grundlagen) könnte auch nicht schaden.
-
Ponto schrieb:
Ich glaube mit std::vector wäre das Programm 80% kürzer.
Untertreibst du nicht ein wenig?
Ich tippe auf >95% weniger LOC, >99% bessere Lesbarkeit@michel_herke
Zuerst das obligatorische:#include<iostream> // anstelle von //#include<iostream.h> //#include<stdio.h>
Deine Changer Funktion ist nicht nur unnütz sondern auch falsch. Wenn du einem bool einen Wert zuweisen willst dann mach es einfach:
bool aa; // ... if (anz1 > 0) { aa = true; } // alternativ: az = (anz1 > 0);
Darüber hinaus (in Bezug auf die Drawer Funktion):
bool x; if (x) cout << "Û"; // ist deutlich einfacher & lesbarer als if (x == true) cout << "Û";
Vor allem solltest du deine Werte aufbereiten bevor du sie ausgibst
Falls dieser Post kein aufwendiger Witz sein soll: Such dir erst einmal ein nettes Tutorial, (am besten eins wo auch Schleifen besprochen werden
) und mach dich dann mit der STL vertraut, insbesondere std::vector und std::map.
-
wow. das könnte man glatt bei thedailywtf einschicken oo
-
Ich denke, dass man in diesem Fall mit arrays besser dran ist, vector ist ziemlicher overkill, und arrays lassen sich einfacher mit Werten initialisieren. Ich dachte da an etwas in der Art:
#include <iostream> #include <sstream> #include <string> using namespace std; static const string faecher[] = { "Mathe", "Deutsch", "der 1. Fremdsprache", "der 2.Fremdsprache", "Chemie", "Physik", "Sport", "PoWi", "WPF", "Geschichte", "Kunst", "Religion", "Sozialverhalten", "Arbeitsverhalten" }; static const int anzahl_faecher = sizeof(faecher) / sizeof(faecher[0]); int main() { int noten[6] = {0}, notensumme = 0; for(int i = 0; i < anzahl_faecher; ++i) { int x; string zeile; stringstream sstr; do { cout << "Bitte geben Sie Ihre Note in " << faecher[i] << " ein: " << flush; getline(cin, zeile); sstr.clear(); sstr.str(zeile); sstr >> x; } while(!sstr || x < 1 || x > 6); notensumme += x; ++noten[x - 1]; } for(int i = 0; i < 6; ++i) cout << "Anzahl " << i+1 << "er: " << noten[i] << endl; cout << "Durchschnitt: " << double(notensumme) / anzahl_faecher << endl; }
-
int Add (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int o, int p ) { return (a+b+c+d+e+f+g+h+i+j+k+l+o+p); }
das ist doch nicht dein ernst?!?
-
otze schrieb:
int Add (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int o, int p ) { return (a+b+c+d+e+f+g+h+i+j+k+l+o+p); }
das ist doch nicht dein ernst?!?
ja, übel. mach das mit #define
-
[cpp]
cout <<" Bitte geben sie ihre Note in Deutsch ein: ";
cin >> b;
if (b == 1) anz2++;if (b ==2) anz2++; [/cpp]
ich würde sagen, dass verfälscht das Ergebnis
-
Macht ihn doch nicht so fertig! So programmiert doch jeder Anfänger. Möchte nicht wissen, wie mein Code vor knapp 15 Jahren aussah.
Immerhin will er ja besser werden.
-
michel_herke schrieb:
... aa: cout <<" Bitte geben sie ihre Note in Mathe ein: "; cin >> a; if (a == 1) anz1++; // Die Noten werden abgerfragt. if (a ==2) anz2++; // Bei jeder 1 soll zu anz1 eins dazu gezählt werden if (a ==3)anz3++; // Bei jeder 2, soll eins zu anz2 dazugezählt werden usw. if (a ==4)anz4++; if (a ==5)anz5++; if (a ==6)anz6++; if ( a > 6 ) { cout <<" Ungueltige Note" << endl ; goto aa; ... goto ao; } ap: cout <<" Bitte geben sie ihre Note in Arbeitsverhalten ein: "; cin >> p; if (a == 1)anz1++; if (a ==2)anz2++; if (a ==3)anz3++; if (a ==4)anz4++; if (a ==5)anz5++; if (a ==6)anz6++; if ( p > 6 ) ...
1. goto-anweisungen sind nicht das wahre
2. auch das verfälscht das ergebnis (2x a++)
-
statt dieses...
if (a == 1) anz1++; if (a ==2) anz2++; if (a ==3) anz3++; ... ... usw...
sollte man doch besser ein array nehmen