Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Charles Arnoud

[Resolvido] Como dividir um numero real em 2 partes?

Recommended Posts

bom, estou precisando dividir um numero real (com casas decimais) em duas variaveis:

uma parte seriam representada pela parte inteira do numero e outra pela parte decimal...

por exemplo se val_lido = 123,25

entao parteint = 123 e partedec = 25

 

alguem sabe como faço isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Busque pela função floor.

floor é um arredondamento matemático que arredonda o número SEMPRE para baixo.

 

ok, e onde isso se aplica ao seu caso?

 

numero - floor(numero) = parte decimal!

=D

 

 

ex:

12,8 - floor(12,8)

12,8 - 12 = 0,8

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso você tem q pensar primeiro em uma solucao matematica:

na primeira é soh fazer um casting (int) q o numero vira inteiro a outra você faz o numero q esta em float dividido pelo inteiro dele, você pega o resto disso..

tendeu???

Compartilhar este post


Link para o post
Compartilhar em outros sites

putz eu n sabia nenhuma das duas funçoes direito

dai tentei o floor q pareceu mais simples, da uma olhada:

 

float val_lido; //valor real lido
	int parteint, partedec; //partes inteira e decimal
	int temp; //variável temporária
	int n100, n50, n20, n10, n5, n2, n1, m50, m25, m10, m5, m1;
	system ("color f9");
	printf ("Mostra a quantidade minima de notas/moedas para determinado valor");
	printf ("\n\nDigite valor desejado: R$"); //apresentação
	scanf ("%f", &val_lido); //lê o valor real digitado
	parteint = floor(val_lido);
	partedec = val_lido - floor(val_lido);
	n100 = parteint/100;
	temp = parteint%100;
	n50 = temp/50;
	temp = temp%50;
	n20 = temp/20;
	temp = temp%20;
	n10 = temp/10;
	temp = temp%10;
	n5 = temp/5;
	temp = temp%5;
	n2 = temp/2;
	n1 = temp%2;
	m50 = partedec/0.50;
	temp = partedec%0.50;
	m25 = temp/0.25;
	temp = temp%0.25;
	m10 = temp/0.10;
	temp = temp%0.10;
	m5 = temp/0.5;
	temp = temp%0.5;
	m1 = temp/0.1;
	printf ("\n\nVoce vai precisar de (no minimo):\n");
	printf ("%i nota(s) de R$100,\n", n100);
	printf ("%i nota(s) de R$50,\n", n50);
	printf ("%i nota(s) de R$20,\n", n20);
	printf ("%i nota(s) de R$10,\n", n10);
	printf ("%i nota(s) de R$5,\n", n5);
	printf ("%i nota(s) de R$2,\n", n2);
	printf ("%i nota(s) ou moeda(s) de R$1,\n", n1);
	printf ("%i moeda(s) de R$0,50,\n", m50);
	printf ("%i moeda(s) de R$0,25,\n", m25);
	printf ("%i moeda(s) de R$0,10,\n", m10);
	printf ("%i moeda(s) de R$0,05 e\n", m5);
	printf ("%i moeda(s) de R$0,01.\n\n\n", m1);
	system ("pause");
	return 0;

mas ele da erro, fica escrito assim: invalid operands of types `float' and `int' to binary `operator%'

isso referente a linhas 24,26...

 

se puderem me ajudar ae eu agradeço

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa agora sim!!!

o algoritmo ta dando certo na maioria das vezes,

mas ainda vo ter q revisar mais pq tah dando erro nas moedas de 1 centavo ainda n sei pq..

valeu pela ajuda, tpw eh q a professora ta puxando um poko

na quarta aula jah pediu isso ^^

 

hasuhusauh

no inicio eu mando o numero ser arredondado para baixo

soh q qdo eu quero a parte decimal eu n quero mais ele arredondado

tem algum comando q desabilite o floor?

dai ele tah arredondando os centavos, tpw 7 ele deixa normal, mas 8 ele arredonda para 7, 3 para 2 e 1 para 0.

dai ta dando certo mas ta errando nas moedas de 1 centavo

 

pronto agora consegui usando o comando round, ele n tah mais fazendo arredondamentos.

 

resolvido, valeu ai td mundo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugestão, mantenha uma cópia da variável original quando quiser acessar a variável não arredondada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou pegue a parte inteira usando o cast como o quit sugeriu...

 

parteint = (int)val_lido;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.