Ir ao conteúdo
  • Cadastre-se
Irwing Seiji Ato

C Erro no código não aparece o resultado

Posts recomendados

Creio que o código está certo porém no resultado está mostrando letras e não mostra o resultado o que pode ser?

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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main() {
	float capital, juros, montante;
	int meses;
	printf("Digite o valor do capital investido: ");
	fflush(stdin);
	scanf("%f",&capital);
	printf("Digite a taxa de juros: ");
	fflush(stdin);
	scanf("%f",&juros);
	printf("Digite quantos meses foi aplicado:");
	fflush(stdin);
	scanf("%d", &meses);
	montante = capital*(1+juros/100);
	montante = pow(montante, meses);
	printf("O montante a ser resgatado sera:%.2f", montante);
	return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem certeza que a fórmula para calcular o montante está correta? Realizando um teste de mesa manualmente pela calculadora, obtive um valor estratosférico...

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

@Irwing Seiji Ato Olá. Realmente não faz sentido esse seu cálculo:

montante = capital * (1 + juros / 100); // aqui seria bom cuidar da precedẽncia de operadores, mas não é só isso a causa do erro
montante = pow(montante, meses);

Apenas postar como poderia ficar seu código sem a função fflush(stdin);, que não é nada recomendável usar:

#include <stdio.h>
#include <math.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

void limpa_linha() {
    scanf("%*[^\n]");
    scanf("%*c");
}

int main() {

    float capital, juros, montante;
    int meses;

    printf("Digite o valor do capital investido: ");
    scanf("%f", &capital);
    limpa_linha();

    printf("Digite a taxa de juros: ");
    scanf("%f", &juros);
    limpa_linha();

    printf("Digite quantos meses foi aplicado: ");
    scanf("%d", &meses);
    limpa_linha();

    // cálculo do montante

    printf("O montante a ser resgatado sera: %.2f", montante);

    return 0;
}

Evite usar a função fflush(stdin); para limpar a sujeira do buffer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei implementar a sugestão do @r_Tray e continua com o mesmo erro não sei o que devo fazer

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

@Irwing Seiji Ato Olá. A questão está no cálculo do montante (juros composto)

Daria para passar a resposta, mas não vejo que é a melhor forma de levar  você a aprender a programar 

Sugiro que dê uma pesquisada sobre o função pow que vai ajudar muito:

http://www.cplusplus.com/reference/cmath/pow/?kw=pow

Só vou dar a dica que, para esse exercício, essa função recebe como argumentos o valor dos juros e a quantidade de meses (Fica mais fácil agora) rs...

Seria quase isso que você fez:

montante = capital * (1.0 + (juros/100));

E é nessa linha que entra a função pow :)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entedi fiz isso 

montante = pow(capital*(1+(juros/100)),meses);

E mesmo assim não aparece o cálculo

Li os casos que pode dar erro, e não era para dar erro visto que a base não é negativa, e o expoente é um número inteiro, e base não é zero nem o expoente é zero, a base também não é zero e o expoente não é negativo.

Eu acho que o valor é muito grande para ser representado deveria usar double nesse caso para o que seja representado o valor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A minha professora que passou essa fórmula, acho que está certo

Essa é fórmula de juros compostos por isso dá esse número grande, não o de juros simples.

@AdrianoSiqueira

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem alguma coisa errada aí. Tenta da seguinte forma:

montante = capital * (1 + (juros / meses));

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora aparece um 0.00 nada novo não está aparecendo o número

adicionado 5 minutos depois

Acho que o código ficaria assim 

	montante = (1 + juros / 100);
	montante = pow(montante, meses);
	montante = capital * montante;

Tem que elevar ao expoente primeiro depois multiplicar, mas mesmo assim o número não aparece não sei porque

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta da seguinte forma:

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

int main() {
    double capital = 0.0;
    double juros = 0.0;
    double montante = 0.0;

    int meses = 0;

    printf("Digite o valor do capital investido: ");
    scanf(" %lf", &capital);

    printf("Digite a taxa de juros: ");
    scanf(" %lf", &juros);
    juros /= 100;

    printf("Digite quantos meses foi aplicado: ");
    scanf(" %i", &meses);

    montante = capital * (1 + juros * meses);
    printf("O montante a ser resgatado sera: %.2f \n", montante);
    return 0;
}

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora funcionou está mostrando os valores e coloquei na fórmula, não sei porque não estava funcionando pegar os números float com %f, e pegar os int com %d

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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main() {
	double capital = 0.0;
    double juros = 0.0;
    double montante = 0.0;

	int meses = 0;	
    printf("Digite o valor do capital investido: ");
    scanf(" %lf", &capital);
    printf("Digite a taxa de juros: ");
    scanf(" %lf", &juros);
	juros /= 100;
    printf("Digite quantos meses foi aplicado: ");
    scanf(" %i", &meses);
    montante = (1 + juros * meses);
    montante = pow(montante,meses);
	montante = capital * montante; 
    printf("O montante a ser resgatado sera: %.2f \n", montante);
	return 0;
}

Ficou assim

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você fez o teste de mesa para saber se o algoritmo está retornando o valor corretamente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Corrigi agora está certo

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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main() {
	double capital = 0.0;
    double juros = 0.0;
    double montante = 0.0;
	int meses = 0;	
    printf("Digite o valor do capital investido: ");
    scanf(" %lf", &capital);
    printf("Digite a taxa de juros: ");
    scanf(" %lf", &juros);
	juros /= 100;
    printf("Digite quantos meses foi aplicado: ");
    scanf(" %i", &meses);
    montante = (1 + juros);
    montante = pow(montante,meses);
	montante = capital * montante; 
    printf("O montante a ser resgatado sera: %.2f \n", montante);
	return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

@Irwing Seiji Ato Olá. Seria esse o cálculo de juros composto, tal como o @AdrianoSiqueira mostrou:

montante = capital * pow(1.0 + (juros / 100), meses);

Capital = 5000.00

Juros = 0.01 por mês

Meses = 12 meses

Montante = 5634.12

 

Em Python se faz em uma linha isso:

>>> 5000.00 * pow(1.0 + 0.01, 12)
5634.125150659849

Segue o código (agora corrigido):

#include <stdio.h>
#include <math.h>

void limpa_linha() {
    scanf("%*[^\n]");
    scanf("%*c");
}

int main() {
    double capital, juros, montante;
    int meses;

    printf("Digite o valor do capital investido: ");
    scanf("%lf", &capital);
    limpa_linha();

    printf("Digite a taxa de juros: ");
    scanf("%lf", &juros);
    limpa_linha();

    printf("Digite quantos meses foi aplicado: ");
    scanf("%d", &meses);
    limpa_linha();

    montante = capital * pow(1.0 + (juros / 100), meses);

    printf("O montante a ser resgatado sera: %.2f\n", montante);

    return 0;
}

807426610_Capturadetelade2019-05-2922-09-21.png.1f1a5177c53fd70eb2d833984aad8fec.png

 

Atualizando....

Declaração da função pow em C 

double pow (double base, double exponent);

De fato essa função retorna um double, e não um float rs... (apesar de funcionar aqui no Linux) 

Para mais detalhes recomendo esse link:

https://www.ime.usp.br/~pf/algoritmos/apend/math.h.html

Falha minha :)

Corrigi o código acima 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!