Ir ao conteúdo
  • Cadastre-se

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
Link para o comentário
Compartilhar em outros sites

@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

Link para o comentário
Compartilhar em outros sites

@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 :)

 

Link para o comentário
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?

Link para o comentário
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

Link para o comentário
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;
}

 

Link para o comentário
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

Link para o comentário
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;
}

 

Link para o comentário
Compartilhar em outros sites

@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 

 

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