Ir ao conteúdo
  • Cadastre-se

C++ Programa para seguro de vida


Posts recomendados

Boa noite meus querido, 

Não sei onde errei nesse código, ele roda normalmente mas não da os resultados certos, fiz todos os cases do switch separadinhos com os sinais certos e conferi, se foi isso eu estou cego.

Grato desde já.

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



main ()
{

	int idade;
	char nome;
	



	printf ("Digite a sua idade: \n");
	scanf ("%d",&idade);

	printf ("Digite o seu nome: \n");
	scanf ("%s",&nome);
	
	{
	
		if (idade<10)
		printf ("O %s devera pagar R$30,00",&nome); 
	
		else if ((idade>10) && (idade<=29))
		printf ("O %s devera pagar R$60,00",&nome); 
	
		else if ((idade>29) && (idade<=45))
		printf ("O %s devera pagar R$120,00",&nome); 
	
		else if ((idade>45) && (idade<=59))
		printf ("O %s devera pagar R$150,00",&nome); 
	
		else if ((idade>59) && (idade<=65))
		printf ("O %s devera pagar R$250,00",&nome); 
	
		else if (idade>65)
		printf ("O %s devera pagar R$400,00",&nome); 
	
	
	
	
	
	
	
	}

}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Vitor Fredie Dreher Galvão Você declarou um char, não uma string (vetor de caracteres).

Use algo como char nome[50].

Não precisa usar & no scanf() (no caso de strings), tampouco no printf() (para os casos em geral). Para strings, colocar "nome" e "&nome[0]" no scanf() da no mesmo.

Use também, no primeiro if(), idade<=10, pois o 10 está excluído nas suas estruturas condicionais.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

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



main ()
{

	int idade;
	char nome[50];
	



	printf ("Digite a sua idade: \n");
	scanf ("%d",&idade);

	printf ("Digite o seu nome: \n");
	scanf ("%s",nome);
	
	{
	
		if (idade<10)
		printf ("O %s devera pagar R$30,00",nome); 
	
		else if ((idade>10) && (idade<=29))
		printf ("O %s devera pagar R$60,00",nome); 
	
		else if ((idade>29) && (idade<=45))
		printf ("O %s devera pagar R$120,00",nome); 
	
		else if ((idade>45) && (idade<=59))
		printf ("O %s devera pagar R$150,00",nome); 
	
		else if ((idade>59) && (idade<=65))
		printf ("O %s devera pagar R$250,00",nome); 
	
		else if (idade>65)
		printf ("O %s devera pagar R$400,00",nome); 
	
	
	
	
	
	
	
	}

}

 

adicionado 0 minutos depois

tente usar o "=" porque se por exemplo eu digitar 10 nao vai rolar.

adicionado 1 minuto depois

so use & em scanf nunca use em printf isso significa endereco

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Entendi agora onde eu estava errando, obrigado pelos comentários e dicas sobre a questão do string, aos poucos vou pegando, porque meu professor sequer nem citou string nas aulas.

Quanto ao 10 eu utilizei "idade<=10" e agora ela está dando.

Obrigado.

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

pois é não são todos professores que entram em mínimos detalhes principalmente se for em c++ onde naturalmente se utiliza mais o cin para leitura. mas são os mínimos detalhes que fazem a diferença no codigo. talvez seu professor nao quis citar porque existe varias maneiras e comandos de ler palavras e  frases .

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

        if (idade<=10)
		printf ("O %s devera pagar R$30,00",nome); 
		else if ((idade>10) && (idade<=29))
		printf ("O %s devera pagar R$60,00",nome); 	
		else if ((idade>29) && (idade<=45))
		printf ("O %s devera pagar R$120,00",nome); 

No trecho acima você vê que está propagando uma redundância em todos os testes. Qual chance de uma idade que não é <- 29 ser > 29? Total. Ela não tem opção. Não precisava testar 2 duas condições a cada vez. O limite inferior já foi testado.

 

E fica difícil, mesmo num programa tão pequeno, descobrir que ele tem 6 pontos de saída. Essa não é uma boa prática.

 

main() é uma função, e ao retornar encerra seu programa. O normal. Então você podia ter escrito algo assim


	if (idade < 10)
	{	printf("O %s devera pagar R$30,00", nome);
		return;
	};

	if (idade <= 29)
	{	printf("O %s devera pagar R$60,00", nome);
		return;
	};

	if (idade <= 45)
	{	printf("O %s devera pagar R$120,00", nome);
		return;
	};

	if (idade <= 59)
	{	printf("O %s devera pagar R$150,00", nome);
		return;
	}

	if (idade <= 65)
	{	printf("O %s devera pagar R$250,00", nome);
		return;
	};

	printf("O %s devera pagar R$400,00", nome);
	return;

Que talvez concorde que é muito mais legível.

 

Ao encontrar o fim de uma função retorne explicitamente. É mais simples e seguro. E nesse caso nem teria tido o problema com o teste de <10 ;) que te custou umas horas.

 

Outro ponto: essas { } que ficaram a mais no meio do programa às vezes não são assim inofensivas. Em C++ por exemplo elas encerram o tempo de vida (scope) de todas as variáveis que estejam declaradas dentro do bloco { }  e isso se você não fez de propósito pode ser desastroso em seu programa

 

 

 

 

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

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...