Problem mit Array oder doch Syntax?



  • Ich habe das hier für die Schule programmiert und habe einen Fehler drin

    // code
    // -----

    srand(unsigned(time(NULL)));

    ➡ const int m = 1000;
    int sockenanzahl[m] ;
    do
    {
    for (i<haken; i++; ) // '<' : Operator hat keine Auswirkungen; Operator mit Seiteneffekt erwartet (laut compiler)
    {
    sockenInhalt += rand()%2 ;
    }

    ⚠ sockenanzahl[sockenInhalt]=++; // Syntaxfehler : ';' laut compiler

    } while (x < nussanzahl, x++);

    Meine Fragen:
    1. Bei ⚠ möchte ich der Socke mit der Nummer "sockenInhalt" eine Nuss addieren, funktioniert das so mit dem =++

    2.Bei ➡ wird eine konstante Variable gefordert. ich möchte aber die sockenanzahl aus cin >> abrufen und danach die Konstante für m setzen. Vielleicht mit cin >> anzahl und m=anzahl ? Wie könnte ich das machen?



  • ➡ operator new/delete, sagt dir das nichts dann las es erstmal. Wirst du schon noch lernen
    ⚠ Das = muss weg.
    💡 Die Warnung vom Compiler ist berechtigt, es muss bei dir for (;i<haken; i++) heißen



  • Hallo

    Iron schrieb:

    srand(unsigned(time(NULL)));

    Ich würde das so schreiben:

    srand((unsigned)(time(NULL)));

    Iron schrieb:

    for (i<haken; i++; )
    

    Das ist auich nicht korrekt, sondernm so muss es aussehen:

    for(int i=0; i<haken; i++) //was ist haken?
    

    Ich hoffe, dass das hilft.

    chrische



  • // Die Weihnachtaufgabe
    // --------------------
    // Aufgabe 1

    #include <iostream>
    #include <ctime>
    using namespace std;

    double prozentanteil(int s, int n);
    double prozent;
    int grafik(int s);

    int main()
    {
    int nussanzahl;
    int haken;

    int sockenInhalt=0;
    int i=0;
    int x=0;
    int y=1;
    int anteil=0;

    // --------------------
    // 1. Bildschirmausgabe
    // --------------------

    cout << "Wieviele Nüsse hat der Weihnachtsmann mitgebracht? ";
    cin >> nussanzahl ;

    cout << "\n\n";

    cout << "Wieviele Haken hat der Schornstein? "; cin >> haken;
    cout << "\n\n\n\n\n";

    // Code:
    // -----

    srand(unsigned(time(NULL)));

    const int m = 1000;
    int sockenanzahl[m] ;

    do
    {
    for (;i<haken; i++)
    {
    sockenInhalt += rand()%2 ;
    }

    sockenanzahl[sockenInhalt]=++ ;
    } while (x < nussanzahl, x++);

    // --------------------
    // 2. Bildschirmausgabe
    // --------------------

    cout << "In den Socken befinden sich soviele Nüsse: \n\n\n";

    do {
    cout << "Socke " << y << ": "
    << sockenanzahl[y] << "Nüsse, das entspricht " << prozentanteil(sockenanzahl[y], nussanzahl)
    << " Prozent" <<grafik(sockenanzahl[y]) << "\n";

    } while ( y<=haken, y++);

    return 0;

    }

    // ------------------------------
    // Funktion für Prozentberechnung
    // ------------------------------

    double prozentanteil(int s, int n)

    {
    double prozent=0; prozent=(s*100)/n ;
    return prozent;

    }

    // --------------------------------------
    // Funktion für die grafische Darstellung
    // --------------------------------------

    int grafik(int s)
    {
    char g=1; int j=0;

    do {
    cout << "g";

    } while ( j<s, j++);

    return 0;

    }

    -------------------------
    Das ist mein ganzes Programm. Jetzt habe ich noch einen Syntaxfehler



  • sockenanzahl[sockenInhalt]=++ ;

    da soll jetzt noch ein Syntaxfehler ";" sein. Wenn ich das ";" lösche, dann will er die "}" auch nicht mehr haben



  • Hey,

    wenn Du die Fehlermeldung postest, kann man Dir besser helfen! Syntaxfehler sind ja eigentlich schön zu beseitigen!

    😉



  • error C2059: Syntaxfehler : ';'
    Fehler beim Ausführen von cl.exe.



  • [quote="Iron"]sockenanzahl[sockenInhalt]=++ ;

    Hi okay, das ist definitiv falsch! Du versuchst einem integer array den Wert ++ zuzuordnen. Ich hab noch nicht ganz durchschaut, was Du in Deinem Programm da genau eigentlich machen willst, aber wenn Du Deine Variable sockenanzahl erhöhen willst, sollte es kein array sein!!!!!!

    int sockenanzahl;
    do
    {
    ....
    ++sockenanzahl;
    } while...
    


  • also, da kommt der gute weihnachtsmann und schmeisst nüsse durch den Schornstein, die über Haken im Schornstein stolpern. Es geht um die Verteilung der Nüsse in den Socken, die ganz unten hängen, wenn die Nüsse über alle Haken gesprungen sind. Jede Nuss kann nur nach links oder rechts fallen, also 0 oder 1 werden. ich muss dann jede socke auf dem schirm anzeigen und auswerten, auch prozentual.
    Dazu muss ich ein array verwenden. sockenanzahl[sockeninhalt] sockeninhalt soll die Anzahl der Socken wiedergeben.es gibt immer eine socke mehr als es haken gibt. ich dacht, wenn ich eine rand() funktion z.b. 6 laufen lasse, dann habe ich einen wert von 0-6, das wäre dann =sockeninhalt, also der Speicherplatz dem ich durch sockenanzahl[sockeninhalt]=++ einen Zähler hinzufügen möchte.



  • Sorry, aber das raff ich nicht 😕 😕 😕
    Was isn das für ne Aufgabe bitte?

    Also Du hast doch Dein array sockenanzahl auf 1000 initialisiert. Wenn Du jetzt prüfen willst, wievielen Du davon nen Wert zugewiesen hast, mußt Du das über ne weitere Variable machen. Die Du dann immer hochzählst

    Wenn allerdings die Sockenanzahl immer eins mehr is als es Haken gibt,dann kannst Du Dir das auch schenken...



  • ok , mein fehler...

    Es werden von ober Nüsse in den kamin geworfen. Im Kamin sind Haken. Die Nüsse treffen von oben genau auf den ersten haken und können dann mit einer Wahrscheinlichkeit von 50% entweder nach links oder nach rechts fallen. Darunter sind wieder Haken, auf welche die nüsse erneut treffen. Auch hier besteht die Wahescheinlichkeit von 50% nach links oder rechts zu fallen. Schließlich fallen die nüsse in die unten aufgestellten Socken. Wo sind die meisten nüsse und wie verteilen sich diese auf die Socken?

    1. Es gibt x Socken und x-1 haken im Kamin.
    2. An jedem Haken ist die Wahrscheinlichkeit 50/50
    3. Verwenden sie die funktion rand()
    4. Verwenden sie ein array von int's , in die sie die nüsse einsortieren.
    5. normieren sie die zahlen so, dass am ende der Positionszähler als index für das Array von Socken verwendet wird.


Anmelden zum Antworten