Ciclo While

di il
11 risposte

Ciclo While

Ciao a tutti,
volevo far comparire in verticale una scritta come nell'esempio(parallelepipedo), e ho scritto il seguente codice.
mi aspettavo che venisse creata stile tabella la scritta in verticale, e che la iniziasse con la posizione 0 (cioè p) per poi incrementarsi. L'istruzione dovrebbe terminare il suo ciclo una volta che il $contaparole è arrivato a 15 (quindi la "o" finale). Sto cercando di imparare quindi vi chiedo scusa, ma dove sto sbagliando? mi da l'errore di maximum execution time come se ripetesse il ciclo all'infinito. Ovviamente nel browser non vedo un bel niente.

<table>
<?php
$parola="parallelepipedo";
$contaparole=0;

while ($contaparole<=15);
{
echo "<tr><td>$parola[$contaparole]</td></tr> <br />";
$contaparole++
}
echo "fine";
?>
</table>

11 Risposte

  • Re: Ciclo While

    Pad86 ha scritto:


    Ciao a tutti,
    volevo far comparire in verticale una scritta come nell'esempio(parallelepipedo), e ho scritto il seguente codice.
    mi aspettavo che venisse creata stile tabella la scritta in verticale, e che la iniziasse con la posizione 0 (cioè p) per poi incrementarsi. L'istruzione dovrebbe terminare il suo ciclo una volta che il $contaparole è arrivato a 15 (quindi la "o" finale). Sto cercando di imparare quindi vi chiedo scusa, ma dove sto sbagliando? mi da l'errore di maximum execution time come se ripetesse il ciclo all'infinito. Ovviamente nel browser non vedo un bel niente.

    <table>
    <?php
    $parola="parallelepipedo";
    $contaparole=0;

    while ($contaparole<=15);
    {
    echo "<tr><td>$parola[$contaparole]</td></tr> <br />";
    $contaparole++
    }
    echo "fine";
    ?>
    </table>
    C'è un punto e virgola al while che non ci dovrebbe essere.
  • Re: Ciclo While

    Grazie, non lo avevo notato, l'ho tolto e ho corretto anche il $contaparole al limite di 14 lettere visto che parte da 0.
    Ma adesso mi da questo errore

    Parse error: syntax error, unexpected '}'

    ma la parentesi ci vuole per chiudere, o sbaglio?
  • Re: Ciclo While

    Se il codice è sempre quello di sopra ci manca il punto e virgola a $contaparole++, altrimenti rimetti il codice.
  • Re: Ciclo While

    Ottimo ,
    adesso funziona, inoltre ho fatto un paio di modifiche, innanzitutto ho messo "fine" in un altro blocco <?php> altrimenti me lo scriveva all'inizio, e siccome lasciava anche 14 "a capo" ho eliminato il br / perché era inutile in questo caso, essendo una tabella, il codice corretto per chi è interessato è il seguente:
    <?php
    $parola="parallelepipedo";
    $contaparole=0;
    while ($contaparole<=14)
    {
    echo "<tr><td>$parola[$contaparole]</td></tr>";
    $contaparole++;
    }
    ?>
    </table>
    <?php
    echo "fine";
    ?>

    grazie ancora per gli aiuti
  • Re: Ciclo While

    Con lo stesso esercizio di prima volevo contare le vocali in quella parola (Parallelepipedo) e quindi ho aggiunto un altro while in questo modo:
    la variabile aggiunta è $contavocali=0
    $parola="parallelepipedo";
    $contavocali=0;
    $contaparole=0;
    while ($contaparole<=14)
    {
    echo "<tr><td>$parola[$contaparole]</td></tr>";
    $contaparole++;
    }
    while ($contaparole<=14)
    {
    $contaparole++;
    if (STRPOS("aieou", strtoupper($parola[$contaparole])) !==false)
    $contavocali++;
    }
    echo $contavocali;
    ?>
    </table>
    in teoria dovrebbe in ogni caso incrementare il $contaparole,controllare nella posizione 0(poi1,2,ecc) se sono presenti le lettere in quella stringa, e se lo sono (diverso da false, quindi true) incrementare il $contavocali , e alla fine scrivere il risultato del $contavocali. probabilmente potevo non mettere 2 volte il while , ma a parte questo mi da come risultato sempre 0, , in ogni caso voi usando il whilw come avreste fatto?
  • Re: Ciclo While

    Ti basta solo il primo while. Mentre conti le lettere, controlli anche se quella lettera è una vocale con l'if. Se lo è aumenti il contatore contavocale altrimenti no. E' superfluo il secondo while.
  • Re: Ciclo While

    $parola="parallelepipedo";
    $contavocali=0;
    $contaparole=0;
    while ($contaparole<=14)
    {
    echo "<tr><td>$parola[$contaparole]</td></tr>";
    $contaparole++;
    if (strpos("aieou"($parola[$contaparole]) !==false)
    $contavocali++;
    }
    echo $contavocali;
    ?>
    </table>
    <?php
    echo "fine";
    ?>

    provando in questo modo mi da un errore sul $contavocali++:
    Parse error: syntax error, unexpected '$contavocali' (T_VARIABLE) in D:\XAMPP\htdocs\HTML5\esempicicli.php on line 21
    riesci ancora ad aiutarmi?
  • Re: Ciclo While

    Pad86 ha scritto:


    $parola="parallelepipedo";
    $contavocali=0;
    $contaparole=0;
    while ($contaparole<=14)
    {
    echo "<tr><td>$parola[$contaparole]</td></tr>";
    $contaparole++;
    if (strpos("aieou"($parola[$contaparole]) !==false)
    $contavocali++;
    }
    echo $contavocali;
    ?>
    </table>
    <?php
    echo "fine";
    ?>

    provando in questo modo mi da un errore sul $contavocali++:
    Parse error: syntax error, unexpected '$contavocali' (T_VARIABLE) in D:\XAMPP\htdocs\HTML5\esempicicli.php on line 21
    riesci ancora ad aiutarmi?
    prova con le cose semplici cambia l'if in $parola[$contaparole] == 'a' || $parola[$contaparole] == 'e' || $parola[$contaparole] == 'i' || $parola[$contaparole] == 'o' || $parola[$contaparole] == 'u'. Anche perchè strpos non si usa così e non ti serve per quello che stai facendo.
  • Re: Ciclo While

    $parola="parallelepipedo";
    $contavocali=0;
    $contaparole=0;
    while ($contaparole<=14)
    {
    echo "<tr><td>$parola[$contaparole]</td></tr>";
    $contaparole++;
    if ($parola[$contaparole] == 'a' || $parola[$contaparole] == 'e' || $parola[$contaparole] == 'i' || $parola[$contaparole] == 'o' || $parola[$contaparole] == 'u')
    $contavocali++;
    }
    echo $contavocali;

    non so come ringraziarti, grazie a te riesco a capire dove sbaglio ed a imparare cose nuove. In questo modo mi da il risultato corretto delle vocali, ma c'è un problema:
    Notice: Uninitialized string offset: 15 in D:\XAMPP\htdocs\HTML5\esempicicli.php on line 22
    mi escono 5 di questi messaggi riferiti alla riga dell' "if", stesso numero delle vocali utilizzate.questo può essere per il fatto che ho usato le parentesi quadre?ho rpovato con le graffe ma non può funzionare in questo modo. Sicuramente mi sfugge ancora qualcosa..
  • Re: Ciclo While

    Perchè nella variabile $parola durante il controllo vai oltre l'indice consentito. Devi ricordarti che in un array gli indici vanno da 0 a n-1 e quindi nel tuo caso vai all'indice numero 15. Ma la cosa sbagliata è che aumenti contaparole prima del controllo. Contaparole devi aggiornarlo alla fine del while.
  • Re: Ciclo While

    Grande
    ho messo il contaparole sotto il contavocali, si è risolto tutto.
    adesso ho capito i miei errori,Grazie mille.
Devi accedere o registrarti per scrivere nel forum
11 risposte