algorithmus



  • Hallo,

    ich habe Probleme bei einem kleinen Algorithmus. Es geht um Pausezeiten, ist ist die eigentliche Fahrtzeit gegeben und dazu sollen nach folgender Bed. Zeiten addiert werden:
    Nach 4,5 h -> 1h Ruhe, dann nach 9h -> 11h Pause usw. werden die Zeiten zur Fahrtdauer aufaddiert.

    Wenn man z.B. 19h fährt hat man 24h Pause
    4,5 h -> 1h Pause
    9,0 h -> 11h Ruhe
    13,5 h -> 1h Pause
    18h -> 11h Ruhe

    als erste Version habe ich es für max 4 x Pause programmiert

    maxlauf=4;
    lauf=0;
    while (lauf <= maxlauf)
    {
       lauf++;
       switch (lauf)
       {
        case 1:
         if (dauer > 270) dauer = dauer + 60;
    
         break;
        case 2:
         if (dauer > 540) dauer = dauer + 660;
         break;
        case 3:
        if (dauer > 810) dauer = dauer + 60;
    
        break;
        case 4:
         if (dauer > 1080) dauer = dauer + 660;
         break;
    }
    

    Das möchte ich jetzt variabel machen. Je nach Höhe der Fahrtdauer, soll die Anzahl der Durchgänge bestimmt werden und entschieden werden, ob Pause oder Ruhezeit ist:

    int  dauer = 850; 
      int lauf, maxlauf, lpause_max=270, lruhe_max = 540, pause = 60, ruhe = 660, stand = 0, ges_pause = 0;
    
      maxlauf=dauer/lpause_max;
      lauf=0;
      while ((lauf <= maxlauf)) 
      {
       lauf++;
       //Prüfung ob Pause oder Ruhe und dauer entspr um pause oder ruhe addieren.
       // Wie mache ich das?, s.u. ist ein Versuch komme aber nicht weiter 
       // if(stand ==0)
        //{
            //stand == pause;
            //dauer = dauer +pause;
        //}
       // else
       // {
       //  stand = stand +pause;
       //  if (stand/ruhe>0)
       //     {
       //        dauer = dauer + ruhe;
       //        stand = stand +ruhe;
       //     }
       //     else dauer = dauer + pause;
       // }
    
     }
    

    Kann mir bitte jemand bei dem Ansatz weiterhelfen?

    vielen Dank schon mal..



  • nicht [C O D E] sondern [ C P P]



  • Ich wäre dafür Beträge die einen längern COde beinhalten und keine Tags verwenden gleich zu löschen... irgendwie nervts....



  • Gustl schrieb:

    Ich wäre dafür Beträge die einen längern COde beinhalten und keine Tags verwenden gleich zu löschen... irgendwie nervts....

    ++++



  • Es gibt halt nicht in jedem Forum cpp-Tags...
    Und er hat auch code-tags gesetzt aber scheinbar auch BBCode deaktiviert...
    Ich unterstell ihm keine bewusste Schlampigkeit.

    Zum Thema:
    Findest du das direkte Arbeiten mit den Studen nicht etwas aufwändig? Merk dir doch einfachg die Anzahl der 4,5-stündigen Abschnitte.
    Und dann dynamisch die Stunden zusammenrechnen, z.B.

    int semiSteps = m_steps / 2;
    int lastStep = m_steps % 2;
    double hoursOnTheRoad = m_steps * 4.5; // die gefahrenen Stunden
    hoursOnTheRoad += semiSteps * 1;    // die ersten 4,5 einer 9 Stunden-Rallye
    hoursOnTheRoad += semiSteps * 11;   // die zweiten 4,5 einer 9 Stunden-Rallye
    hoursOnTheRoad += lastStep * 1;     // Falls nochmal eine 4,5h angefangen wurde
    hoursOnTheRoad += m_counter;        // m_counter zählt von 0 bis 4,5. Da wird dann auf 0 gesetzt und m_steps um 1 inkrementiert.
    

    Das wäre mein Ansatz.


Anmelden zum Antworten