Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nayara Oliveira

Triangulo isosceles com base impar

Recommended Posts

Olá..

Estou fazendo uma programa em c, que imprime um triangulo isosceles com base impar (digitada pelo usuario). Ele deve ser dessa forma:


∗ ∗ ∗
∗ ∗ ∗ ∗ ∗
∗ ∗ ∗ ∗ ∗ ∗ ∗

....

 

Porém, so estou conseguindo fazer assim:


∗ ∗
∗ ∗ ∗
∗ ∗ ∗ ∗

∗ ∗ ∗ ∗ ∗

...

Estou fazendo com for, tentei colocar um if dentro do 3º for, que imprime o *, mas saiu assim;


∗ ∗
∗ ∗
∗ ∗ ∗

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem postar o código não dá pra ajudar... poderíamos dar a solução, mas aí você não ia aprender.

 

Sugestão: tente imprimir só um espaço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

è que deu um erro aqui, acabei postando duas vezes o mesmo topico, mas esse é o codigo:

 

for(a=1; a<=tam; ++a)
{
for(branco=1; branco<=tam-a;branco++ )
{
printf(" ");
}
for(n=0; n<=a; ++n)
{
if(n%2!=0)
printf(" * ");
}

printf("\n");
}

Gostaria de saber como faço para sair so os impares.

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos por passos. Primeiro é necessario saber qual será o comprimento da base de um triangulo dada a altura n:

1. *

2. ***

3. ****

 

a1 = 1;

a2 = 3;

a3 = 5;

...

an = 2n - 1;

 

Depois devemos obter o numero necessario de espaços para centralizar o triangulo:

e = (ah - an) / 2

onde: ah é o comprimento da base do triangulo, e an é o comprimento da base atual que será desenhada.

 

Tendo estes conceitos em mente podemos escrever o algoritmo:

#include <stdio.h>

int
main (int argc, char** argv)
{
    int h = 25, p = 1;
    
    h = (2 * h) - 1;
    
    while(p < h)
    {
        int x = (h - p) / 2;
        
        while(x-- > 0)
            putc(' ', stdout);
        
        x = p;
        
        while(x-- > 0)
            putc('*', stdout);
        putc('\n', stdout);
        p += 2;
    }
    return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Mateus, entendi o que você quis dizer, e tentei mudar o meu codigo, mas ainda não consegui fazer o que ta sendo pedido, porque esse programa tem que ser feito com laços encaixados e ainda não aprendi esses codigos com "putc e stdout".

Tem como você poderia me mostrar o que ta faltando?

Obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

putc(char, FILE) é o mesmo que fprintf(FILE, "%c", char), que é o mesmo que:

printf("%c", char);

É só substituir...

 

Exemplo:

/* Os códigos abaixo são equivalentes (em funcionalidade): */
putc('a', stdout);
fprintf(stdout, "%c", 'a');
printf("%c", 'a');

"stdout" significa "Standard Output", ou "saída padrão" em português. Então, quando uma função pede uma stream e você passa "stdout"como argumento, o texto vai ser escrito na saída padrão, igual o printf(), que, em casos normais, é o console/terminal/linha de comando.

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.