Anzeige:
Ergebnis 1 bis 4 von 4

Thema: kleines Schfeifen Problem

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177

    kleines Schfeifen Problem

    Hi!

    Ich habe momentan ein kleines Schleifenproblem und komme nicht auf die Idee es zu lösen, deshalb wolte ich Euch um Eure Unterstützug bitten.

    Ich habe mehrere geschachtelte Schleifen:
    Code:
    for(int i=0; i<sizeof(wert_a); i++){
          for(int j=0; j<sizeof(wert_a[i]); j++){
                str += wert_a[i][j];
                for(int m=0; m<sizeof(wert_x); m++){
                      for(int n=0; n<sizeof(wert_x[m]); n++){
                            str += wert_a[m][n];
                       }
                  }
           }
    }
    ...
    Das funktioniert auf eigentlich ganz gu, wenn ich mich nicht verschrieven habe.

    Mein Problem dabei ist, wie kann ich dabei einen Bereich auslassen z.B.:
    Code:
    if(isset(wert_a)){
               for(int i=0; i<sizeof(wert_a); i++){
                     for(int j=0; j<sizeof(wert_a[i]); j++){
                            str += wert_a[i][j];
    }
    
                              for(int m=0; m<sizeof(wert_x); m++){
                                    for(int n=0; n<sizeof(wert_x[m]); n++){
                                           str += wert_a[m][n];
                                     }
                               }
                     }
               }
    ...
    Mir fällt da leider zur Zeit keine Idee ein.
    Geändert von dml (04-11-2010 um 12:02 Uhr)

  2. #2
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Mir ist nicht ganz klar was du genau haben willst, aber wenn du nicht gesetzte value_a's ganz ignorieren willst, kannst du folgendes machen:
    Code:
    for(int i=0; isset(wert_a) && i<sizeof(wert_a); i++){
          for(int j=0; j<sizeof(wert_a[i]); j++){
                str += wert_a[i][j];
                for(int m=0; m<sizeof(wert_x); m++){
                      for(int n=0; n<sizeof(wert_x[m]); n++){
                            str += wert_a[m][n];
                       }
                  }
           }
    }
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Wenn ich deinen zweiten Codeblock richtig verstehe, willst du die inneren beiden Schleifen nur ausführen, wenn isset() nicht wahr ist.

    Code:
    for(int i=0; i<sizeof(wert_a); i++){
          for(int j=0; j<sizeof(wert_a[i]); j++){
                str += wert_a[i][j];
    
                if (!isset(wert_a)){
                  for(int m=0; m<sizeof(wert_x); m++){
                      for(int n=0; n<sizeof(wert_x[m]); n++){
                            str += wert_a[m][n];
                       }
                   }
                }
    
           }
    }
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Mein Fehler:
    In Schleife 2 hätte es:
    Code:
    str += wert_x[m][n];
    heissen müssen.
    Hinzu gibt es davon 1...n Schleifen also
    Code:
    for(int i=0; i<sizeof(wert_a); i++){
          for(int j=0; j<sizeof(wert_a[i]); j++){
                str += wert_a[i][j];
    
                for(int m=0; m<sizeof(wert_x); m++){
                      for(int n=0; n<sizeof(wert_x[m]); n++){
                            str += wert_x[m][n];
    
                            for(int o=0; o<sizeof(wert_y); o++){
                                  for(int p=0; p<sizeof(wert_y[o]); p++){
                                         str += wert_y[o][p];
                                  }
                            }
    
                       }
                  }
    
           }
    }
    ...
    Versuche es jetzt mit:

    Code:
    	function loop($str,$n){
    
    		while(empty($ary[$n])){
    			$n++;
    		}
    
    		for($i=0; $i<$this->sicherheit; $i++){
    			// echo "i[$j]=".$i[$j]."\n";
    			for($j=0; $j<sizeof($ary[$n]); $j++){
    				// echo "\ti[$j]=".$i[$j]."\n";
    
    				switch($n){
    					case 1:
    						$str .=" --dport ".$ary[$n][$i][$j];
    						break;
    					case 2:
    						$str .=" --src ".$ary[$n][$i][$j];
    						break;
    					case 3:
    						$str .=" --dst ".$ary[$n][$i][$j];
    						break;
    					case 4:
    						$str .=" -j ".$ary[$n][$i][$j];
    						break;
    				}
    
    
    				loop($str,$n)
    
    			}
    		}
    	}
    Noch ein bisschen .... , glaube aber der Weg ist gut.
    Und vielen Dank für Eure Hilfe!

    Das angehängte Skript ist auch noch nicht fertig, deshalb wirkt es jetzt noch sehr konfuse. Wenn es fertig ist stelle ich es hier hinein bei interesse.
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Leider ist mir noch ein Problem dazwischen gekommen.
    Ich habe den Algorithmus soweit fertig, doch möchte ihn jetzt in c++ umwandeln.
    Einfach besser mit einem Pointer das Array zu durchlaufen. Doch leider besteht mein Array
    in php aus mehreren unterschiedlichen Arrays:
    Code:
    /*
    Array
    (
        [0] => 2
        [1] => filter
        [2] => FORWARD
        [3] => tcp
        [4] => Array
            (
                [0] => Array
                    (
                        [0] => 80
                        [1] => 443
                    )
    
            )
    
        [5] =>
        [6] => Array
            (
                [0] => Array
                    (
                        [0] => 192.168.0.0/24
                    )
    
            )
    
        [7] => zulassen
    )
    */
    Wie kann ich dieses Problem jetzt lösen sodas ich das Array in einer dynamischen Schleife:
    Code:
    for(int i=0; i<sizeof(wert[n]); i++){
    durchlaufen kann?.
    Vielen Dank für Eure Hilfe!

    Der Beste Ansatz den ich finden kann ist ein 3. dimensionaler Vector, doch zum Beispiel [0] => 2
    ist doch nur eindimensional. struct hilft mir leider auch nicht, da ich die Elemente immer angeben muss mystuct.wert_a.

    Das Ziel des Projektes ist dabei, auf Ereignisse dynamisch reagieren zu können. Falls es interessiert.
    Geändert von dml (12-11-2010 um 16:29 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •