Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

mrbean

Dúvida sobre ciclos

Mensagens Recomendadas

mrbean    0
mrbean

Boa Tarde,

Estou a fazer um programa que vai desenhar a letra T com altura, comprimento e caracter a ser definidos pelo utilizador.

void letrat(){
int a, comprimento, largura, construir; 
char c;

printf("Qual é o comprimento desejado? \n");
scanf("%i", &comprimento);
printf("Qual é a largura desejada? \n");
scanf("%i", &largura);
printf("Qual é o caracter desejado? \n");
scanf(" %c", &c);  //limpa o buffer do teclado com o espaço antes do %c
linhah(largura, c);
construir = largura/2;
for (a=1; a<=construir; a++){
	printf(" ");
}
for (a=1; a<comprimento; a++){ 
	putchar(c);
	putchar('\n');
}
}

No entanto no programa acima não estou a perceber como colocar a linha vertical que desenha o T centrada, por exemplo:

Qual é o comprimento desejado?

8

Qual é a largura desejada?

7

Qual é o caracter desejado?

g

ggggggg

      g

g

g

g

g

g

g

O resultado desejado seria:

ggggggg

      g

      g

      g

      g

      g

      g

      g

Obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
KTachyon    272
KTachyon

Com copy-paste do teu código:

        for (a=1; a<comprimento; a++){
                for (b=1; b<=construir; b++){
                        printf(" ");
                }
                putchar(c);
                putchar('\n');
        }

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
lomba    0
lomba

Poderá haver uma solução melhor!

faz um primeiro ciclo para a largura escrevendo o carácter

dp paz um ciclo que termine no comprimento com um ciclo com " " até atingir metade da largura e um printf com "c\n" dentro do 2º ciclo

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
KTachyon    272
KTachyon

@lomba Não percebi a tua sugestão. Tens um ciclo para o comprimento e um ciclo para metade da largura? Foi isso que eu representei.

Uma ideia diferente seria construir a linha uma vez e imprimir essa linha comprimento-1 vezes

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mrbean    0
mrbean

Muito Obrigado KTachyon, o excerto que publicas-te funcionou perfeitamente.

Ainda me sinto muito verde em c, no entanto vou continuar a estudar :(

Grande Abraço a todos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
lomba    0
lomba

@lomba Não percebi a tua sugestão. Tens um ciclo para o comprimento e um ciclo para metade da largura? Foi isso que eu representei.

Exacto foi isso que quis exprimir

Uma ideia diferente seria construir a linha uma vez e imprimir essa linha comprimento-1 vezes

Sim tens razão

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade