PDA

Visualizza la versione completa : [c++] programma che stampa asterischi?


mygametech
14-02-2014, 18:36
salve a tutti ragazzi, il seguente programma stampa asterischi:

void scrivi(int n, int k=0){if (k==n) return;
if (k <= n/2) {
for (int i=0; i<k; i++)
cout << ' ';
cout << '*' << endl;
}
else
{for (int j=0; j< n-k-1; j++)
cout << ' ';
cout << '*' << endl;
}
scrivi(n, k+1);
}

e li stampa in questo modo:


*
*
*
*
*

dove il numero degli asterischi è dato dalla variabile n (in questo caso 5), nel ciclo for viene dichiarata una nuova int che serve per vedere in quale posizione si trova il programma e stampare quindi un asterico o uno spazio. non ho però ben capito come realmente riesce a farlo, come si "orienta" per scrivere lo spazio o l'asterisco?

grazie delle risposte!

lovesemiramide
14-02-2014, 21:19
n rappresenta il numero di asterischi da stampare che corrisponde anche al numero di righe, mentre k corrisponde all'indice della riga che andremo a stampare.

Se k == n allora vuol dire che abbiamo terminato di stampare tutte le righe, mentre se k <= n/2 allora si trova nella metà alta delle righe altrimenti nella seconda. Nel primo caso dovrà stampare un numero di spazi pari al numero di riga corrente e poi l'asterisco, invece nel secondo dovrà stampare un numero di spazi non più pari al numero di riga, ma al totale delle righe meno la riga corrente meno 1 perché si parte da 0.

L'ultima riga è per far continuare l'algoritmo.

mygametech
14-02-2014, 22:14
n rappresenta il numero di asterischi da stampare che corrisponde anche al numero di righe, mentre k corrisponde all'indice della riga che andremo a stampare.

Se k == n allora vuol dire che abbiamo terminato di stampare tutte le righe, mentre se k <= n/2 allora si trova nella metà alta delle righe altrimenti nella seconda. Nel primo caso dovrà stampare un numero di spazi pari al numero di riga corrente e poi l'asterisco, invece nel secondo dovrà stampare un numero di spazi non più pari al numero di riga, ma al totale delle righe meno la riga corrente meno 1 perché si parte da 0.

L'ultima riga è per far continuare l'algoritmo.

si in effetti poi riguardando il codice ho capito tutto. grazie mille comunque!!!

Loading