Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Ordine array

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2022
    Messaggi
    8

    Ordine array

    Buongiorno a tutti,
    avrei bisogno di una mano, ho cominciato da poco a studiare php e non mi è ben chiaro come svolgere un esercizio.
    In pratica devo creare un array, verificare se gli elementi sono in ordine crescente e stampare solo quelli in ordine.
    Ho creato il mio array di tot elementi, dove solo i primi 3 sono in ordine crescente, ho fatto un ciclo for per scorrerli tutti. Adesso mi sono persa, dovrei fare un if dove verificare che l'elemento precedente sia minore di quello successivo? non riesco a capire come impostarlo sintatticamente.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,685
    Ciao e benarrivata sul forum, si può risolvere in vari modi. Un if potrebbe anche andare ma per poterti aiutare meglio sarebbe opportuno vedere il codice che hai elaborato. Prova a postarlo e chiarire dove riscontri le difficoltà.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2022
    Messaggi
    9
    Annaphp, forse il tuo errore consiste nel cercare di risolvere l'esercizio con tentativi di programmazione.
    In prima battuta, non ha importanza il linguaggio da adoperare, che sia PHP o altro non vuol dire nulla.
    Per prima cosa, dovresti elaborare un algoritmo con carta e penna che permetta di risolvere logicamente il quesito.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2022
    Messaggi
    8
    Allora io inizialmente avevo svolto l'esercizio in questo modo:

    <?php
    $array=array(3,21,2,33,1,6,44,22,0,88);
    for($x = 0; $x < count($array); $x++) {
    for($y = 0; $y < count($array); $y++) {
    if($array[$x] < $array[$y]) {
    $temp = $array[$x];
    $array[$x] = $array[$y];
    $array[$y] = $temp;
    }
    }
    }
    print_r($array)
    ?>
    ma così facendo ho riordinato tutto l'array.
    Dunque sono partita da capo creando un array che avesse i primi elementi in ordine crescente e scombinando l'ordine dopo.

    <?php
    $numbers=array(90,91,92,7,77,0,2,1,22,6);
    for($i=0;$i<10;$i++);

    dopo aver creato l'array ho fatto un for per scorrerlo tutto... adesso vorrei impostare un if mediante il quale confrontare ogni elemento con quello successivo e fare in modo che se quello precedente è più piccolo del successivo lo deve stampare, altrimenti no.
    Purtroppo non risco a capire come farlo sintatticamente

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2022
    Messaggi
    9
    Ciao.
    Ti illustro cosa ho capito dalla tua spiegazione.
    Tu stai esaminando una lista di numeri:
    (3,21,2,33,1,6,44,22,0,88)
    e vorresti individuare quali sono gli elementi in ordine nativo crescente.
    Sarebbero questi:
    3, 21, 33, 44, 88
    E' esatto?
    Passando all'altro array:
    (90,91,92,7,77,0,2,1,22,6)
    i numeri che vorresti stampare secondo lo stesso principio sarebbero:
    (90, 91, 92).
    Corretto?
    Supponendo di aver capito bene, potresti approcciare in questo modo.
    codice:
    <?php
    $prec = null;
    $arr = array(3,21,2,33,1,6,44,22,0,88);
    foreach ($arr as $v) {
        if ($v >= $prec) {
            $prec = $v;
            echo $v;
            echo "<br>";        
        }   
    }
    ?>
    Ultima modifica di Scartoffia; 30-07-2022 a 17:13 Motivo: Formattazione codice

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2022
    Messaggi
    8
    Buongiorno, allora si il risultato che vorrei ottenere è la stampa dei primi 3 numeri in ordine. Innanzitutti ti ringrazio per la risposta, vorrei però chiederti se Potessi spiegarmi per favore i passaggi che hai compiuto, in modo da riuscire a rifare l'esercizio da sola.
    Inoltre, io non posso utilizzare "formulette" già fatte ma devo fare tutto a mano da sola

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2022
    Messaggi
    9
    Buongiorno Annaphp.

    Il tuo obiettivo di "riuscire da sola" a risolvere il problema è la cosa più importante e conferisce valore e maturità al tuo studio.
    Per questo nel mio primo post ti spronavo a trovare, senza l'utilizzo del computer, un procedimento valido in generale per risolvere il quesito.

    Ma veniamo ad una spiegazione dei passi che compongono il codice.

    Per decidere se devi stampare l'elemento corrente dell'array, devi chiederti se esso è >= al precedente.
    Se la risposta è affermativa allora, oltre a stamparlo, devi anche conservarlo in un'altra variabile ($prec) in modo da riutilizzarlo per il confronto successivo.

    Nell'esempio che ti ho fatto, inizialmente la variabile $v contiene il primo elemento dell'array, ossia $v=$arr[0], quindi il numero 3.
    Il confronto di $v con $prec (che inizialmente non ha un valore), restituisce vero. Di conseguenza $arr[0] viene stampato e $prec aggiornato con il numero 3.

    Al secondo passaggio, l'elemento successivo $v diventa $arr[1], ossia $v=21.
    Poiché adesso $v > $prec (infatti 21 > 3), si provvede a stampare $v e ad aggiornare $prec con il contenuto di $v, ossia 21.

    Al terzo passaggio, $v diventa 2 e poiché adesso $v < $prec (infatti, 2 < 21), si passa semplicemente al successivo elemento dell'array senza né stampare $v né aggiornare $prec.

    E così via fino all'ultimo elemento dell'array, all'interno del ciclo iterativo.

    Al riguardo, io preferisco utilizzare il costrutto foreach, ma tu puoi anche sostituirlo con for se ti è più semplice ed intuitivo il suo utilizzo.

    Buono studio.

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.