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.
Meu cálculo não está errado!
Na verdade nem o código está errado, apenas errei um pequeno detalhe na hora de copia-lo para o compilador.
Troquei o > por ==.
Mas obrigado pela tentativa!
Meu cálculo não está errado!
Na verdade nem o código está errado, apenas errei um pequeno detalhe na hora de copia-lo para o compilador.
Troquei o > por ==.
Mas obrigado pela tentativa![/quote]
Foi isso mesmo que achei errado.
Agora o seu código não é eficiente. Tente botar ele para calcular a raiz quadrada de 5000000 com 10 dígitos de precisão e verá do que estou falando. Você basicamente fica elevando um número ao quadrado e vai incrementando até atingir o valor do número que você quer achar a raiz. Isso é um processo muito lento.
Leia as soluções no link que eu passei, são bem mais eficientes.
[quote=matheuslmota]Foi isso mesmo que achei errado.
Agora o seu código não é eficiente. Tente botar ele para calcular a raiz quadrada de 5000000 com 10 dígitos de precisão e verá do que estou falando. Você basicamente fica elevando um número ao quadrado e vai incrementando até atingir o valor do número que você quer achar a raiz. Isso é um processo muito lento.
Leia as soluções no link que eu passei, são bem mais eficientes. [/quote]
Realmente… Na verdade eu estou tentando escrever esse programa só pra execitar mesmo, vou dar uma olhada no link! Vlw!