Ir para conteúdo

POWERED BY:

Arquivado

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

Mateus Pires

(c) Programa que calcula raiz não esta funcionando como deveria!

Recommended Posts

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.

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.