Escrevi esse código. É um programa que que pede o número que se deseja calcular e a precisão do calculo:
#include <stdio.h>
#include <stdlib.h>
double Raiz(double numb, int zero) {
double zr = 10, re = 10;
for (int qnt = 1; qnt <= zero; qnt++) {
zr = zr / 10;
for (re = re - zr * 10; re <= numb; re += zr) {
if ((re * re) == numb) return(re);
if ((re * re) > numb) break;
}
}
return(re - zr);
}
int main() {
int resp = 1, zero;
double numb;
while (resp == 1) {
printf("Raiz de: ");
scanf("%lf", &numb);
printf("Precisao de casas decimais: ");
scanf("%i", &zero);
printf("\nRaiz de %lf = %lf.", numb, Raiz(numb, zero));
printf("\n\nFazer outra operacao? \n1 - Sim \n2 - Nao \n>> ");
scanf("%i", &resp);
}
printf("\n\n");
system("pause");
return(0);
}
Quando se pede o calculo do número 300, por exemplo, ele devolve como resultado o mesmo número. Mas quando pedimos o calculo de números que sabemos que tem um resultado inteiro, como 4 ou 25, ele devolve a resposta certa. Qual o erro no código?
Tenho outra duvida: como ocultar os zeros depois da virgula num double? Tipo, ao invés de receber o valor 30.450000, receber apenas 30.45, já que o resto é desnecessário.