|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Cavallino (LE)
Messaggi: 335
|
[C++]Visualizzare 4 triangoli in console
Ciao a tutti,sto cercando d'imparare il c++ studiando un corso Deitel per neofiti
Alla fine di ogni capitolo ci sono svariati esercizi per testare le conoscenze acquisite ma certi esercizi sono vere e proprie torture mentali.Ecco l'esercizio: Scrivete un programma che visualizzi queste figure una sotto l'altra utilizzando i cicli for nidificati * ********** ********** * ** ********* ********* ** *** ******** ******** *** **** ******* ******* **** ***** ****** ****** ***** ****** ***** ***** ****** ******* **** **** ******* ******** *** *** ******** ********* ** ** ********* ********** * * ********** Il listato che segue è la prima versione dove ogni triangolo ha il suo primo e secondo " for " Codice:
//Esercizio 5.12
#include<iostream>
using std::cout;
using std::endl;
int main()
{
for ( int a = 10 ; a >= 1 ; a-- )
{
for ( int b = 10 ; b >= a ; b-- )
{
cout << "*";
}
cout << endl;
}
for (int a = 10 ; a >= 0 ; a--)
{
for (int c = 1 ; c <= a ; c++)
{
cout << "*";
}
cout << endl;
}
cout << endl;
for ( int a = 10 ; a >= 1 ; a-- )
{
for ( int d = 10 ; d >= 1 ; d-- )
{
if (d <= a)
cout << "*";
else
cout << " ";
}
cout << endl;
}
cout << endl;
for ( int a = 10 ; a >= 0 ; a-- )
{
for ( int e = 1 ; e <= 10 ; e++ )
{
if (e <= a)
cout << " ";
else
cout << "*";
}
cout << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Ecco come ho iniziato: Codice:
//Esercizio 5.12_a
#include<iostream>
using std::cout;
using std::endl;
int main()
{
for ( int a = 10, cont = 0 ; a >= 1 ; a--)
{
//Corpo principale
if (cont == 0 || cont == 2)
{
for ( int b = 10 ; b >= a ; b--)
{
if ( b >= a)
{
cout << "*";
}
}
}
else if (cont == 1 || cont == 3)
{
for ( int c = 0 ; c <= 10 , c >= a ; c++)
{
if (c < a)
{
if (c < a)
{
cout << "*";
}
}
else
{
continue;
}
}
}
cout << endl;
//setta a ad 11
if (a == 1 || cont == 4)
{
if (a == 1)
{
a = 11;
cont++;
}
else if (cont == 4)//Interrompe il primo for
{
break;
}
}
}
system("PAUSE");
return 0;
}
un grazie fin da adesso Credo che certi esercizi siano un po troppo difficili per menti poco allenate, almeno per chi è all'inizio come me :-\ |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il primo esercizio funziona...cerca di ragionare in modo diverso per il secondo. Utilizza solo due for e un if per specificare quando devi stampare uno spazio e non un *.
Lo spazio centrale rimane sempre lì, quindi è facile stampare lo spazio nella posizione corretta (inizia da quello) Nota che lo spazio si sposta su ogni riga di una posizione a destra (o a sinistra). |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Cavallino (LE)
Messaggi: 335
|
Scusami se non ho potuto rispondere.Problemi sulla linea...
2 for nidificati nel primo? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il primo esercizio va bene.
Nel secondo esercizio bastano due for nidificati e un if che seleziona i casi in cui stampare lo spazio al posto del *. Si tratta di fatto di ristrutturare tutto il codice. A volte mettere insieme parti di codice già fatto è più difficile di riscrivere il codice in un'ottica diversa. Ultima modifica di cionci : 07-01-2009 alle 10:27. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Cavallino (LE)
Messaggi: 335
|
ok mi mettero al lavoro anche se ora vedo tutto come un "asterisco"
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Cavallino (LE)
Messaggi: 335
|
Senza offesa nei tuoi confronti cionci
Nel senso che è circa una settimana che quest 'esercizio mi danna la vita!! Ultima modifica di rnuzzo : 07-01-2009 alle 12:59. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Stampa intanto un rettangolo di 25*10 asterischi. A questo punto ragiona: su una linea come puoi fare per stampare lo spazio centrale al posto di un asterisco ? E come puoi fare per stampare gli altri spazi ? Nota che c'è una relazione fra l'indice della riga stampata (il contatore del for esterno) e la posizione in cui vanno stampati gli spazi.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:20.




















