Permutation ohne beachtung der reihenfolge + rechnung??



  • Hallo evt kann mir einer bei einen Problem helfen wo ich schon seid exakt 3 tage rumbrüte

    das problem ist das ich ein array mit x belibigen zahlen habe zb {1,2,3,4}

    nun brauche ich eine funktion wo ich die anzahl der gruppe angebe und es dann in folgender form ausrechnet

    zb mit 1 gruppe : 1+2+3+4
    zb mit 2 gruppen: 1*2+1*3+1*4+2*3+2*4+3*4
    zb mit 3 gruppen: 1*2*3+1*2*4+1*3*4+2*3*4
    zb mit 4 gruppen: 1*2*3*4

    das wäre jetzt alle möglichkeiten für ein array mit 4 zahlen nun aber wenn ich zb 6 oder 8 zahlen im array habe gibt es ja noch höhere gruppen und er soll eben alles auch noch ausrechnen lassen

    bisher habe ich

    double Permute(double ar[],int gruppe,int start,int end)
    {
       int count = sizeof(ar);
       double tmp = 0.0;
       if(gruppe!=1)
       {
          if(start==0)
          {          
             for(int i=start;i<(count-gruppe+1);i++)
                tmp += ar[i]*Permute(ar,--gruppe,1,(count-gruppe+1));
          }else{
             for(int i=start;i<end;i++)
                return ar[i]*Permute(ar,--gruppe,i+1,end+1);
          }      
       }else{
          return ar[start];
       }
       return tmp;
    }
    

    aber irgendwie klappt es nicht oder ich habe ne denklücke kann mir bitte einer die funktion machen ich bin echt schon am verzweifeln

    danke und kuss Ganjaaa



  • wenn du permutationen brauchst kansnt du die stl benutzen

    #include <algorithm>
    
    int main()
    {
        int arr[] = {1,2,3,4,5);
        std::next_permutation(arr, arr+5); // iteratoren werden verlangt für die funktion
        std::prev_permutation(arr, arr+5);
    }
    

    so meien ich war das ungefähr, guck mal in der c++ reference



  • ahhh cool die funktion kannte ich noch nicht

    nur ist das mit beachtung der reihenfolge also es könnte 123 aber auch 321 entstehen und das soll es ja nicht

    //Edit
    also ich brauche es um eine funktion zu schreiben die mir aus vorher eingegebene null stellen eine polynom formel zu schreiben mit n-grades:
    x²+ax+b (bsp 2-grades)

    die ausgangsformel ist ja (x-NS1)(x-NS2)... (NS = Nullstelle) und wenn man das ausmultipliziert kommt man auf permutationen

    evt kennt ja auch einer eine lösung die sowas nicht braucht xD



  • ja kenne ich zufällig auch...

    du musst den grad es polynoms kennen und kannst dann mit grad+1 gegebenen punkten grad+1 lineare gleichungssysteme aufstellen und die lösen

    wenn du die lösung programmieren willst kannst mal bei wikipedia unter gauß'scher eleminierungsalgorithmus nachschauen (oder so ähnlich 😉 :D)


Anmelden zum Antworten