Anfänger; if - beding.& rücksprung+++
-
oh je, nun hab ich die götter verärgert
nur zur entschuldigung: heute=zweiter tag, davor fast ein jahrzehnt nix und da auch nur schulisch ein wenig C-erfahrung gesammelt...
gut, also
-das mit den leerzeichen krieg ich wohl noch hin
-prototyp? -schlag ich nach
-nicht alles in eine zeile? - gut, siehe leerzeile
-funktion in funktion? - omg, dann muss das wohl verkehrt sein - äh... also wie deklariere ich jetzt die umfragen? -in einer eigenen klasse? wie ruf ich die dann an der stelle hinterm break auf?
-überbleibsel gekillededit:
@5er1al: funktion ist nicht vollständig, da sollen ja noch fragen rein, die man mit "j","n" und "v" beantworten kann und da am ende ja eine grafik erstellt werden soll, die alle j's,n's und v's in form von balken (5%schritte) anzeigen soll, müssen diese doch auch noch übergeben werden, oder nicht?
oh mann, nun bin ich verpeiltDANKE
-
prototyp...du musst vor der main funktion die funktion bekannt machen:
void umfrage0(); //prototyp int main() { //blabla //irgendwann mal umfrage0(); //aufruf... return 0; } void umfrage0() //definition { //mach irgendwas }
und mit der funktion in funktion war gemeint, das deine funktion umfrage0() ausversehen in der mainfunktion stand, sie muss aber ausserhalb stehen...
@FUnk, mach erstmal das dein prog läuft...
-
achso, ja - ok...
gut, jetzt lässt es sich auch kompilieren...
leider wird die funktion jedoch nicht ausgeführt.
aber auf jeden fall schonmal VIELEN DANK EUCH BEIDEN !!!
-hätte ich nicht gedacht, so schnell feedback zu bekommen !...ein forum steht und fällt mit seinen usern...
hier fällt anscheinend nichts
-
@Funk:
Wenn du das im Prinzip so compiliert hast wie von 5er1al gepostet, dann müsste es schon funktioneren und die Funktion umfrage0 müsste auch ausgeführt werden.Am besten zeig mal deinen Code. Und noch ein Tipp. Ließ dir die Kapitel über die Grundlagen nochmal durch
(Klicke dazu auf meine link-liste, dort findest du zwei Links zu den Tutorials von volkard und shade).
Caipi
-
ja, die hab ich im tab
die funktionen wurden nicht ausgeführt, weil sie hinter dem break standen...
habs getauscht und jetzt funktioniert esfreu
so, nun werde ich die probeumfragen machen.
- kriege mit sicherheit noch probleme mit den antworten und deren auswertung... - aber ehrlich gesagt freu ich mich schon drauf - auf diese weise zu lernen macht viel mehr freude daran, als einzelne kapitel in tutorials durchzuackern
gruss
-
wir helfen hier eigentlich immer gern....
-
das ist gut zu wissen
weiss nämlich wieder nicht so richtig weiter:
-eine umfrage besteht aus drei fragen mit drei antwortmöglichkeiten...
-nun soll jede antwort zu jeder frage gespeichert werden.
----ich dachte mir, ich erstelle ein array "antwort[3][3]", aber das ist ja gar nicht sinnvoll, oder?
oder doch und ich muss nach jedem programmende dann das array auslesen um a) die daten zu speichern und b) aus den daten eine statistik erstellen zu können ?
welche werte bis zu welcher höhe kann denn ein array des formats "int antwort[3][3];" annehmen? - ganzzahlig bis "unendlich", sprich neun mal ∞ ?
kann ich jedem feld eines arrays auch einen namen zuweisen?
oder bin ich jetzt auf der ganz falschen fährte?
danke schonmal und gruss, funk
-
Funk schrieb:
-eine umfrage besteht aus drei fragen mit drei antwortmöglichkeiten...
-nun soll jede antwort zu jeder frage gespeichert werden.
int antwort[3];
Funk schrieb:
ich dachte mir, ich erstelle ein array "antwort[3][3]", aber das ist ja gar nicht sinnvoll, oder?
Irgendwie nicht, denn wozu brauchst du nun neun Elemente?
Funk schrieb:
welche werte bis zu welcher höhe kann denn ein array des formats "int antwort[3][3];" annehmen? - ganzzahlig bis "unendlich", sprich neun mal ∞?
Grundsätzlich kann das Array neun int-Variablen aufnehmen, deren Wertebereich wiederum von deinem Prozessor und Betriebssystem abhängen. Im Normalfall sind das 32 Bit, also von -2147483648 bis 2147483647.
Funk schrieb:
kann ich jedem feld eines arrays auch einen namen zuweisen?
Dann brauchst du ein string-Array; ich wüßte allerdings nicht, welchen Sinn das haben soll.
Moritz
-
danke für die schnelle antwort moritz.
3x3 brauche ich, weil 3 fragen mit 3 versch. antworten... wenn ich später eine grafik zu den abgegebenen antworten ausgeben will, soll er ja anzeigen, z.b.:
frage1
ja -------- 15%
nein ------10%
vllt --------------------------------- 75%bei 4000 abgebene stimmen
frage2 ... etc.pp.
... reicht also z.b. "int auswert[8]" (also neun verschiedene werte) ?
kann ich also auch den befehl setzen auswert[5]++, damit position 6 um 1 erhöht wird?
- und wie würde ich die werte wieder auslesen können?
gruss
-
Funk schrieb:
... reicht also z.b. "int auswert[8]" (also neun verschiedene werte) ?
Das sind nur 8 Werte; wenn du 9 willst, mußt du auch neun verlangen.
int auswert[9]
reserviert 9 Elemente, die über die Indize 0 bis 8 ansprechbar sind.
Funk schrieb:
kann ich also auch den befehl setzen auswert[5]++, damit position 6 um 1 erhöht wird?
Ja.
Funk schrieb:
und wie würde ich die werte wieder auslesen können?
Wie meinst du das? Auslesen von wo?
Moritz
-
also, ich habe nun folgende funktion:
void umfrage0() { int frage1[3]={0}; int frage2[3]={0}; int frage3[3]={0}; int antwort; cout<<"------------------------------"<<endl; cout<<"Dies ist Umfrage Nr.0, von XXX"<<endl; cout<<"------------------------------\n\n"<<endl; cout<<"Frage1:...?\n\n"<<endl; cout<<"(0)Ja (1)Nein (2)Vielleicht\n\n"<<endl; cin>> antwort; switch (antwort) { case 0: cout <<"Ja gespeichert\n\n"<<endl; frage1[1]++;break; case 1: cout <<"Nein gespeichert\n\n"<<endl; frage1[2]++;break; case 2: cout <<"Vielleicht gespeichert\n\n"<<endl; frage1[3]++;break; default: cout<<"Falsche Eingabe, bitte nochmal"<<endl; break; } cout<<"Frage2:...?\n\n"<<endl; cout<<"(0)Ja (1)Nein (2)Vielleicht\n\n"<<endl; cin>> antwort; switch (antwort) { case 0: cout <<"Ja gespeichert\n\n"<<endl; frage2[1]++;break; case 1: cout <<"Nein gespeichert\n\n"<<endl; frage2[2]++;break; case 2: cout <<"Vielleicht gespeichert\n\n"<<endl; frage2[3]++;break; default: cout<<"Falsche Eingabe, bitte nochmal"<<endl; break; } cout<<"Frage3:...?\n\n"<<endl; cout<<"(0)Ja (1)Nein (2)Vielleicht\n\n"<<endl; cin>> antwort; switch (antwort) { case 0: cout <<"Ja gespeichert\n\n"<<endl; frage3[1]++;break; case 1: cout <<"Nein gespeichert\n\n"<<endl; frage3[2]++;break; case 2: cout <<"Vielleicht gespeichert\n\n"<<endl; frage3[3]++;break; default: cout<<"Falsche Eingabe, bitte nochmal"<<endl; break; } getchar(); }
das soll nun noch mehrmals durch verschiedene benutzer durchlaufen werden können und die frage1-3 arrays sind dann ja gefüllt mit daten...
- diese sollen in "5%-schritte"-balken grafisch dargestellt werden und dafür muss ich ja die arrays doch "auslesen".habe folgendes dazu gefunden/zugeschickt bekommen:
for(i=0; I<= sizeof(array);i++)
-einfach nur "int i; " und für array entsprechendes frage-array einsetzen?
habs noch nicht ausprobiert, da ich den inhalt der for-schleife nicht ganz verstehe, also i=0 und i++... weiss nicht, was das dadrin zu suchen hat und wieso I<= sizeof ?
geht auch einfach: for(sizeof(frage1)) { funktion } ?oh! - und wie ist das mit frage1[3]++ ? - muss es eigentlich frage1[2]++ sein, wenn ich den letzten indize erhöhen will?
und noch eine frage: ich fände es gut, wenn die abgebenen stimmen gespeichert werden würden, bevor das programm endet, sodass nicht mit jedem programmstart bei null angefangen wird... geht das nur über datenbanken? weil ich nicht glaube, dass ich das bis zum 18.mai schaffen würde (muss auch nicht!), wäre aber schön.
gruss und gn8
-
Kann erstmal nur kurz antworten (stress)!!!
Also erstmal zu deinem code...bei einer fehleingabe wird nix wiederholt...
for schleife:
int array[10]; for(int i=0;i<10;i++) { array[i]=i; }
bedeutet, das die Schleife 10 mal durchläuft (von 0 bis 9)!
array[i] bedeutet, das auf das Arrayelement zugegriffen wird, wo sich die schleife befindet (beim ersten durchlauf i=0, auf array[0], beim 2ten array[1]...somit kannst du auf die arrayelemente zugreifen...
-
cool - THX !!!
warum schreiben die das in den tutorien nicht auch so?
danke - gruss!
-
naja, liegt wohl daran weil schleifen ja für unendlich viele dinge verwendet werdem,und alles so zu erklären würde wohl den rahmen sprengen
-
hehe...
habs wohl irgendwie falsch implementiert - lief nicht...
habs nun so gemacht:
switch (antwort) { case 0: cout <<"Statistik"<<endl; cout <<"Auswertung Frage1\n"<<endl; cout <<"Ja: "<< sizeof(frage1)/sizeof(frage1[0])<<"\n"; cout <<"Nein: "<< sizeof(frage1)/sizeof(frage1[1])<<"\n"; cout <<"Vielleicht:"<< sizeof(frage1)/sizeof(frage1[2])<<"\n"; ... ...
weisst du auch, wie ich ihm jetzt sage, dass er pro 5% der abgebenen stimmen ein "*" setzt, anstatt eine zahl zu schreiben?
gruss
edit: hhhmmmm... komisch - was ist denn nun falsch? die werte stimmen ja gar nicht, die ausgegeben werden... grml
edit2:kommando zurück! - ich verstehe den fehler nun: ich lasse quasi nur die arraygrösse anzeigen, aber nicht die werte der indizes...aber wie komme ich denn doch noch zum ziel?
-
Funk schrieb:
weisst du auch, wie ich ihm jetzt sage, dass er pro 5% der abgebenen stimmen ein "*" setzt, anstatt eine zahl zu schreiben?
Prozentzahl durch 5 teilen und dann mit ner for-Schleife einen Stern pro durchlauf setzen.
float stars = prozent / 5; for(int i = 0; i < stars; i++) cout << "*";
so oder so ähnlich
-
aha... mmmhhh...
kann ich für i ich auch einen array-indize setzen?
würds ja gerne ausprobieren, aber:
das grössere problem ist noch, das die indizes nicht richtig ausgelesen werden...ist echt zum haare ausreissen
cout<<"Statistik/Auswertung anzeigen? (0)Ja (1)Nein"<<endl, cin>>antwort; switch (antwort) { case 0: cout <<"Statistik"<<endl; cout <<"Auswertung Frage1\n"<<endl; cout <<"Ja: "<< sizeof(frage1[0])<<"\n"; cout <<"Nein: "<< sizeof(frage1[1])<<"\n"; cout <<"Vielleicht:"<< sizeof(frage1[2])<<"\n"; /*cout <<"Auswertung Frage2\n"<<endl; cout <<"Ja: "<< sizeof(frage2)/sizeof(frage2[0])<<"\n"; cout <<"Nein: "<< sizeof(frage2)/sizeof(frage2[1])<<"\n"; cout <<"Vielleicht:"<< sizeof(frage2)/sizeof(frage2[2])<<"\n"; cout <<"Auswertung Frage3\n"<<endl; cout <<"Ja: "<< sizeof(frage3)/sizeof(frage3[0])<<"\n"; cout <<"Nein: "<< sizeof(frage3)/sizeof(frage3[1])<<"\n"; cout <<"Vielleicht:"<< sizeof(frage3)/sizeof(frage3[2])<<"\n"; */ break; case 1: cout <<"Zurueck zum Hauptmenue"<<endl; break; default: cout<<"Falsche Eingabe, bitte nochmal"<<endl; break; }
so teste ich gerade herum...
...
-
hm...ich geb dir mal einen gut gemeinten rat, schau dir mal in nem Buch oder Tutorial bisschen was über arrays und schleifen an...
-
ja, bin die ganze zeit dabei... heut nacht bis um 4 und heute morgen seit 10 wieder... vielleicht fehlt mir einfach die begabung, weiss nicht...
gruss
-
vielleicht solltest erstmal einfache sachen machen, und daran selber bisschen rumprobieren!