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

JoaoSkate

[Resolvido] Programa simples com ciclos for

Mensagens Recomendadas

JoaoSkate

Boas, ainda estou a começar a aprender a programar, estou a seguir o livro do Luis Damas , Lingugem C.

Estou aqui com uma dúvida no seguinte exercicio:

É pedido que se tenha como output uma meia árvore do tipo:

A
BB
CCC
DDDD
..............................etc

o que eu tentei foi:

#include <stdio.h>

int main()
{
   int i,j,n;
   int k = 65;

   printf("Introduza o numero de ramos: ");
   scanf("%d",&n);

   for (i=1 ; i <= n ; i++ , k--) {
       for (j=1; j <= i; j++) {
           printf("%c", (char) k);
           }
       putchar('\n');
       }

return 0;
}

onde k=65 representa a letra A, na tabela ASCII, no entanto no output estão a sair caracteres estranhos e nao as letras:

A
@@
???
>>>>
.......................etc

Editado por thoga31
Tags code + GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Sir Reng

Se acrescentares depois de " printf("%c", (char) k); " o " k++" já te vai começar a aparecer os caracteres. O "k++" serve para aumentar uma unidade ao valor do k, passando o k a ser 66.

(Eu também ando a aprender portanto o.o)

Ou seja, fica assim:

#include <stdio.h>
int main()
{
int i,j,n;
int k = 65;

printf("Introduza o numero de ramos: ");
scanf("%d",&n);

for (i=1 ; i <= n ; i++ , k--) {
for (j=1; j <= i; j++) {
printf("%c", (char) k);
k++;
}
putchar('\n');
}

return 0;
}
Agora, ainda não dá como tu queres, isso vais ter que ser tu a resolver, mas o problema de sair os caracteres estranhos já está resolvido :)
  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoSkate

Era um erro parvo. eu onde tenho k-- dentro do ciclo for deveria ter k++ poiis a partir de 65 para a frente é que aparecem as letras que quero

Bastou me alterar isso.

Obrigado

Editado por thoga31
Remoção de quote desnecessário

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Se acrescentares depois de " printf("%c", (char) k); " o " k++" já te vai começar a aparecer os caracteres. O "k++" serve para aumentar uma unidade ao valor do k, passando o k a ser 66.

parabéns por saber qual o problema, mas a resolução foi completamente ao lado

(Eu também ando a aprender portanto o.o)

força, vais ver que não custa nada


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Sir Reng

parabéns por saber qual o problema, mas a resolução foi completamente ao lado

força, vais ver que não custa nada

Eu não pus resolução, só pus lá onde ele tinha que meter o k++ :P

E tens razão, não custa nada, mas tem é que se praticar bastante :)

Editado por thoga31
Limpeza da formatação desnecessária (cor)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Eu não pus resolução, só pus lá onde ele tinha que meter o k++ :P

o problema é esse, é que a solução passava realmente pelo k++, mas o problema é que deste uma solução completamente errada (local onde ter o k++)


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Inacabado

O que o Happy quer dizer é que k++ tem que ficar no primeiro ciclo for.

for (i=1 ; i <= n ; i++ , k++)

Tem mais lógica e é mais simples de entender o porquê.

Porque além de incrementares os "ramos", incrementas tb o caracter que irás imprimir. Mas se deres a n um certo valor alto vão na mesma aparecer os caracters estranhos de que falavas. Consulta a tabela ASCII para veres os caracteres que irás imprimir ou mesmo o porquê dos caraceters estranhos que estavas a imprimir. Lembra-te a variável K estava a decrementar!

k--

Editado por Inacabado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Sir Reng

o problema é esse, é que a solução passava realmente pelo k++, mas o problema é que deste uma solução completamente errada (local onde ter o k++)

Ahhhh, realmente xD

Tens razão, sorry :P

Partilhar esta mensagem


Ligação 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 os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.