Programa ayuda

Iniciado por Estudiante000000, 15 Noviembre 2018, 20:55 PM

0 Miembros y 1 Visitante están viendo este tema.

Estudiante000000

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 .


AlbertoBSD

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:

  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!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

MAFUS

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.

Estudiante000000

Cita de: 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.

Excelente muchisimas gracias por tu  ayuda bien explicado.

Estudiante000000

Cita de: 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 .



Estudiante000000

Cita de: 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:

  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!