Triangulo formado de asteriscos

03/04/2007

3

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar