rnuzzo
06-01-2009, 09:56
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 "
//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;
}
La seconda versione invece richiede di combinare il codice delle quattro figure in un unico programma che le visualizzi tutte insieme.
Ecco come ho iniziato:
//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;
}
Ovviamente non visualizza quello che dovrebbe perciò chiedo una mano a voi! ;D
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 :-\
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 "
//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;
}
La seconda versione invece richiede di combinare il codice delle quattro figure in un unico programma che le visualizzi tutte insieme.
Ecco come ho iniziato:
//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;
}
Ovviamente non visualizza quello che dovrebbe perciò chiedo una mano a voi! ;D
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 :-\