|
|
|
![]() |
|
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 09: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 11: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: 07:29.