Rettangolo di asterischi in Js

di il
3 risposte

Rettangolo di asterischi in Js

Salve, ho appena studiato i cicli for e mi hanno dato un esercizio in cui date 2 variabili base ed altezza devo stampare un rettangolo di asterischi. Io ora ho scritto la parte che dovrebbe stampare la base, quando funzionerà aggiungerò il secondo ciclo per l'altezza:

Var base =prompt("inserisci base");
Var h =prompt("inserisci altezza");
Var ast =""; (per stampare gli ast. Senza coeff.)
Var num; (che utilizzo nel for)
For(num=1; num <= base; num++){
ast = ast +"*";
Document.write (ast + "<br/>");
}

Quando lo faccio partire mi viene fuori solo il numero x della base con un solo asterisco
(es. 5*).

Se qualcuno mi potesse aiutare gliene sarei molto grato. Grazie in anticipo

3 Risposte

  • Re: Rettangolo di asterischi in Js

    Per come è scritto ora il codice: ad ogni iterazione del ciclo for fa due istruzioni: (1) appendi un asterisco ad ast e (2) stampi il valore di ast <br>.

    Il problema è nel secondo punto (document.write (ast + "<br/>");): non vuoi farlo ad ogni iterazione. Infatti questo crea una nuova riga ad ogni iterazione della base: vuoi farlo alla fine del ciclo che crea la base.
  • Re: Rettangolo di asterischi in Js

    spocchio ha scritto:


    Per come è scritto ora il codice: ad ogni iterazione del ciclo for fa due istruzioni: (1) appendi un asterisco ad ast e (2) stampi il valore di ast <br>.

    Il problema è nel secondo punto (document.write (ast + "<br/>");): non vuoi farlo ad ogni iterazione. Infatti questo crea una nuova riga ad ogni iterazione della base: vuoi farlo alla fine del ciclo che crea la base.
    Quindi dovrei fare solo documenti.write(ast) senza br?
  • Re: Rettangolo di asterischi in Js

    elecim91 ha scritto:


    Quindi dovrei fare solo documenti.write(ast) senza br?
    Questo è ancora problematico, proviamo ad eseguire mentalmente l'algoritmo:

    Prima iterazione (num=0): avresti che ast vale "*", e docuiment.write(ast) scriverebbe un schermo il suo primo asterisco. Fin qui tutto bene!
    Seconda iterazione (num=1): arriva il problema: l'istruzione ast = ast+"*" aggiunge un asterisco ad ast, e quindi ast adesso contiene due asterischi (ast vale "**"), e poi se fai documenti.write(ast) allora stampi a schermo due nuovi asterischi. Quindi in totale alla seconda iterazione ne hai stampati tre!
    Terza iterazione (num=2): ast vale "***" e se lo stampi a schermo questi tre asterischi si aggiungono agli altri tre, per un totale di sei.
    Alla fine: invece che stampare un numero di asterischi pari alla base, ad ogni iterazione stampi anche quelli precedenti.

    Io ti propongo due soluzioni:
    soluzione 1: dimenticati della variabile ast. Ad ogni iterazione fai document.write("*"); e dopo il loop aggungi l'a-capo con document.write('<br/>').
    soluzione 2: maniteni la variabile ast che "accumula" gli asterischi durante il loop, ma il suo contenuto lo stampi solo DOPO aver terminato il loop con documenti.write(ast+'<br/>')
Devi accedere o registrarti per scrivere nel forum
3 risposte