Printf imprimir caracteres. ( C ) [RESOLVIDO]

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

Pietro Caselani
PietroPC

(usa Ubuntu)

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!


  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

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]

Helder
HelderC

(usa Ubuntu)

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

Qual a sua dificuldade com o printf?


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

Perfil removido
removido

(usa Nenhuma)

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]

Perfil removido
removido

(usa Nenhuma)

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

Pietro Caselani
PietroPC

(usa Ubuntu)

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]

Perfil removido
removido

(usa Nenhuma)

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.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts