PDA

View Full Version : [C++]Visualizzare un quadrato con gli asterischi


rnuzzo
03-10-2008, 18:55
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;
}

gugoXX
03-10-2008, 19:26
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<<" ";
}

rnuzzo
03-10-2008, 19:37
il libro che sto studiando mi obbliga a risolvere gli esercizi con le "tecniche finora usate".Il for fa parte del 5 capitolo.

cionci
03-10-2008, 20:13
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;
}

rnuzzo
04-10-2008, 10:01
Grazie dei consigli!:)

rnuzzo
04-10-2008, 13:49
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

rnuzzo
04-10-2008, 17:13
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