Erstellen eines c++ Programms dass variationen ohne wiederholungen berechnet


  • Mod

    evy schrieb:

    Sorry aber deine Antwort hilft mir gerade nicht groß weiter ,
    eine genaue bezeichung und erklärung meiner fehler wären toll.

    #include <cstdlib>  // Schlecht. Benutzt du nicht
    #include <iostream>
    
    using namespace std;
    
    int main()
                // Schlecht. Ungewöhnliche Leerzeilen
    {
    int zahln, zahlk, wert1, wert2;    // Sehr schlecht. Nichtssagende Namen. zahln und zahlk werden nirgendwo benutzt. wert1 und wert2 viel zu früh deklariert.
    cout << " Geben Sie eine Zahl für n ein" <<;   // Falsch. Auf << kann kein ; folgen
    cin >> eingabe1;  // Falsch. eingabe1 ist nicht deklariert.
    cout << " Geben Sie eine Zahl für k ein " <<;  // Falsch. Auf << kann kein ; folgen
    cin >< eingabe2;   // Falsch. Auf > kann kein < folgen. eingabe2 nicht deklariert
    
    nt fakultaet = 1, eingabe;  // Falsch. Datentyp nt exisitert nicht. Schlecht. Variable eingabe wird nirgends benutzt
    
    for (int i = eingabe1; i > 0; i--)
    
    fakultaet = fakultaet1 * i;   // Schlecht. *= benutzen um zu zeigen, was man will.
    
    wert1 =( eingabe1 * eingabe2);  // Falsch. Du brauchst für die Formel nirgends eingabe1 multipliziert mit eingabe2
    
    for (int i = wert1; i > 0; i--)
    
    fakultaet = fakultaet2 * i;  // Falsch. fakultaet2 nicht deklariert. Rechnung falsch.
    
    wert2 = (fakultatet1% fakultaet2)  // Falsch. Rechnung falsch
                                       // Falsch. Fehlendes Semikolon
    cout << "Das Ergebnis ist " << wert2 << endl;  // Schlecht. endl, wo '\n' gedacht ist.
    return 0;  // Schlecht. Nicht verstanden, welche Sonderregeln für main gelten.
               // Schlecht. Ungewöhnliche Leerzeilen
    }
    

    Verstehst du nun, warum Bashar dein Programm einen Trümmerhaufen genannt hat und dir nicht konkrete Fehler nennen konnte?



  • vielen vielen dank mit dieser hilfe kann ich arbeiten ,
    ich werde mich sofort dran setzen und deine anmerkungen umsetezen
    danke schön.


  • Mod

    evy schrieb:

    vielen vielen dank mit dieser hilfe kann ich arbeiten ,
    ich werde mich sofort dran setzen und deine anmerkungen umsetezen
    danke schön.

    Es ist frustrierend, wenn der TÜV ein Haus zur Notsprengung deklariert und der Hausbesitzer dies als Aufforderung versteht, die kaputten Glühbirnen zu wechseln.



  • Hier eine Variante für die Experten, die ganz ohne Rekursion und Multiplikation auskommt ...

    #include <iostream>
    #include <functional> // plus<>
    #include <numeric> // adjacent_difference
    #include <vector>
    
    template< typename T >
    T n_ueber_k( T n, T k )
    {
        using namespace std;
        vector< T > line;
        for( ; line.push_back( T(1) ), n > 0; --n )
            adjacent_difference( line.begin(), line.end(), line.begin(), plus< T >() );
        return line.at( k );
    }
    
    int main()
    {
        using namespace std;
        for( int n, k; cin >> n >> k; )
            cout << n << " ueber " << k << " = " << n_ueber_k( n, k ) << endl;
        return 0;
    }
    

    Gruß
    Werner



  • Gesucht ist nicht (nk)=n!(nk)!k!\binom{n}{k} = \frac{n!}{(n-k)!k!}, sondern n!(nk)!\frac{n!}{(n-k)!}. (In der Hoffnung, dass dein Code auch tatsächlich ersteres berechnet 😉 )



  • Bashar schrieb:

    Gesucht ist nicht (nk)=n!(nk)!k!\binom{n}{k} = \frac{n!}{(n-k)!k!}, sondern n!(nk)!\frac{n!}{(n-k)!}. (In der Hoffnung, dass dein Code auch tatsächlich ersteres berechnet 😉 )

    Bashar der Experte hat's gemerkt 👍 - mein Code berechnet (nk)=n!(nk)!k!\binom{n}{k} = \frac{n!}{(n-k)!k!}. Das wäre die Anzahl der Variationen ohne Wiederholung und ohne Beachtung der Reihenfolge.

    Gruß
    Werner



  • Werner: Nette Art, das Pascalsche Dreieck aufzubauen. Aber etwas rechenintensiv, wenn man nur an einem Eintrag interessiert ist 😉



  • Dieser Beitrag wurde gelöscht!


  • @maniqui Bitte in Zukunft mit neue Frage nix Du antworten auf Thread das ist alt sieben Jahre?? Besser neues Thema starten Du tust.



  • @Swordfish Das tut gut ! Danke für die Antwort! Ich wollte einfach das Forum nicht mit der gleiche Frage spammen. Hier trotzdem das neue Thema:
    https://www.c-plusplus.net/forum/topic/348772/c-code-umsetzung-für-mathe-formel-n-n-k-aufgabe-berechnung-variationen-ohne-wiederholungen


Anmelden zum Antworten