Stundenberechnung



  • Ich habe noch eine Frage und hoffe ihr könnt mir helfen, denn ich habe mir da heute den Kopf drüber zerbrochen, ich versuch es mal zu erklären:

    also ich habe einen StringGrid in dem ist ein Kalender und man muss über Edit-Felder seine Stundenanzahl, die man gesamt gearbeitet hat und die Stundenanzahl, die man an einem bestimmten Projekt gearbeitet hat. Die Stundenverteilung erfolgt per Zufall. das Problem liegt jetzt darin, dass wenn man eine hohe Gesamtstundenanzahl und eine hohe Zuwendungsfähige Stundenanzahl hat, dass dann die Verteilung nicht stimmt, denn wenn man dann die nichtzuwendungsfähigen Stunden errechnet kommen negative Zahlen heraus. Also dürften die zuwendungsfähigen Stunden an den einzelnen Tagen nicht höher als die Gesamtstundenanzahl an dem Tag sein.

    Hier mein Code:

    //Stunden auf Tag verteilen
    int *verteilung = new int [tage];
    for(int i=0; i< tage; ++i)
    {
    verteilung[i]=0;
    }
    for(int i=0; i<zuwend_h;++i)
    {
    ++verteilung[random(tage)];
    }
    //Verteilte Stunden im StringGrid ablegen
    int tag=0;
    for(int i=0; i<StringGrid1->ColCount-1; ++i)
    {
    AnsiString Feld = StringGrid1->Cells[i+1][2];
    if((isNumber(Feld)==true)||(Feld=="XXX")) continue;
    StringGrid1->Cells[i+1][2] = verteilung[tag++];
    }
    

    Kann mir jemand helfen das so umzuschreiben das die zuwend_h nicht mehr größer als die gesamtstunden an dem gleichen Tag sind???
    }



  • Hast du dir deinen Beitrag nach dem Posten nochmal durchgelesen? Glaubst du wirklich, dass sich jemand einen Reim darauf machen kann?
    Und wenn wir schon dabei sind: wie wär's mit einer vernünftigen Code-Formatierung (Einrückungen)?
    Wenn du jemanden um Hilfe bittest solltest du es ihm eigentlich möglichst einfach machen, nicht möglichst schwer.



  • Ok du hast Recht war verwirrend geschrieben: hier nochmal Code:

    //Stunden auf Tag verteilen
    int *verteilung = new int [tage];
    
    for(int i=0; i< tage; ++i)
    {
       verteilung[i]=0;
    }
    
    for(int i=0; i<zuwend_h;++i)
    {
      ++verteilung[random(tage)];
    }
    
    //Verteilte Stunden im StringGrid ablegen
    int tag=0;
    
    for(int i=0; i<StringGrid1->ColCount-1; ++i)
    {
      AnsiString Feld = StringGrid1->Cells[i+1][2];
      if((isNumber(Feld)==true)||(Feld=="XXX")) continue;
      StringGrid1->Cells[i+1][2] = verteilung[tag++];
    }
    

    So besser?
    Und nochmal das Problem: ich bekomme einen StringGrid mit einem Monat, in dem ich zu arbeitende Stunden eingeben kann und Gesamtstunden. Der StringGrid besteht aus 6 Zeilen. In der ersten stehen dann die zuwendungsfähigen (zuwend_h) , in der zweiten die nicht zuwendungsfähigen und in der 6. Zeile die Gesamtstunden.

    Bei dem Quellcode verteile ich die errechneten zuwendungsfähigen Stunden auf den Monat. Doch dabei kommt es nun zu dem Problem, dass die zuwendungsfähigen Stunden manchmal größer sind, als die in der 6.Zeile Gesamtstunden, welche ich schon zuvor auf den Monat verteile. Und wenn ich dann Gesamtstunden - zuwendungsfähige rechne, kommt ja ganz logisch für die nichzuwendungsfähigen Stunden etwas negatives heraus. Was falsch ist.

    Also wollte ich wissen, wie man bei der Verteilung der zuwend_h überprüfen kann ob die verteilte Stunden (zuwend_h) größer sind als die Gesamtstunden. Wenn das so ist, soll er eine Neuverteilung machen! Besser erklärt???



  • also ehrlich gesagt hab ich es noch nicht ganz verstanden aber eine frage:

    wenn die zuwendungsfähigen stunden nie grösser sein dürfen als die gesamtstunden, wieso erstellst du diese erst und dann die gesamtstunden, wobei anscheind die zahklen nichts miteinander zu tun haben oder aufeinander aufbauen?

    aber vielleicht solltest du erstmal erklären:

    1. was sind zuwendungsfähige stunden
    2. wie hängen die zahlen zusammen

    zur kontrolle würde ich mir vorher immer die summen bilden und diese mit der max. anzahl der gesamtstunden vergleichen. wenn die = oder > ist dann neuverteilung. aber ich habe es eh nciht verstanden also wird meine antowrt nicht viel nützen.



  • Ich gebe für meinen Monat Gesamtstunden an, die ich gearbeitet habe. Dazu gebe ich noch an wieviel Stunden ich an einem Projekt gearbeitet habe und das sind die zuwendungsfähigen Stunden!

    Ich muss also die Gesamtstunden auf meinen Monat verteilen und die zuwendungsfähigen Stunden. Diese dürfen allerdings an keinem Tag größer sein als die Gesamtstunden!

    PS: bei der derzeitigen Berechnung kommt dann immer Stack Overflow, wenn die Anzahl der zuwend_h an einem Tag größer ist als die Gesamtstundenanzahl an dem Tag


Anmelden zum Antworten