Pular para o conteúdo

Printf imprimir caracteres. ( C ) [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Printf imprimir caracteres. ( C ) [RESOLVIDO]

Enviado em 10/06/2009 - 23:56h

To aprendendo C faz quase um mês, e to com dificuldades na criação de um programa. A função do programa é a seguinte: Tu digitar 3 nomes e suas respecrivas idades e o retornar os nomes em ordem de nascimento. Mas eu to com problemas no comando printf.
Por favor, olhem o código:

#include <stdio.h>

main()

{

char nome1,nome2,nome3;

int id1,id2,id3;



printf("Insira o nome do primeiro irmão: ");

scanf("%s",&nome1);

printf("Insira sua idade: ");

scanf("%d",&id1);

printf("Insira o nome do segundo irmão: ");

scanf("%s",&nome2);

printf("Insira sua idade: ");

scanf("%d",&id2);

printf("Insira o nome do terceiro irmão: ");

scanf("%s",&nome3);

printf("Insira sua idade: ");

scanf("%d",&id3);



if(id1>id2&&id1>id3&&id2>id3)

{

printf("Em ordem de nascimento: %s, %s, %s",nome3,nome2,nome1);

}

else

{

if(id1>id2&&id1>id3&&id3>id2)

{

printf("Em ordem de nascimento: %s, %s, %s",nome2,nome3,nome1);

}

else

{

if(id2>id1&&id1>id3&&id2>id3)

{

printf("Em ordem de nascimento: %s, %s, %s",nome3,nome1,nome2);

}

else

{

if(id2>id3&&id2>id1&&id3>id1)

{

printf("Em ordem de nascimento: %s, %s, %s",nome1,nome3,nome2);

}

else

{

if(id3>id2&&id3>id1&&id2>id1)

{

printf("Em ordem de nascimento: %s, %s, %s",nome1,nome2,nome3);

}

else

{

if(id3>id1&&id3>id2&&id1>id2)

{

printf("Em ordem de nascimento: %s, %s, %s",nome2,nome1,nome3);

}

}}}}}

return 0;

}

Alguem pode ajudar a imprimir os 3 nomes em ordem de nascimento? Obrigado desde ja!

Responder tópico

2. Re: Printf imprimir caracteres. ( C ) [RESOLVIDO]

Melhor resposta

Enviado em 16/06/2009 - 16:05h

Bom, aqui consegui com esse código.

int main (int argc, char *argv[])
{
char nome1[100],nome2[100],nome3[100];
int id1,id2,id3;

printf("Insira o nome do primeiro irmão: ");
scanf("%s",&nome1);

printf("Insira sua idade: ");
scanf("%d",&id1);

printf("Insira o nome do segundo irmão: ");
scanf("%s",&nome2);

printf("Insira sua idade: ");
scanf("%d",&id2);

printf("Insira o nome do terceiro irmão: ");
scanf("%s",&nome3);

printf("Insira sua idade: ");
scanf("%d",&id3);

if(id1>id2&&id2>id3)
printf("Em ordem de nascimento: %s, %s, %s",nome1,nome2,nome3);

else
if(id1>id3&&id3>id2)
printf("Em ordem de nascimento: %s, %s, %s",nome1,nome3,nome2);

else
if(id2>id1&&id1>id3)
printf("Em ordem de nascimento: %s, %s, %s",nome2,nome1,nome3);

else
if(id2>id3&&id3>id1)
printf("Em ordem de nascimento: %s, %s, %s",nome2,nome3,nome1);

else
if(id3>id2&&id2>id1)
printf("Em ordem de nascimento: %s, %s, %s",nome3,nome2,nome1);

else
if(id3>id1&&id1>id2)
printf("Em ordem de nascimento: %s, %s, %s",nome3,nome1,nome2);

return 0;
}

Compilado no terminal:

$ gcc main.c

Executado também no terminal com o executável gerado:

./a.out

Imprimiu os nomes em ordem de nascimento. Espero ter ajudado.

3. Re: Printf imprimir caracteres. ( C ) [RESOLVIDO]

Enviado em 16/06/2009 - 06:53h

Qual a sua dificuldade com o printf?

4. Re: Printf imprimir caracteres. ( C ) [RESOLVIDO]

Enviado em 16/06/2009 - 10:44h

Pelo que sei, em C não existe string, então para guardar, por exemplo em nome, é preciso criar um vetor do tipo char (characters) para armazenar o nome inteiro. Seguindo essa linha de raciocínio, uma vez armazenada o nome no vetor do tipo char, para imprimir o mesmo é preciso uma estrutura de repetição que vai ler e imprimir cada posição do vetor.

Como não estou familiarizado com C, apenas com C#, não posso ajudar mais. Quando vi seu código, estranhei armazenar nomes em variáveis do tipo char, então pesquisei e descobri essa de que em C não tem string e tudo mais. Portanto, para imprimir os nomes no seu código, você vai ter que descobrir como criar vetores do tipo char e como funciona estruturas de repetições.

Agora é com você vélinho, pesquisa ai, e só por curiosidade, se conseguir posta o código ai depois.

5. Re: Printf imprimir caracteres. ( C ) [RESOLVIDO]

Enviado em 16/06/2009 - 13:26h

Cara, como você ta compilando isso? O problema é que o printf ta esperando um char e você está enviando como parâmetros as idades que estão em int.

app.c:43: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
app.c:43: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘int’
app.c:43: warning: format ‘%s’ expects type ‘char *’, but argument 4 has type ‘int’
app.c:55: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
app.c:55: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘int’
app.c:55: warning: format ‘%s’ expects type ‘char *’, but argument 4 has type ‘int’
app.c:67: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
app.c:67: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘int’
app.c:67: warning: format ‘%s’ expects type ‘char *’, but argument 4 has type ‘int’
app.c:79: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
app.c:79: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘int’
app.c:79: warning: format ‘%s’ expects type ‘char *’, but argument 4 has type ‘int’
app.c:91: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
app.c:91: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘int’
app.c:91: warning: format ‘%s’ expects type ‘char *’, but argument 4 has type ‘int’
app.c:103: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
app.c:103: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘int’
app.c:103: warning: format ‘%s’ expects type ‘char *’, but argument 4 has type ‘int’

6. wdmatheus

Enviado em 17/06/2009 - 20:14h

Kra era bem isso o que eu precisava!!
so nao entendi pq q você nao abriu { nos "ifs" e "elses", mas era bem isso que eu procurava!
muito obrigado!

7. Re: Printf imprimir caracteres. ( C ) [RESOLVIDO]

Enviado em 17/06/2009 - 23:58h

Quando o if, o else if, o for, etc, possui apenas uma instrução, ou seja, uma linha de código, não é necessário abrir e fechar chaves, no caso de seu código, era isso o que ocorria. A única instrução subordinada nos ifs e elses ifs é imprimir os nomes em determinada seqüencia. Caso houvesse mais de uma instrução, as chaves seriam obrigatórias.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder