Ir ao conteúdo
  • Cadastre-se
The_Oicle

RESOLVIDO Laço de repetição - Pinheiro em C

Recommended Posts

Pessoal, já tentei varias vezes e não consigo fazer um pinheiro com laço de repetição.

               X
             XXX
          XXXXX
        XXXXXXX
      XXXXXXXXX
    XXXXXXXXXXX
  XXXXXXXXXXXXX
XXXXXXXXXXXXXXX
               XX
               XX
             XXXX

 

Tentei cortar o pinheiro ao meio e fazer uma parte dela.

Postarei o código e o resultado logo abaixo;

#include<stdio.h>int main(){    int i,b;    char a = "x";        for(i = 0;i<=11;i++){            b = i % 2;                if(b == 0){                printf("\n");            }         printf("%c",a);        }}

$$

$$

$$

$$

$$

$$

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahaha. Legal.

 

Você vai precisar de 2 laços de repetição. O primeiro escreverá na linha. O segundo escreverá na coluna.

Eu posso usar esses 2 vetores pra fazer somente a parte de cima da árvore. A base do triângulo usa 15 X e da base até a ponta são 8 posições.

Então nossos vetores linha e coluna terão 8 e 15 posições, respectivamente.

 

Agora temos que entender como são escritas as linhas. Na primeira linha, o X é impresso na posição 8. Na segunda linha, é escrito na posição 7, 8 e 9. Na terceira linha, é escrito nas posições 5, 6, 7, 8, 9 e 10.

 

Sobre as colunas, contando de baixo pra cima, a primeira linha pode ser a linha 8. Isso vai ajudar na hora de construir o programa, pois na linha 8, vai começar na posição 8 da linha, na linha 7, vai começar no 7, e assim por diante. Fica fácil pra comparar linha e coluna.

 

Pra começar, ficaria assim:

#include <stdio.h>#include <stdlib.h>main(){    int i,j,k, somax=1;    for(i = 8; i >= 1; i--){ //conta linha      for(j = 1; j <= 15; j++){ // conta caracteres X e espaço            if(j == i){                 for(k = 1; k <= somax; k++) // verifica quantos X vai precisar colocar                       printf("X");                 somax += 2; // a quantidade de X soma mais 2 a cada linha            }            else                printf(" ");      }      printf("\n");    }    system("Pause");}

Falta só fazer a base. 

Compartilhar este post


Link para o post
Compartilhar em outros sites


#include <stdio.h>

int main(void) {

int linhas_topo=8;

int max_marcas;

int espacos;

int i,j;

for(i=1, max_marcas=1; i<=linhas_topo; i++, max_marcas+=2) {

espacos = linhas_topo-i;

for(j=1; j<=espacos; j++) printf(" ");

for(j=1; j<=max_marcas; j++) printf("X");

puts("");

}

// Tronco

int meio = (2*linhas_topo-1)/2;

espacos = meio-1;

int linhas_tronco = 2;

for(i=1; i<=linhas_tronco; i++) {

for(j=1; j<=espacos; j++) printf(" ");

printf("XX\n");

}

espacos = meio - 2;

for(i=1;i<=espacos;i++) printf(" ");

printf("XXXX\n");

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola

primeiro, quando for declarar uma variável como char, utilize aspas simples ' ', e não aspas duplas " ",

 

em relação ao código, tente o seguinte 

 

 

 

#include <stdio.h>

int main()
{
char a = 'x';
int linhas,
caracters,
espacos,
count;
 
caracters = 1;
espacos = 8;
 
printf("\n\n\n");
 
//parte de cima
for(linhas = 0; espacos > 0;linhas++)
{
for(count = 0; count <= espacos; count++)
{
printf(" ");
}
 
for(count = 0; count < caracters; count++)
{
printf("%c",a);
}
espacos--;
caracters+=2;
printf("\n");
}
//parte de baixo
espacos = 8;
for(linhas = 0; linhas<2;linhas++)
{
for(count = 0; count <= espacos;count++)
{
printf(" ");
}
printf("%c\n",a);
}
for(count = 0; count<espacos; count++)
{
printf(" ");
}
for(count = 0; count<3;count++)
{
printf("%c",a);
}
printf("\n\n\n");
return 0;
}
 

 

espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu copiei esses códigos para estudar no meu code blocks e está dando um erro de permissão. 

 

cannot open output file c:user\desktop\meu_pc\pinheiro.exe

 

não sei como resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom,

pelo que percebi, este é um erro que acontece bastante no code::blocks, normalmente vai embora sozinho quando se reinicia o projeto ou ate mesmo quando você aperta F9 para executar o programa, eu não uso o code::blocks e não sei uma forma concreta para acabar com o problema, mas você pode tentar isso que falei acima, pode dar certo, mas  com certeza o problema voltará em algum momento 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×