Triangulo formado de asteriscos

03/04/2007

2

Eae galera...
  
   *
  ***
 *****
*******

Estou com um probleminha ki....

etou tentando montar um programa q imprima um triangulo
composto por " * "´s, em que a base do triangulo seja um número digitado pelo
usuário... Isso estou tentando fazer de forma recursiva, naum tenho certeza se esta recursivo mesmo, mas cheguei neste resultado:


#include<iostream.h>
include<conio.h>

void aste(int n)
{
    if(n<=1)//*inclue n&meros negativos
     cout<<"*""\n";
    else
     {
       cout<<" ";
       aste(n-2);
for(int i=0;i<n;i++)
    {
    cout<<"*";
     }
 cout<<"\n";

       for(int e=1;e<n;e++)
 cout<<" ";
      }

}
void main()
{
 int n;
 char quit=´s´;
  while(quit==´s´)
    {
      clrscr();
      cout<<" Digite a base da piramide " ;
      cin>> n ;
      cout<< "a piramede ‚ essa:\n\n";
      aste(n);
      cout<< "\n\n fazer de novo?(s/n):  ";
      cin>>quit;

   }
   while(quit!= ´n´&& quit !=´s´)
     {
      cout<< "\n\nTente de novo(s/n) ";
      cin >> quit;
if(quit==´s´)
 {
   clrscr();
   main();
 }
     }
}

estou usando o TURBO c++ como compilador e estou com problemas na hora de apresentar os espaços certos de cada linha do triangulo...
se alguem for executa-lo, utilize numeros autos como 40, ou 30 para observar o que acontece com o triagulo.


esta acontecendo algo do tipo:

      * //A primeira linha parece estar no lugar certo.
***
  *****
    *******
      *********
         ***********//E assim por diante...dependendo da base digitada.

desde já eo agradeço...

abraços.
[/code]


Responder

Posts

05/04/2007

Rodc

Tá me devendo uma heim!!!
E vê se melhora a identação do seu código que ele tá muito ilegível.
#include<iostream.h>
include<conio.h> 

void aste(int qtdEstrelas, int n)
{
    // Coloca os espaços
    for (int x=0; x<n/2; x++)
        cout<<" ";

    // Coloca as estrelas
    for (int x=0; x<qtdEstrelas; x++)
        cout<<"*";

    cout<<"\n";
    if (n > 1)
    {
        // Caso seja par, adiciona apenas mais uma estrela
        if (qtdEstrelas == 1 && (n ¬ 2) == 0)
            aste(qtdEstrelas + 1, n-2);
        else
            aste(qtdEstrelas + 2, n-2);
    }
}

void main() 
{ 
    int n;
    char quit=´s´;
    while (quit == ´s´)
    {
        clrscr();
        cout<<" Digite a base da piramide " ;
        cin>> n ;
        cout<< "a piramede eh essa:\n\n";
        aste(1, n);
        cout<< "\n\n fazer de novo?(s/n):  ";
        cin>>quit;
    }
    while (quit != ´n´ && quit != ´s´)
    {
        cout<< "\n\nTente de novo(s/n) ";
        cin >> quit;
        if (quit == ´s´)
        {
            clrscr();
        }
    }
}



Responder

05/04/2007

Relfi

cara mto bom...ele só deu um errinho aki, qto a declaração do x que faz o espaço, mais só substituí por outra sigla e concluí, vc realmente eh phoda kara...
valew mesmo...e pode deixar...voh me lembrar da dica da identificação do código...
vlw mesmo kara...


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira