Ir ao conteúdo

Posts recomendados

Postado

Olá, montei esse código de estrutura de repetição, mas ele só pega o nome da pessoa uma vez, depois ele ja finaliza, como se ja tivesse pego todas as infos.

 

int main()
{
setlocale(LC_ALL, "PORTUGUESE");

int nome, idade, pessoa = 1;
int contador = 1;

for(pessoa = 1; pessoa < 10; pessoa++){	

printf("\nEntre com o nome: ");
scanf("%d", &nome);

printf("\nEntre com a idade: ");
scanf("%d", &idade);

printf("\nHello! %d, você tem %d anos\n", nome, idade);

contador = pessoa + 1;

}

return 0;
}

 

 

 

Console:

Entre com o nome: victor

Entre com a idade:
Hello! 0, você tem 0 anos
 

Entre com o nome:
Entre com a idade:
Hello! 0, você tem 0 anos
 

Entre com o nome:
Entre com a idade:
Hello! 0, você tem 0 anos
 

Entre com o nome:
Entre com a idade:
Hello! 0, você tem 0 anos
 

Entre com o nome:
Entre com a idade:
Hello! 0, você tem 0 anos
 

Entre com o nome:
Entre com a idade:
Hello! 0, você tem 0 anos
 

Entre com o nome:
Entre com a idade:
Hello! 0, você tem 0 anos
 

Entre com o nome:
Entre com a idade:
Hello! 0, você tem 0 anos
 

Entre com o nome:
Entre com a idade:
Hello! 0, você tem 0 anos

  • Membro VIP
Postado

Está formatando os dados erroneamente

char nome[30]; //*nome
int idade, pessoa = 1;
int contador = 1;

for(pessoa = 1; pessoa < 10; pessoa++){	

printf("\nEntre com o nome: ");
scanf("%s", nome);

printf("\nEntre com a idade: ");
scanf("%d", &idade);

printf("\nHello! %s, você tem %d anos\n", nome, idade);

contador = pessoa + 1;

 

Postado
5 horas atrás, Victor Hugo Barbosa Silva disse:

int nome, idade, pessoa = 1;

int contador = 1;

Algumas declarações de variáveis do tipo int, quase normais a exceção é identificador   nome   da variável que transmitiu intenção diferente de sua categoria de dados (número).

 

5 horas atrás, Victor Hugo Barbosa Silva disse:

printf("\nEntre com o nome: ");

scanf("%d", &nome);

Um compilador não acusaria erros ou alerta de sintaxe. Pois, a variável   nome   é do tipo número inteiro e o especificador, na “string” de conversão de dados, na função scanf é compatível com tipo número inteiro (de base 10). 

 

"Filezinho da Perdigão" 

 SQNAO! :) 

 

Concordando com...

2 horas atrás, .if disse:

Está formatando os dados erroneamente

 

5 horas atrás, Victor Hugo Barbosa Silva disse:

Entre com o nome: victor

Entre com a idade:
Hello! 0, você tem 0 anos

 

Entre com o nome:

Entre com a idade:
Hello! 0, você tem 0 anos

No instante que envia ao programa seu   nome   que difere de número, a função scanf  esperando por dígitos ((- +)1234567890) recusa o fluxo de caracteres ao decidir que primeiro (v) é letra e não número inteiro (decimal). 

 

A falha se repete de cima para abaixo durante todo laço/"loop" porque (v) é sempre recusado.

[:)]  

Postado
5 horas atrás, .if disse:

printf("\nEntre com o nome: "); scanf("%s", nome);

 

Tem um livro? Seu IDE mostra ao menos os protótipos das funções?

 

scanf() retorna um int dizendo quantas coisas conseguiu ler.

 

Acha que precisa disso? Sim, sempre. Que sentido faz seguir se não ler nada por exemplo para o nome?

 

O uso de scanf) é controlado pelos especificadores, aquelas coisas que tem um %. Veja a lista e use de acordo. %s, %c %d, essas coisas como estão no manual.

Postado
7 horas atrás, .if disse:

... não mencionei mas na postagem que fiz está 1/2 que corrigido .. 😁

Sim, e por essa razão que foquei minha atenção unicamente na falha e não em uma solução, já que existe em tua postagem as correções do problema, em específico.

 

 

Vejamos:

12 horas atrás, .if disse:

char nome[30]; //*nome

int idade, pessoa = 1;

int contador = 1;

A correção começou na categoria de dados da variável nome, seu tipo agora é char [30], um arranjo unidimensional ou simplesmente vetor que nesse contexto conhecemos por 'strings' com capacidade para 29 letras/caracteres (não nulos).

 

12 horas atrás, .if disse:

printf("\nEntre com o nome: ");

scanf("%s", nome);

 Atenção aqui para não haver mal-entendido! 

 

Antes da correção havia o especificador de conversão (ou só especificador) para tipo inteiro (int) na formatação decimal.

image.png.ece5e577b6fd9c352a5132ada112975b.png

 

 

Com a correção se aplicou o especificador de conversão certo para o dado correto dentro da ‘string’ de formato.

image.png.0c5c2bba57e9b7816fe774a6f2d489c5.png

,Poderia ter ido mais além e especificado sua capacidade, e ficaria assim:

printf("\nEntre com o nome: ");
scanf(" %29s", nome);

 

 

Ambos os modos estão certos.

 

E não esquece de aplicar a correção também a formatação  para função printf ...

Antes

15 horas atrás, Victor Hugo Barbosa Silva disse:

printf("\nHello! %d, você tem %d anos\n", nome, idade);

 

Depois

12 horas atrás, .if disse:

printf("\nHello! %s, você tem %d anos\n", nome, idade);

 

Isso são algumas das coisas que o autor da dúvida predente perceber.

[:)]

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...