Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problemas com Scanf


Anderson G.

Pergunta

Galera olha eu com problemas no scanf novamente.

Desta vez são cinco scanf. O primeiro funciona legalzinho, a partir daí ele pula direto pro cálculo aí lasca tudo.

É um algorítimo para ler o ano de nascimento de duas pessoas e exibir o nome e a idade da pessoa mais velha.

Eu já tentei tanta coisa que já não consigo nem mais descrever a vocês .....

Façam mais essa gentileza pra eu galera .....

Valeu!!!!!

#include <stdio.h>
#include <conio.h>

main()
{
     int nasc1,nasc2,idade1,idade2;
     char nome1,nome2;
     int anoatual;

         printf ("\n Entre com o nome da primeira pessoa: ");
         scanf ("%c",&nome1);
         printf ("\n Entre com o nome da segunda pessoa: ");
         scanf ("%c",&nome2);
         printf ("\n Entre com o ano de nascimento da primeira pessoa: ");
         scanf ("%d",&nasc1);
         printf ("\n Entre com o ano de nascimento da segunda pessoa: ");
         scanf ("%d",&nasc2);
         printf ("\n Entre com o ano recorrente: ");
         scanf ("%d",&anoatual);

               idade1=anoatual-nasc1;
               idade2=anoatual-nasc2;

               if (idade1 > idade2)
{
         printf("\n A pessoa mais velha e:%c  ", nome1);
         printf("com %d anos: ", idade1);
}
               else
{
         printf("\n A pessoa mais velha e:%c  ", nome2);
         printf ("com %d anos: ", idade2);
}
getch();
}

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Não consegui usar o gets no lugar do scanf ... ele abre uma outra guia do stdio.h.

Deve ter que declarar alguma outra biblioteca que eu não sei qual ainda.

mas com SCANF funcionou normal ......

valeu mais uma vez!!!

Para ler strings você deve declarar um vetor de char e colocar %s no scanf e no printf:

char nome1[30], nome2[30];
...

scanf("%s", nome1);
...

printf("\n A pessoa mais velha e:%s  ", nome1);

Agora scanf não lê espaços entre palavras. Para isso use a função gets.

Abraço.

Não consegui usar o gets no lugar do scanf ... ele abre uma outra guia do stdio.h.

Deve ter que declarar alguma outra biblioteca que eu não sei qual ainda.

mas com SCANF funcionou normal ......

valeu mais uma vez!!!

Link para o comentário
Compartilhar em outros sites

  • 0
Não entendi o erro no gets, explique melhor. Foi um erro de compilação? Descreva a saida do compilador.

Posta o código de como você fez o gets.

Ronaldo ... primeiramente valeu pela força .... eu dei uma pesquisada e consegui usar o gets ... entretanto eu usei o fflush(stdin); e de acordo com alguns outros fóruns, isso é gambiarra pura ... e eu quero saber como eu resolvo isso sem ter gamb's ... para não começar aprendendo errado.

e outra coisa .... depois do if eu inseri algumas { .. } (chaves) .... e se eu tirá-las dá pau no else ... pra que serve essas chaves ????

Valeu mais uma vez Ronaldo!!!!

#include <stdio.h>
#include <stdlib.h>

main()
{
     int nasc1,nasc2,idade1,idade2,idade;
     char nome1[30],nome2[30];
     int anoatual;

         printf ("\n Entre com o nome da primeira pessoa: ");
         fflush(stdin);
         gets (nome1);
         printf ("\n Entre com o ano de nascimento da primeira pessoa: ");
         scanf ("%d",&nasc1);         
         printf ("\n Entre com o nome da segunda pessoa: ");
         fflush(stdin);
         gets (nome2);
         printf ("\n Entre com o ano de nascimento da segunda pessoa: ");
         scanf ("%d",&nasc2);
         printf ("\n Entre com o ano recorrente: ");
         scanf ("%d",&anoatual);

               idade1=anoatual-nasc1;
               idade2=anoatual-nasc2;

               if (idade1 > idade2)
{
         printf("\n A pessoa mais velha e: %s ", nome1); printf("com %d anos: \n\n", idade1);
}
               else
{         
         printf("\n A pessoa mais velha e: %s ", nome2); printf ("com %d anos: \n\n", idade2);
}
 /*              else
                   if (idade1 == idade2);
                   idade=idade1;

         printf ("\n %s e %s estao com a mesma idade. %d Anos. \n\n", nome1, nome2,idade);

*/
system("pause");
}

Eu uso o DEV C++

Link para o comentário
Compartilhar em outros sites

  • 0

Em relação ao gets, alguns compiladores emitem um aviso que é uma função perigosa e tal.

Eu uso o cin.getline da biblioteca iostream:

#include<iostream>
...
using namespace std;
...
cin.getline(nome1, 30);  /// 30 é o numero de caracteres que ele lê na tela
...

Quanto as chaves, elas servem pra delimitar um bloco de comando. Se você quiser que seu if execute mais de um comando então você deve colocar as chaves. Se não colocar ele executa somente o primeiro comando depois do if. Isso serve para o if, for e outros.

Abraço.

Editado por RonaldoRG
Link para o comentário
Compartilhar em outros sites

  • 0
Em relação ao gets, alguns compiladores emitem um aviso que é uma função perigosa e tal.

Eu uso o cin.getline da biblioteca iostream:

#include<iostream>
...
using namespace std;
...
cin.getline(nome1, 30);  /// 30 é o numero de caracteres que ele lê na tela
...

Quanto as chaves, elas servem pra delimitar um bloco de comando. Se você quiser que seu if execute mais de um comando então você deve colocar as chaves. Se não colocar ele executa somente o primeiro comando depois do if. Isso serve para o if, for e outros.

Abraço.

valeu Ronaldo .... !!!! agora acho que vai ficar mais fácil de entender e desenvolver .....

Abraço!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...