Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    CONTARE UNA SERIE POSITIVA

    Ciao ragazzi,

    supponiamo che un array contega questi valori:

    Codice PHP:
    $a = array(vvvnnpvpnvvvv); 
    Vorrei conteggiare il numero massimo consecutivo di volte che la lettera "v" compare nell'array...

    Insomma per essere chiari da quell'array vorrei avere come risultato 4.

    Qualcuno puo' instradarmi?

    Grazie infinite

    Paolo

  2. #2
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    codice:
    max_locale_numero_v = 0
    max_globale_numero_v = 0
    
    Per tutti i valori dell'array
        se valore corrente = v allora 
            max_locale_numero_v++
            se (max_locale_numero_v > max_globale_numero_v) allora max_globale_numero_v  = max_locale_numero_v
        altrimenti max_locale_numero_v = 0
    Il risultato è ovviamente in max_globale_numero_v.

    [.:: JaguarXF ::.]
    __________________

  3. #3
    Utente di HTML.it L'avatar di PaoDJ
    Registrato dal
    Oct 2001
    Messaggi
    273
    $chiavi=array_keys($array,'VALORE DA CERCARE');
    $numero_valori=count($chiavi);

    Per maggiori info:
    http://php.net/array_keys

  4. #4
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Originariamente inviato da PaoDJ
    $chiavi=array_keys($array,'VALORE DA CERCARE');
    $numero_valori=count($chiavi);
    Forse manca qualcosina....

    [.:: JaguarXF ::.]
    __________________

  5. #5
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    ...però così è troppo semplice... dal titolo pensavo volessi un algoritmo che calcolasse la funzione cui tende una sommatoria infinita a termini positivi!!


    [.:: JaguarXF ::.]
    __________________

  6. #6
    occhio che la funzione array_keys (con il parametro del valore da cercare) restituisce il numero di volte (usando ovviamente il count) che quel valore compare complessivamente, non CONSECUTIVAMENTE, come mi sembra abbia chiesto BEAST. La strada giusta penso sia seguire l'esempio di mark2x
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  7. #7
    grazie a tutti!!!

    allora,

    purtroppo sono niubbo quindi non ho capito cosa mark2 mi volesse dire......

    Purtroppo oggi nn posso dedicarmi allo script, lo faro' domani.

    Cmq si, voglio calcoare la consecutivita' di un valore all'interno di un array.

    Grazie ancora

  8. #8
    beh praticamente c'era solo da tradurre il codice che ti è stato scritto in php, per stavolta te l'ho scritto commentato, magari studialo così la prossima volta capisci cosa fare

    Codice PHP:
    <?php
    // dichiaro l'array su cui poi applico la funzione
    $myArr=array("a","a","a","a","a","s","d","d","d","a","a","d","d","d","d","s");

    /* scrivo il risultato della funzione, passando come parametri
     * 1: l'array da scorrere
     * 2: il valore che voglio conteggiare
    */
    echo countValues($myArr,"a");

    function 
    countValues(&$array,$value){
        
    // dichiaro le due variabili e le inizializzo a 0
        
    $local=0;
        
    $global=0;
        
        
    // controllo che l'array e la variabile siano entrambi valorizzati
        
    if (sizeof($array)==|| $value=="")    return false;
        
        
    /* il foreach scorre l'array restituiendo l'accoppiata 
         * $chiave (che io ho chiamato $k) => $valore (che io ho chiamato $v)
        */
        
    foreach($array as $k=>$v){
            
    /* ora controllo se il valore dell'array è uguale a quello
             * che dobbiamo cercare, incrementiamo di 1 la variabile $local
            */
            
    if ($v==$value){
                
    $local+=1;
                
    /* ora invece controlliamo se $local risulta maggiore del vecchio $global
                 * significa che questa sequenza è più lunga della precedente, quindi
                 * mi salvo il valore corrente nella mia $global
                */
                
    if ($local>$global)    $global=$local;
            }else    
    $local=0;
        }
        
        
    /* finito il controllo e il ciclo restituisco una frase
         * in cui scrivo sia il valore da cercare che il numero
         * massimo di occorrenze consecutive per quel medesimo valore
        */
        
    return "massimo numero di ripetizioni consecutive per il valore {$value}{$global}";
    }
    ?>

    spero di esser stato abbastanza chiaro
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  9. #9
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    manuel, posso chiederti una cosa? Perchè passi l'array per indirizzo? E' solo una mia curiosità.

    [.:: JaguarXF ::.]
    __________________

  10. #10
    Originariamente inviato da mark2x
    manuel, posso chiederti una cosa? Perchè passi l'array per indirizzo? E' solo una mia curiosità.
    guarda, a dire il vero gli array li ho sempre passati così da quando in 3 superiore (quando si studiava il c e il c++ ) il profe mi aveva spiegato che era meglio, a livello di memoria, passare un puntatore all'array stesso piuttosto che l'intero array. Ora magari, essendo passati 6 lunghi anni non mi sono ricordato nemmeno il vero motivo, però mi sembra fosse proprio a livello di memoria utilizzata...ora diciamo che più un'abitudine che altro.
    Dici che sarebbe meglio non farlo? te lo chiedo proprio perché magari il mio ragionamento ora come ora è completamente sbagliato...





    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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.