Escreva uma função que dado um número real passado como parâmetro, retorne a parte inteira e a parte fracionária deste número. Escreva um programa que chama esta função. Protótipo:
void frac(float num, int* inteiro, float* frac);
void frac(float num, int* inteiro, float* frac);
Passo 1
O enunciado pede uma função em C que receba um número real e retorne sua parte inteira e parte fracionária usando ponteiros. O conteúdo envolve manipulação de tipos em C e operações aritméticas básicas.
Passo 2
Para obter a parte inteira de um número real em C, usamos cast para int:
. Isso descarta a porção decimal.
A parte fracionária é simplesmente a diferença entre o valor original e a sua parte inteira: .
A parte fracionária é simplesmente a diferença entre o valor original e a sua parte inteira:
Passo 3
Implementamos a função
No programa
frac
conforme o protótipo, atribuindo os valores calculados aos ponteiros inteiro
e frac
.No programa
main
, lemos um valor float
do usuário, chamamos frac
passando os endereços de variáveis para inteiro e fração, e exibimos na tela.Resposta
#include <stdio.h>
void frac(float num, int *inteiro, float frac) {
/ parte inteira por truncamento */
inteiro = (int) num;
/ parte fracionária: diferença entre original e inteiro */
*frac = num - *inteiro;
}
/ parte inteira por truncamento */
inteiro = (int) num;
/ parte fracionária: diferença entre original e inteiro */
*frac = num - *inteiro;
}
int main() {
float valor, partef;
int partei;
float valor, partef;
int partei;
printf("Digite um número real: ");
scanf("%f", &valor);
/* chama a função para obter inteiro e fracionária */
frac(valor, &partei, &partef);
printf("Parte inteira: %d\n", partei);
printf("Parte fracionária: %.6f\n", partef);
return 0;
}