View Full Version : [C++]Visualizzare un quadrato con gli asterischi
Ciao a tutti,volevo chiedervi qualche suggerimento riguardo questo esercizio che mi chiede di scrivere un programma che inserendo un intero visualizzi il cui lato č formato dal numero di asterischi digitato.Io ho provato a scrivere questo codice ma ogni volta un lato č maggiore di un asterisco e secondo non riesco a visualizzare tutti i lati.(L'ultimo lato non si visualizza correttamente:
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
int lato; //Lato
int x = 0; //Contatore
int y = 0;
int z = 0;
int t = 0;
cout << "Inserisci un numero da 1 a 20: " ; //Chiede un numero tra 1 e 20
cin >> lato;//Input nella variabile
if (lato < 19)
while (x < lato)
{
while (y < lato)
{
while (z < lato)
{
cout << "*";
z++;
}
cout << "*\n";
y++;
}
cout <<"*";
x++;
}
return 0;
}
Non capisco come, essendo un quadrato, tu abbia bisogno di 3 cicli annidati.
Comunque ti consiglio di usare i cicli for per questa soluzione, risulta piu' leggibile.
yggdrasil
03-10-2008, 19:35
oltre ad usare i for come da consiglio...stai usando un metodo molto complicato per fare una cosa semplicissima
for(int i=0;i<n;i++)
{
cout<<endl;
for(int j=0;j<n;j++)
if(i==0 || i== n-1 || j==0 || j==n-1)
cout<<" *";
else
cout<<" ";
}
il libro che sto studiando mi obbliga a risolvere gli esercizi con le "tecniche finora usate".Il for fa parte del 5 capitolo.
il libro che sto studiando mi obbliga a risolvere gli esercizi con le "tecniche finora usate".Il for fa parte del 5 capitolo.
Non cambia il succo del problema, in quanto ogni for č sostituibile con in while ;)
||ElChE||88
03-10-2008, 20:17
while (x < lato)
{
while (y < lato)
{
if (y == 0 || y == lato - 1 || x == 0 || x == lato - 1)
cout << " *";
else
cout << " ";
y++;
}
x++;
y = 0;
cout << endl;
}
Ragazzi niente da fare.:muro: Ci sto provando da ieri sera qualcuno potrebbe spiegarmi passo passo l'algoritmo oppure fornirmi degli esercizi riguardanti il while?A proposito gli operatori logici non li ho ancora studiati percio non faranno parte del programma.Grazie
wizard_at
04-10-2008, 17:01
Ragazzi niente da fare.:muro: Ci sto provando da ieri sera qualcuno potrebbe spiegarmi passo passo l'algoritmo oppure fornirmi degli esercizi riguardanti il while?A proposito gli operatori logici non li ho ancora studiati percio non faranno parte del programma.Grazie
probabilmente non capisci perche' mentalmente non lo "vedi"
allora un quadrato sappiamo tutti come e' fatto.
per disegnarlo non dobbiamo altro che fare per la prima riga e l'ultima una striscia di asterischi e per qll in mezzo asterischi solo all'inizio o alla fine.
for(int i=0;i<n;i++)
{
cout<<endl;
for(int j=0;j<n;j++)
if(i==0 || i== n-1 || j==0 || j==n-1)
cout<<" *";
else
cout<<" ";
}
(codice di yggdrasil)
prendo questo perxhe' e' il piu' "corto/semplice
n e' la lunghezza del lato aumentata di uno(per comodita')
il primo ciclo for manda a capo ogni volta che si arriva a fine riga
il secondo ciclo invece prosegue nelle "colonne" del quadrato
if(i==0 || i== n-1 || j==0 || j==n-1)
cout<<" *";
else
cout<<" ";
questo e' il pezzo piu' "complesso.
detto il linguaggio umano e':
se i e' uguale a 0(cioe' sono nella prima riga) o i=n-1(lunghezza lato quindi sono nell'ultima riga) o j=0 (sono nella prima colonna) o j=n-1(sono nelultima colonna)
allora scrivi un asterisco
altrimenti metti uno spazio
spero di essere stato chiaro.
PS: il segno || vuol dire O.
vv ->v
vf ->v
fv ->v
ff ->f
Cercherņ di sperimentare qualcosa di mio.Vedro di capirci meglio prendendo come spunto le vostre spiegazioni.Grazie ancora!A volte temo di non essere portato:rolleyes:
wizard_at
04-10-2008, 19:28
Cercherņ di sperimentare qualcosa di mio.Vedro di capirci meglio prendendo come spunto le vostre spiegazioni.Grazie ancora!A volte temo di non essere portato:rolleyes:
se il C++ e' il tuo primo linguaggio buona fortuna.
il C++ non e' l'ideale per iniziare
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.