Denkaufgabe :D

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Denkaufgabe :D

    So mal ne denkaufgabe für euch weil ich hab ne blokade
    Es geht um einen arbeitsplan.

    es gibt 4 variablen

    - Var 1: Start der aktuellen Stunde
    - Var 2: Ende der aktuellen Stunde
    - Var 3: Start Arbeitsbeginn
    - Var 4: Ende Arbeitsbeginn

    bedeutet anhand beispiel:

    timeline 1 = |------ 00:00 Uhr bis 01:00 Uhr --------|
    timeline 2 = |------ 00:00 Uhr bis 03:30 Uhr --------|

    timeline 1 ist die variable 1 bis 2
    timeline 2 ist die variable 3 bis 4

    nun will ich berechnen:

    Stunde 1 - ist er da?
    Stunde 2 - ist er da?
    Stunde 3 - ist er da?
    Stunde 4 - ist er da?

    und so weiter. ich habe also zu prüfen, liegt timeline 1 (ob verschoben oder direkt) auf der timeline 2. Wenn also nur eine Sekunde auf der timeline 1 liegen würde, wäre die bedingung erfüllt.

    Mein prob iss das ich ne denkblokade für die formel der berechnung habe ...

    Thx 4 help
    Signatur-Text ...

  • #2
    Mal ganz banal würde ich ne Schleife vorschlagen à la:
    PHP-Code:
    $var1 15;
    $var2 17;
    $var3 13;
    $var4 15;

    $ist_in_der_zeit false;
    for(
    $var1$var1 <= $var2$var1++) {
          if(
    $var1 >= $var3 && $var1 <= $var4) {
               
    $ist_in_der_zeit true;
               break;
          }
    }

    if(
    $ist_in_der_zeit) {
        echo 
    'ja';
    }
    else {
        echo 
    'nein';

    *blubb*

    Kommentar


    • #3
      Original geschrieben von deathcakeman
      Mal ganz banal würde ich ne Schleife vorschlagen à la:
      PHP-Code:
      ...
            if(
      $var1 >= $var3 && $var1 <= $var4) {
      ... 
      Wenn var 1 größer gleich start ...
      was ist wenn var 1 zwar größer ist, var 3 aber kleiner ?

      OffTopic:
      Überschneidungen müssen mit beachtet werden - nicht nur genaue Zeiten die in timeline 1 fallen!
      Zuletzt geändert von dani_o; 18.09.2008, 12:39.
      Signatur-Text ...

      Kommentar


      • #4
        Ich verstehe nicht ganz ... ?
        $var1 ist ja nicht mehr statisch, sondern wird in der Schleife immer um einen Wert erhöht.
        Folglich wird in der Schleife die Gesamte Zeitspanne zwischen $var1 und $var2 durchlaufen.

        Und in If-Konstrukt wird der Erfolgswert zurückgegeben wenn einer der Werte innerhalb der Zeitspanne von $var3 und $var4 liegt.

        Probier den Code doch einfach mal ;-)

        EDIT:
        Vielleicht zur Verständnissverbesserung:

        PHP-Code:
        [...]
        for(
        $var1$var1 <= $var2$var1++) {
              
        $zeitpunkt $var1// $zeitpunkt == alle Werte zw. $var1 und $var2
              
        if($zeitpunkt >= $var3 && $zeitpunkt<= $var4) {
                   
        $ist_in_der_zeit true//Einer der Zeitpunkte liegt innherhalb der vorgegebenen Timeline
                   
        break;
              }
        }
        [...] 
        Zuletzt geändert von deathcakeman; 18.09.2008, 12:49.
        *blubb*

        Kommentar


        • #5
          kk hast recht - die denkblokade weitet sich aus auf s lesen xD *lol*
          Signatur-Text ...

          Kommentar


          • #6
            hab s ja verstanden xD - aber geht arg auf die serverleistung bei über 1200 einträgen - das muss doch einfacher gehen ohne schleife - nur wie? the muss mans doch mit ner einfachen formel berechnen können -ich komm nur net drauf ...
            Signatur-Text ...

            Kommentar


            • #7
              ginge..., denk ich:


              PHP-Code:
              $var1 15//t1 start
              $var2 17//t1 ende
              $var3 13//t2 start
              $var4 15//t2 ende

              if(($var1 >= $var3 && $var1 <= $var4
               OR (
              $var2 >= $var3 && $var2 <= $var4)
               OR (
              $var1 >= $var3 && $var2 <= $var4)
               OR (
              $var1 <= $var3 && $var2 >= $var4)) 
                 echo 
              "ueberschneidung"
              Ungetestet, aber müsste alle fälle drin haben..

              mfg

              Kommentar


              • #8
                Vorauss.: var1<var2 und var3<var4

                - prüfen, ob timeline 1 komplett in timeline 2: var1>=var3 und var2<=var4

                - prüfen, ob timeline 1 innerhalb timeline 2 startet: var1>=var3 und var1<=var4

                - prüfen, ob timeline 1 innerhalb timeline 2 endet: var2>=var3 und var2<=var4


                du musst keine Schleife bauen , wozu denn auch
                Zuletzt geändert von asp2php; 18.09.2008, 14:13.

                Kommentar


                • #9
                  ey super - danke ihr 2 das funzt jetz sogar schnell xD ...
                  ergebnis: http://tsound.xoju.de
                  Siehe die obere Anzeige der Juke - bzw live - Anzeige

                  OffTopic:
                  ich muss mehr schlafen - das programmieren bringt einen um xD
                  Signatur-Text ...

                  Kommentar


                  • #10
                    @asp2php:

                    Bei dir fehlt noch der 4. Fall, dass timeline 2 innerhalb timeline 1 liegt.. oder?

                    mfg

                    Kommentar


                    • #11
                      hehe hatte ich gemerkt und mit reingenommen
                      Signatur-Text ...

                      Kommentar

                      Lädt...
                      X