elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problemas con raíces.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con raíces.  (Leído 5,144 veces)
KaizerPlazz

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Problemas con raíces.
« en: 11 Octubre 2016, 00:50 am »

Hola soy nuevo tanto en el foro como programando y estoy siguiendo unos videos tutoriales (c/c++) en este video te explica como sacar la raíz cuadrada de un numero sin la librería math , pero no logro entenderlo ,  si entendí como sacarla con sqrt pero de este modo no . Alguien me podría orientar como funciona este código ? Gracias!

Código
  1. #include <stdio.h>
  2. int main(){
  3. printf("Calcular la raiz de un numero \n");
  4. printf("Deme un numero: \n");
  5. float num;
  6. scanf("%f",&num);
  7. float h = 0.00001 , raiz = h;
  8. while(raiz*raiz < num){
  9. raiz += h;
  10. }
  11. printf("\n%f",raiz);
  12. return 0;
  13. }
  14.  
  15.  


Mod: Los códigos deben ir en etiquetas GeSHi


« Última modificación: 11 Octubre 2016, 01:57 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problemas con raíces.
« Respuesta #1 en: 11 Octubre 2016, 02:00 am »

te recomiendo que coloques un printf a raíz dentro del ciclo...


ese es el metodo más simple, aunque menos eficientes más eficiente son con series de tailor... (aqui algo sobre eso)


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
KaizerPlazz

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Problemas con raíces.
« Respuesta #2 en: 11 Octubre 2016, 02:16 am »

Gracias pero mi duda es que no entiendo el código que puse , si alguien me puede dar una explicación sobre este codigo , o sea quiero saber como funciona lo que puse.

Código:
#include <stdio.h>
int main(){
printf("Calcular la raiz de un numero \n");
printf("Deme un numero: \n");
float num;
scanf("%f",&num);
float h = 0.00001 , raiz = h;
while(raiz*raiz < num){
raiz += h;
printf("\n%f",raiz);
}
return 0;
}

Le agregue printf al ciclo n-n
« Última modificación: 11 Octubre 2016, 02:19 am por KaizerPlazz » En línea

oldaccount

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Problemas con raíces.
« Respuesta #3 en: 11 Octubre 2016, 02:20 am »

Hola KaizerPlazz.

Te dejo el código fuente limpio y explicado:

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. float input = 0; // La entrada del usuario
  5. float squareRoot = 0; // La raiz cuadrada que buscamos
  6. float aux = 0.00001; // Cuanto más pequeño más precision en el resultado
  7.  
  8. scanf("%f", &input); //Leémos la entrada del usuario
  9.  
  10. /*
  11. Si el valor almacenado en squareRoot multiplicado por sí mismo
  12. no alcanza el valor de input, lo incrementamos un poco y repetimos
  13. */
  14. while((squareRoot * squareRoot) < input) {
  15. squareRoot = squareRoot + aux;
  16. }
  17.  
  18. printf("%.4f\n", squareRoot); // Imprimir resultado con cuatro decimales
  19.  
  20. return 0;
  21. }

Salida del programa:

Código:
2
1.4142

Código:
9
3.0000

Código:
163.281
12.7781

Saludos.
« Última modificación: 11 Octubre 2016, 02:25 am por CRivasGomez » En línea

KaizerPlazz

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Problemas con raíces.
« Respuesta #4 en: 11 Octubre 2016, 02:57 am »

Hola KaizerPlazz.

Te dejo el código fuente limpio y explicado:

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. float input = 0; // La entrada del usuario
  5. float squareRoot = 0; // La raiz cuadrada que buscamos
  6. float aux = 0.00001; // Cuanto más pequeño más precision en el resultado
  7.  
  8. scanf("%f", &input); //Leémos la entrada del usuario
  9.  
  10. /*
  11. Si el valor almacenado en squareRoot multiplicado por sí mismo
  12. no alcanza el valor de input, lo incrementamos un poco y repetimos
  13. */
  14. while((squareRoot * squareRoot) < input) {
  15. squareRoot = squareRoot + aux;
  16. }
  17.  
  18. printf("%.4f\n", squareRoot); // Imprimir resultado con cuatro decimales
  19.  
  20. return 0;
  21. }

Salida del programa:

Código:
2
1.4142

Código:
9
3.0000

Código:
163.281
12.7781

Saludos.

Muchas gracias , pero el 0.00001 porque se pone? y de donde se saca el valor de la raiz o squareroot , yo se que tiene que ser menor que el numero , es que soy nuevo en esto.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problemas con raíces.
« Respuesta #5 en: 11 Octubre 2016, 03:05 am »

pon un printf en el click y verás como funciona, verás como el valor cambia hasta dar el resultado, ese 0.0001 es un valor que se le llama "epsilon" que en general es un "nivel de precisión"
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
oldaccount

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Problemas con raíces.
« Respuesta #6 en: 11 Octubre 2016, 07:38 am »

Muchas gracias , pero el 0.00001 porque se pone? y de donde se saca el valor de la raiz o squareroot , yo se que tiene que ser menor que el numero , es que soy nuevo en esto.

Se prueba continuamente hasta llegar al resultado:

Primero se prueba si 0.00001 es la raíz cuadrada de input,
luego se prueba si 0.00002 es la raíz cuadrada de input,
luego se prueba si 0.00003 es la raíz cuadrada de input, etc.

Cada vez que se comprueba que squareRoot no es la raiz cuadrada de input, ((squareRoot * squareRoot) < input), se incrementa en 0.00001 y se vuelve a probar.

Simplemente se prueban todos los valores a partir del 0.00001 sucesivamente hasta detectar que se ha encontrado el que queremos.

Un ejemplo muy sencillo sería encontrar la raíz cuadrada del 9. Para ello podríamos comprobar si 1*1 es menor que 9 (sí lo es), si 2*2 es menor que 9 (sí lo es), si 3*3 es menor que 9 (no lo es). Como 3 es el primer número que hemos encontrado que al multiplicarlo por sí mismo no es menor que 9, ese es el resultado.

Saludos.
En línea

KaizerPlazz

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Problemas con raíces.
« Respuesta #7 en: 14 Octubre 2016, 01:11 am »

Claro entonces como  siempre se cumple que squareroot es menor que input se sigue sumando y sumando pero como sabe el programa cuando tiene que parar?
Por ejemplo la raiz cuadrada de 5 es.. 2 o 2,23 (en el programa 2,2361)  Como sabe el programa que tiene que parar en el numero 2 ?  Gracias
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problemas con raíces.
« Respuesta #8 en: 14 Octubre 2016, 01:19 am »

2*2 < 5? +=0.0001
2.0001*2.0001 < 5? +=0.0001
...
2.2361*2.2361 < 5? fin
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
KaizerPlazz

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Problemas con raíces.
« Respuesta #9 en: 14 Octubre 2016, 01:32 am »

Pero si 2*2 es 4 es menor que el input , pero aun asi el programa se detiene en 2 . Disculpe es que soy nuevo y es un quilombo esto xD  o yo soy muy duro :P
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Raíces narrativas de los videojuegos
Juegos y Consolas
Castiblanco 0 1,474 Último mensaje 23 Octubre 2008, 22:15 pm
por Castiblanco
[Ayuda] Solucionador de raíces cuadráticas
Programación Visual Basic
Dreamaker 5 4,284 Último mensaje 8 Mayo 2014, 05:52 am
por engel lex
Buscador para bienes raices
PHP
© Shadoweps ツ 2 2,727 Último mensaje 17 Mayo 2011, 18:32 pm
por merolhack
Hallar raíces [Criptografía]
Criptografía
michelmarques 0 2,618 Último mensaje 22 Julio 2012, 20:09 pm
por michelmarques
Raices cubicas?
.NET (C#, VB.NET, ASP)
andrecid 2 2,158 Último mensaje 17 Mayo 2015, 00:41 am
por kub0x
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines