Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Estudiante000000 en 15 Noviembre 2018, 20:55 pm



Título: Programa ayuda
Publicado por: Estudiante000000 en 15 Noviembre 2018, 20:55 pm
Buenas tardes a todos , tengo una gran duda que seria  de mucha ayuda que si me  la aclararan seria genial.

El siguiente programa es un programa que sin el uso de librerias calcula la raiz cuadrada de un numero , mi duda es la siguiente ¿ Cual es el funcionamiento ? , me refiero a que si me ponen el programa como yo se que se trata de calcular la raiz cuadrada  del numero , alguien me explica  que hace cada paso porfavor gracias.


#include<iostream>
#include<stdlib.h>

using namespace std;
int main()
{
 int numero=0;
 double i=0, calculo=0;

 
 while (numero <= 1 || numero >= 100000)
 {
  cout << "ingrese numero = ";
  cin >> numero;
 }
 while (calculo <= numero)
 {
  i = i + 0.000001;
  calculo = i*i;
 }

 cout << "La solucion es = "<<i<<endl;
 system("pause");
 return i;

}

  MUCHAS GRACIAS AL QUE PUEDA AYUDARME .



Título: Re: Programa para calcular la raiz de un numero sin librerias c++
Publicado por: AlbertoBSD en 15 Noviembre 2018, 21:52 pm
Una pregunta muy burda, realmente sabes algo de C o de C++, por que tu codito tiene tanto iostream como stdio y realmente no estas usando nada de stdio.


La parte interesante de tu codigo es:
Código:
  i = i + 0.000001;
  calculo = i*i;

Donde itera sucesivamente cada 0.000001. hasta que encuentra un producto tal que i*i sea igual o un poco mayor al numero buscado.

Basicamente el programa realiza fuerza bruta probando "todas" las posibilidades, lo cual es INEFICIENTE

Saludos!


Título: Re: Programa para calcular la raiz de un numero sin librerias c++
Publicado por: MAFUS en 15 Noviembre 2018, 22:04 pm
Básicamente empiezas con i que vale 0,000001
Y mientras el cuadrado de i no supere el número buscado se sumará 0,000001.
De hecho tu el programa tiene una falla. Lo verás en el ejemplo:

Por pasos y en vez de 0,000001 supongamos 1 para la suma. Y que 9 es el número al que se busca la raíz cuadrada.

i = 1
i * i < 9 : 1 * 1 = 1; 1 < 9? Sí, recalcula

i = i + 1: i = 1+1; i = 2
i * i < 9 : 2 * 2 = 4; 4 < 9? Sí, recalcula

i = i + 1: i = 2+1; i = 3
i * i < 9 : 3 * 3 = 4; 9 < 9? No, fin

Cómo ves, la condición para continuar el bucle es i * i < num. Si hubiera sido i * i <= num habría habido un recalculado e i hubiera valido 4. Y 4 es la raíz cuadrada de 16.


Título: Re: Programa para calcular la raiz de un numero sin librerias c++
Publicado por: Estudiante000000 en 16 Noviembre 2018, 00:56 am
Básicamente empiezas con i que vale 0,000001
Y mientras el cuadrado de i no supere el número buscado se sumará 0,000001.
De hecho tu el programa tiene una falla. Lo verás en el ejemplo:

Por pasos y en vez de 0,000001 supongamos 1 para la suma. Y que 9 es el número al que se busca la raíz cuadrada.

i = 1
i * i < 9 : 1 * 1 = 1; 1 < 9? Sí, recalcula

i = i + 1: i = 1+1; i = 2
i * i < 9 : 2 * 2 = 4; 4 < 9? Sí, recalcula

i = i + 1: i = 2+1; i = 3
i * i < 9 : 3 * 3 = 4; 9 < 9? No, fin

Cómo ves, la condición para continuar el bucle es i * i < num. Si hubiera sido i * i <= num habría habido un recalculado e i hubiera valido 4. Y 4 es la raíz cuadrada de 16.

Excelente muchisimas gracias por tu  ayuda bien explicado.


Título: Re: Programa duda(solucionado)
Publicado por: Estudiante000000 en 16 Noviembre 2018, 00:58 am
Buenas tardes a todos , tengo una gran duda que seria  de mucha ayuda que si me  la aclararan seria genial.

El siguiente programa es un programa que sin el uso de librerias calcula la raiz cuadrada de un numero , mi duda es la siguiente ¿ Cual es el funcionamiento ? , me refiero a que si me ponen el programa como yo se que se trata de calcular la raiz cuadrada  del numero , alguien me explica  que hace cada paso porfavor gracias.


#include<iostream>
#include<stdlib.h>

using namespace std;
int main()
{
 int numero=0;
 double i=0, calculo=0;

 
 while (numero <= 1 || numero >= 100000)
 {
  cout << "ingrese numero = ";
  cin >> numero;
 }
 while (calculo <= numero)
 {
  i = i + 0.000001;
  calculo = i*i;
 }

 cout << "La solucion es = "<<i<<endl;
 system("pause");
 return i;

}

  MUCHAS GRACIAS AL QUE PUEDA AYUDARME .




Título: Re: Programa para calcular la raiz de un numero sin librerias c++
Publicado por: Estudiante000000 en 16 Noviembre 2018, 00:59 am
Una pregunta muy burda, realmente sabes algo de C o de C++, por que tu codito tiene tanto iostream como stdio y realmente no estas usando nada de stdio.


La parte interesante de tu codigo es:
Código:
  i = i + 0.000001;
  calculo = i*i;

Donde itera sucesivamente cada 0.000001. hasta que encuentra un producto tal que i*i sea igual o un poco mayor al numero buscado.

Basicamente el programa realiza fuerza bruta probando "todas" las posibilidades, lo cual es INEFICIENTE

Saludos!

Muchisimas gracias saludos crack!