|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Cavallino (LE)
Messaggi: 335
|
[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:
Codice:
#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;
}
Ultima modifica di rnuzzo : 03-10-2008 alle 19:21. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
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.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2008
Messaggi: 808
|
oltre ad usare i for come da consiglio...stai usando un metodo molto complicato per fare una cosa semplicissima
Codice:
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<<" ";
}
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Cavallino (LE)
Messaggi: 335
|
il libro che sto studiando mi obbliga a risolvere gli esercizi con le "tecniche finora usate".Il for fa parte del 5 capitolo.
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
Codice:
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;
}
Ultima modifica di ||ElChE||88 : 03-10-2008 alle 20:36. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Cavallino (LE)
Messaggi: 335
|
Grazie dei consigli!
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Cavallino (LE)
Messaggi: 335
|
Ragazzi niente da fare.
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jul 2006
Città: MILANO
Messaggi: 1645
|
Quote:
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. Codice:
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<<" ";
}
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 Codice:
if(i==0 || i== n-1 || j==0 || j==n-1)
cout<<" *";
else
cout<<" ";
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
__________________
xoooxoooxooox |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Cavallino (LE)
Messaggi: 335
|
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
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Jul 2006
Città: MILANO
Messaggi: 1645
|
Quote:
il C++ non e' l'ideale per iniziare
__________________
xoooxoooxooox |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:34.




















