Anfänger; if - beding.& rücksprung+++



  • na indem du einfach deine funktion aufrufst....
    musst nix spezielles machen...



  • hhmmm...

    raff ich doch nicht irgendwie... bin die ganze zeit nur am ausprobieren, aber die syntax sitzt noch nicht... leider...

    also:

    do
    	{
    		cout <<"Ihre Eingabe:",cin>>eingabe;
    
    		switch (eingabe)
    	{
    		case 0: cout<<"Null gewaehlt, ok"<<endl;break;goto umfrage0;
    		case 1: cout<<"Eins gewaehlt, ok"<<endl;break;
    		case 2: cout<<"Zwei gewaehlt, ok"<<endl;break;
    		case 3: cout<<"Drei gewaehlt, ok"<<endl;break;
    		default: cout<<"Falsch, bitte nochmal"<<endl;break;
    	}
    }
    
    while(eingabe<0 || eingabe>3);
    
    return 0;
    
    public umfrage0()
    {
     cout<<"umfrage0"<<endl;
    ...// frage 1-3, mit den antwortmöglichkeiten,wertübergabe für statistische auswertung... puuuhhhh
    }
    }
    

    so funktioniert es wohl nicht...grübel...vllt muss ich erstmal was essen - ist ja enorm, wieviel kohlenhydrate sowas verbrennt!!! 😉



  • Funk schrieb:

    hhmmm...

    raff ich doch nicht irgendwie... bin die ganze zeit nur am ausprobieren, aber die syntax sitzt noch nicht... leider...

    also:

    do
    	{
    		cout <<"Ihre Eingabe:",cin>>eingabe;
    	
    		switch (eingabe)
    	{
    		case 0: cout<<"Null gewaehlt, ok"<<endl;break;goto umfrage0;
    		case 1: cout<<"Eins gewaehlt, ok"<<endl;break;
    		case 2: cout<<"Zwei gewaehlt, ok"<<endl;break;
    		case 3: cout<<"Drei gewaehlt, ok"<<endl;break;
    		default: cout<<"Falsch, bitte nochmal"<<endl;break;
    	}
    }
    
    while(eingabe<0 || eingabe>3);
    
    return 0;
    
    public umfrage0()
    {
     cout<<"umfrage0"<<endl;
    ...// frage 1-3, mit den antwortmöglichkeiten,wertübergabe für statistische auswertung... puuuhhhh
    }
    }
    

    so funktioniert es wohl nicht...grübel...vllt muss ich erstmal was essen - ist ja enorm, wieviel kohlenhydrate sowas verbrennt!!! 😉

    das muss so aussehen:

    do
    	{
    		cout <<"Ihre Eingabe:",cin>>eingabe;
    
    		switch (eingabe)
    	{
    		case 0: cout<<"Null gewaehlt, ok"<<endl;break;umfrage0();
    		case 1: cout<<"Eins gewaehlt, ok"<<endl;break;
    		case 2: cout<<"Zwei gewaehlt, ok"<<endl;break;
    		case 3: cout<<"Drei gewaehlt, ok"<<endl;break;
    		default: cout<<"Falsch, bitte nochmal"<<endl;break;
    	}
    }
    
    while(eingabe<0 || eingabe>3);
    
    return 0;
    
    public umfrage0()
    {
     cout<<"umfrage0"<<endl;
    ...// frage 1-3, mit den antwortmöglichkeiten,wertübergabe für statistische auswertung... puuuhhhh
    }
    }
    

    UND BITTE KEIN GOTO 🙂



  • LOL

    ja, danke, hab ich auch gerade nachgelesen 🙂 - war nur ein hilfeschrei nach "geh da endlich hin!!!" 😉 ... die klammern waren es also... omg

    edit:

    na toll - egal, was ich mache - fehlermeldungen

    (38) : error C2064: Ausdruck ergibt keine Funktion
    (50) : error C2143: Syntaxfehler : Fehlendes ';' vor 'public'
    (51) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'



  • 5er1al schrieb:

    das muss so aussehen:

    do // Wie? do einfach so im Code, ohne Funktion drumherum? Naja, ich nehm dann halt mal eine drumherumgeschachtelte main-Funktion an...
    	{
    		cout <<"Ihre Eingabe:",cin>>eingabe; // Leute, macht Leerzeichen zwischen Operatoren und Operanden!
    	
    		switch (eingabe)
    	{ // auch über die Einrückung solltet ihr euch mal Gedanken machen
    		case 0: cout<<"Null gewaehlt, ok"<<endl;break;umfrage0(); // vielleicht Funktion erst durch Prototyp bekannt machen?
    		case 1: cout<<"Eins gewaehlt, ok"<<endl;break;// und bitte nicht all das in eine Zeile quetschen :rage: 
    		case 2: cout<<"Zwei gewaehlt, ok"<<endl;break;
    		case 3: cout<<"Drei gewaehlt, ok"<<endl;break;
    		default: cout<<"Falsch, bitte nochmal"<<endl;break;
    	}
    }
    
    while(eingabe<0 || eingabe>3);
    
    return 0;
    
    public umfrage0() // Was soll das jetzt? Eine Funktion in einer Funktion? Und dann das sowohl fehlplazierte als auch syntaktisch falsch verwendete public?
    {
     cout<<"umfrage0"<<endl;
    }
    } // wohl ein Überbleibsel der main-Funktion ;)
    

    Auch nicht ganz 😉

    Moritz



  • ich hab mir eben nich alles angeschaut...

    do // Wie? do einfach so im Code, ohne Funktion drumherum? Naja, ich nehm dann halt mal eine drumherumgeschachtelte main-Funktion an...
        {
            cout <<"Ihre Eingabe:",cin>>eingabe; // Leute, macht Leerzeichen zwischen Operatoren und Operanden!
    
            switch (eingabe)
        { // auch über die Einrückung solltet ihr euch mal Gedanken machen
            case 0: cout<<"Null gewaehlt, ok"<<endl;break;umfrage0(); // vielleicht Funktion erst durch Prototyp bekannt machen?
            case 1: cout<<"Eins gewaehlt, ok"<<endl;break;// und bitte nicht all das in eine Zeile quetschen :rage:
            case 2: cout<<"Zwei gewaehlt, ok"<<endl;break;
            case 3: cout<<"Drei gewaehlt, ok"<<endl;break;
            default: cout<<"Falsch, bitte nochmal"<<endl;break;
        }
    }
    
    while(eingabe<0 || eingabe>3);
    
    return 0;
    }   //<-----sollte man nicht vergessen
    void umfrage0() // funktion gibt nix zurueck, also void
    {
     cout<<"umfrage0"<<endl;   //Funktion ist sinnfrei...
    }
    // wohl ein Überbleibsel der main-Funktion ;)-----also machen wirs auch weg
    

    vor der main eben der prototyp...dann müssts gehen!

    Mehr hab ich mir erstmal wieder nich angeschaut!



  • 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 gekilled 😉

    edit:
    @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 verpeilt 😞

    DANKE



  • 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 es 🙂 freu

    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


Anmelden zum Antworten