Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di pishta
    Registrato dal
    May 2006
    Messaggi
    138

    for che esegue anche l'ultimo caso

    salve a tutti sto cercando di risolvere un caso strano. Ho due cicli for annidati

    codice:
    for($i=$min0; $i<=$max0; $i=$i+$quantum0){           
    for($j=$min1; $j<=$max1; $j=$j+$quantum1){                                          
    if($i*$qt0->$c_br + $j*$qt1->$c_br - $K <=  $K*$err_c){                 
    echo  $i.' * '.$qt0->$c_br.' + '.$j.' * '.$qt1->$c_br.' - '.$K.' <=  '.$K.' * '.$err_c.'
    ';                                     
    $n++;                 
    }             
    }
    Al caso limite superiore non si verifica mai $i= $max0 e $j=$max1 ma i valori di $i e $j sono sempre minori. io però voglio forzare ad eseguire anche il caso in cui sia $i=max0 e $j=max1.
    come faccio a fare in modo che venga stampata anche la diseguaglianza corrispondente ai valori di $max0 e $max1 ??

    grazie.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Sbaglio o quello è codice PHP?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di pishta
    Registrato dal
    May 2006
    Messaggi
    138
    si è php ma io lo intendo come un problema di programmazione generale

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da pishta
    si è php ma io lo intendo come un problema di programmazione generale
    Generalmente parlando, la forma standard del ciclo for è questa:

    codice:
    for(inizializzazione; condizione_di_iterazione; espressione_di_incremento) {
       codice
    }
    Quindi, "codice" verrà eseguito finchè "condizione_di_iterazione" sarà vera e ad ogni cilco verrà eseguita l'"espressione_di_incremento".

    Dal codice che hai postato tu, dovrebbe già accadere ciò che richiedi, posto che l'incremento dalla penultima iterazione all'ultima, non faccia già decadere la condizione di iterazione.

    Esempio:
    codice:
    for($i=0; $i<=10; $i++) {
    }
    Questo codice eseguirà 11 iterazioni: a partire da $i=0 fino a $i=10. Quando $i varrà 11, il ciclo non verrà eseguito.

    Diversamente, questo:
    codice:
    for($i=0; $i<=10; $i+=3) {
    }
    Che eseguirà solo 4 cicli:
    $i = 0
    $i = 3
    $i = 6
    $i = 9

    All'ultimo passaggio, $i varrà 12, quindi non verrà eseguito.

    Se ciò che chiedi è di poter eseguire anche l'ultimo passaggio ($i = 10), allora no. Non è possibile con alcun linguaggio di programmazione che abbia un costrutto for standard (altrimenti addio coerenza).

    Quello che puoi fare è un test, dopo il ciclo, per verificare lo stato della variabile $i e, se ritenuto corretto, effettuare altre operazioni.

    Sposto, comunque, nel forum PHP perchè, non conoscendo approfonditamente tale linguaggio, magari esiste qualcosa di più (dubito, ma non si sa mai).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di pishta
    Registrato dal
    May 2006
    Messaggi
    138
    Grazie mille, sei stato molto esaustivo.

    Il mio è il secondo caso che descrivi:

    codice:
    for($i=0; $i<=10; $i+=3) { }
    Che eseguirà solo 4 cicli:
    $i = 0
    $i = 3
    $i = 6
    $i = 9
    ora ci sono casi in cui l'incremento mi porterà esattamente ad avere $i = 10 e in quel caso verrà eseguito all'interno del for. In altri casi, l'ultimo incremento del $i, sarà maggiore e quindi dovrò forzare al caso $i=10.
    Come mi hai giustamente consigliato proverò a controllare che $i>10 al termine del ciclo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.