Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: welchu en 10 Febrero 2014, 11:27 am



Título: Duda calcular radio círculo
Publicado por: welchu en 10 Febrero 2014, 11:27 am
Hola, alguien me podría ayudar a hacer un programa que calcule el radio del círculo, según el área que haya metido el usuario?
Tengo esto empezado pero no se como seguir porque al llegar al cuadrado del radio no se como hacerlo. (Tiene que calcularse sin la librería math.h)

Gracias, un saludo!


/*Programa que el usuario da el area del circulo y calculamos el radio*/
#include <stdio.h>
int main()
{
    float area, radio, pi=3.1415, x;
   
    printf("Introduce el area del circulo: ");
    scanf("%f", &area);
   
    x=area/pi;
   

   
}


Título: Re: Duda calcular radio círculo
Publicado por: eferion en 10 Febrero 2014, 11:41 am
Podrías optar por un algoritmo que vaya calculando la raiz cuadrada por aproximación y mediante un mecanismo de prueba y error.

1. Empiezas por un número... por ejemplo el 1
2. Ahora asignas un incremento... por ejemplo una unidad.
3. Coges el número y lo elevas al cuadrado
4. Si la potencia es menor que el área:
  4.1. incrementamos el número el valor de la variable "incremento"
  4.2. volvemos al paso 3
5. Si la potencia es mayor:
  5.1. restamos al número el valor de la variable "incremento"
  5.2. dividimos el incremento entre 10
  5.3. Si el incremento es menor a, por ejemplo 0.0001 damos por bueno el resultado y salimos
  5.4. sumamos al numero el valor de la variable "incremento"
  5.5. volvemos al paso 3.
6. Si la potencia es igual:
  6.1 Damos por bueno el resultado y salimos.

Lo de poner un tope de 0.0001 al incremento es por cuestiones de precisión.

Si PI lo has definido con 4 decimales, cualquier aproximación del radio que emplee más de 4 decimales va a estar mal.

También puedes optar por algoritmos más sofisticados y potentes... pero esos no se si los vas a entender y no creo que sean el objetivo de tu práctica.

PD.: No he puesto código porque espero que al menos te curres la tarea de codificar las instrucciones.


Título: Re: Duda calcular radio círculo
Publicado por: Gh057 en 10 Febrero 2014, 12:28 pm
Hola welchu, si la fórmula de cálculo de un área es A=pi * r^2  (en función del radio r) simplemente puedes reescribirla como A = pi * (r*r), declarando e indicando valores a ambas variables anteriormente, por lo cual ya no tendrías que usar la función pow. Saludos.


Título: Re: Duda calcular radio círculo
Publicado por: eferion en 10 Febrero 2014, 12:38 pm
Hola welchu, si la fórmula de cálculo de un área es A=pi * r^2  (en función del radio r) simplemente puedes reescribirla como A = pi * (r*r), declarando e indicando valores a ambas variables anteriormente, por lo cual ya no tendrías que usar la función pow. Saludos.

No se si te has dado cuenta... pero el proceso a seguir es el inverso... recibe el área y tiene que calcular el radio.


Título: Re: Duda calcular radio círculo
Publicado por: welchu en 10 Febrero 2014, 12:45 pm
No entiendo mucho lo que me ha dicho eferion, no puedo utilizar un algoritmo elevando porque utilizo el programa Dev c++. De momento tengo esto:

/*Programa que el usuario da el area del circulo y calculamos el radio*/
#include <stdio.h>
int main()
{
    float area, radio, pi=3.1415, x;
   
    printf("Introduce el area del circulo: ");
    scanf("%f", &area);
   
    x=area/pi;
   
    r*r=x;
   
    printf("El radio del circulo es %f", r);
   
    getchar();
    getchar();
    return 0;
}

Pero creo que está mal lo de x=r*r, no se como hacer ese paso para calcular el radio.


Título: Re: Duda calcular radio círculo
Publicado por: eferion en 10 Febrero 2014, 13:13 pm
Dev C++ es un IDE, es decir, un entorno de desarrollo... solo sirve para facilitarte la tarea de programar... pero puedes hacer exactamente lo mismo con un editor de texto tipo block de notas. Con esto quiero decir que el IDE que uses es independiente del tipo de programa que quieras realizar... no te limita para nada.

Entendiendo por algoritmo una secuencia de pasos a seguir para conseguir un fin... tu propio main es un algoritmo... defectuoso en tu caso concreto pero un algoritmo al fin y al cabo.

Ahora, tocando el tema del área, podemos comentar lo siguiente (partiendo de la base de que son matemáticas básicas). Si tu sabes que el área de un círculo se calcula con la ecuación a = PI * r^2... entonces el radio es r = ( a / PI )^(1/2)... o lo que es lo mismo, la raiz cuadrada de a/PI.

En C los operadores de asignación funcionan de derecha a izquierda, es decir, se aplica en la parte izquierda el resultado de evaluar la parte derecha. Dicho con un ejemplo:

Código
  1. int a = 5;
  2. int b = 4;
  3. int c = a + b; // bien, c = 4 + 5 = 9
  4. int d;
  5. d * d = c; // mal... d * d = 9 ... el compilador no sabe resolver esto

Efectivamente, tu error está en la línea r*r=x... tú tienes que encontrar un r que verifique que r*r=x... y para encontrar ese valor yo te he propuesto un algoritmo que has de implementar... yo simplemente te he dado los pasos.

PD.: implementar un algoritmo significa escribir el código necesario para que el algoritmo cumpla su tarea.


Título: Re: Duda calcular radio círculo
Publicado por: Gh057 en 10 Febrero 2014, 13:25 pm
Hola eferion, luego que despeje la ecuación con lo que necesita... el tema que no tiene que utilizar la biblioteca math.h en donde figura la función pow. o bien se crea una nueva función de potenciación aparte para realizar el cálculo, o bien lo hace dentro del main... pi también tiene que definirla con un valor (por ejemplo 3.141519). El problema no está en como programarlo, sino de cómo plantear el algoritmo que le solucione su problema. Saludos.


Título: Re: Duda calcular radio círculo
Publicado por: eferion en 10 Febrero 2014, 13:46 pm
Hola eferion, luego que despeje la ecuación con lo que necesita... el tema que no tiene que utilizar la biblioteca math.h en donde figura la función pow. o bien se crea una nueva función de potenciación aparte para realizar el cálculo, o bien lo hace dentro del main... pi también tiene que definirla con un valor (por ejemplo 3.141519). El problema no está en como programarlo, sino de cómo plantear el algoritmo que le solucione su problema. Saludos.

A ver, a no ser que se exprese mal... lo que tiene que hacer es calcular el radio a partir del área.

Partiendo de esa premisa... lo que necesita es la raiz cuadrada, no la potencia.

Lo vuelvo a repetir... si el área de un círculo se calcula con la fórmula a = PI*r^2... y la incógnita es el radio... la ecuación que permite calcular el radio es r = (a / PI)^(1/2)... o lo que es lo mismo, la raiz cuadrada de a/PI.

Como no puedes usar la función sqrt de math.h... tienes que programarla tú.

Con todo esto... una posible forma de calcular la raiz cuadrada la he expuesto en mi primera respuesta.

¿Tan mal me explico que tengo que repetir lo mismo 3 veces?


Título: Re: Duda calcular radio círculo
Publicado por: Gh057 en 10 Febrero 2014, 14:10 pm
hola eferion, como bien dices elevar r al cuadrado, o elevarlo a 1/2 (que es la raíz cuadrada de r), es lo mismo... sigue siendo una potenciación... lo que intenté decir es que lo veo al usuario welchu trabado por un problema matemático, mas bien que de implementación. Cuando tenga su algoritmo, el único requisito es no usar la biblioteca math.h, sino elaborar su propia función de potencia. Saludos.


Título: Re: Duda calcular radio círculo
Publicado por: welchu en 10 Febrero 2014, 14:28 pm
Por lo que he entendido tengo que hacer primero un programa que calcule la potencia...no? e.e

Aquí esta:

#include <stdio.h>
int potencia(int base, int exponente)
{
    int resultado=1;
    int i;
   
    for(i=1; i<=exponente; i++)
       resultado *=base;
    return resultado;
}
int main()
{
    int num1, num2;
    printf("Introduzca la base: ");
    scanf("%d", &num1);
    printf("Introduzca el exponente: ");
    scanf("%d", &num2);
    printf("%d elevado a %d vale %d", num1, num2, potencia(num1,num2));
   
    getchar();
    getchar();
    return 0;
   
}

Ahora tengo que juntarlo con el otro?? A ver que pasa..


Título: Re: Duda calcular radio círculo
Publicado por: welchu en 10 Febrero 2014, 14:38 pm
Ya lo he hecho:

/*Programa que el usuario da el area del circulo y calculamos el radio*/
#include <stdio.h>
float potencia(float base, float exponente)
{
    float resultado=1;
    float i;
   
    for(i=1; i<=exponente; i++)
       resultado *=base;
    return resultado;
}
int main()
{
    float area, radio, pi=3.1415, x, exp=0.5;
   
    printf("Introduce el area del circulo: ");
    scanf("%f", &area);
   
    x=area/pi;
    //r=(x)^(1/2)
   
    printf("El radio del circulo es %f", potencia(x,exp));
   
    getchar();
    getchar();
    return 0;
}


El programa no me da error en ningún sitio pero no me calcula bien el radio. Hay algo que tengo mal?
Gracias


Título: Re: Duda calcular radio círculo
Publicado por: eferion en 10 Febrero 2014, 14:41 pm
...

La potencia y la raiz cuadrada no se calculan igual.

La potencia es un simple producto... la raiz cuadrada requiere cálculos adicionales.

Dicho de otra forma... si a la función le pasas un exp = 0.5... y el bucle se repite desde 1 hasta exp... el bucle no se ejecuta NUNCA.

Quieres calcular una raíz cuadrada?? bueno, en mi primera respuesta tienes los pasos a seguir aplicando un algoritmo bastante simple.


Título: Re: Duda calcular radio círculo
Publicado por: NikNitro! en 10 Febrero 2014, 14:45 pm
Podrías usar esto:
Código:
float raiz(float m)
{
    float i=0;
    float x1,x2;
    while( (i*i) <= m )
            i+=0.1;
    x1=i;
    for(int j=0;j<10;j++)
    {
        x2=m;
        x2/=x1;
        x2+=x1;
        x2/=2;
        x1=x2;
    }

    return x2;
}

Saludos ;)


Título: Re: Duda calcular radio círculo
Publicado por: welchu en 10 Febrero 2014, 14:53 pm
Me ha salidooo!!!!!!!

/*Programa que el usuario da el area del circulo y calculamos el radio*/
#include <stdio.h>
float raiz(float m)
{
    float i=0;
    float x1,x2;
    while( (i*i) <= m )
            i+=0.1;
    x1=i;
    for(int j=0;j<10;j++)
    {
        x2=m;
        x2/=x1;
        x2+=x1;
        x2/=2;
        x1=x2;
    }

    return x2;
}

int main()
{
    float area, radio, pi=3.1415, x;
    
    printf("Introduce el area del circulo: ");
    scanf("%f", &area);
    
    x=area/pi;
    //r=(x)^(1/2)
    
    printf("El radio del circulo es %f", raiz(x));
    
    getchar();
    getchar();
    return 0;
}


No es el radio exacto por los decimales del pi pero al fin está bien!
Muchas gracias por vuestra ayuda!!  :D


Título: Re: Duda calcular radio círculo
Publicado por: Gh057 en 10 Febrero 2014, 15:25 pm
bien welchu, me alegro! el tema es que incrementabas de a uno (i++) cuando lo correcto es usar un incremento float, como bien te indicó NikNitro!, y la función al encapsularla es reutilizable. podrías intentar más adelante implementarla pasándole como parámetro el exponente, para hacerla más general. :) saludos!


Título: Re: Duda calcular radio círculo
Publicado por: eferion en 10 Febrero 2014, 17:14 pm
Me ha salidooo!!!!!!!

No es el radio exacto por los decimales del pi pero al fin está bien!
Muchas gracias por vuestra ayuda!!  :D

Ahora la pregunta del millón... sabes cómo o porqué funciona el código que has, literalmente, copiado??

Si la respuesta es negativa, deberías replantearte la forma de resolver los ejercicios... en la vida real no te va a servir esta forma de trabajar.


Título: Re: Duda calcular radio círculo
Publicado por: Gh057 en 10 Febrero 2014, 17:25 pm
Ahora que tu código anda welchu, si solamente quieres calcular raíces cuadradas podrías usar un algoritmo muy antiguo como el babilónico, (la solución es geométrica, mediante el cálculo de área de un cuadrado) no es tan eficiente como otros más modernos, pero es mucho más limpio y utilizarás menos variables... Te recomiendo buscarlo, leerlo e implementarlo en este ejercicio.
 
Otra de las soluciones que puedes ver por ahí es el de las series de Taylor, que resuelve el problema mediante logaritmos; la complejidad radica en que la función se encuentra en math.h jejej... pero siempre puedes crear otra función para calcularla mediante matrices (para volcar ahí la tabla). Saludos.


Título: Re: Duda calcular radio círculo
Publicado por: Yoel Alejandro en 10 Febrero 2014, 21:00 pm
Está muy bien este trabajo, y como comentario quisiera señalar que ese algoritmo:

Código
  1. float raiz(float m)
  2. {
  3.    float i=0;
  4.    float x1,x2;
  5.    while( (i*i) <= m )
  6.            i+=0.1;
  7.    x1=i;
  8.    for(int j=0;j<10;j++)
  9.    {
  10.        x2=m;
  11.        x2/=x1;
  12.        x2+=x1;
  13.        x2/=2;
  14.        x1=x2;
  15.    }
  16.  
  17.    return x2;
  18. }

está basado creo que en el "método de Newton" para solución de ecuaciones no lineales, que en el caso de raíces cuadradas también se conoce como método Babilónico.

 :)


Título: Re: Duda calcular radio círculo
Publicado por: Gh057 en 11 Febrero 2014, 01:34 am
Hola yoel_alejandro, efectivamente aunque algo confuso pareciera basarse en el método de Newton (en realidad Newton - Raphson, tuve que buscarlo obviamente!) tengo entendido que fue mientras trabajaba en su famoso método de las fluxiones, que luego se le conoció como derivadas; aunque en ese momento no encontró la relación entre las raíces de polinomios y las sucesiones.

En cambio el método babilónico se basa en una solución geométrica, en llevar los lados de un rectańgulo hasta formar un cuadrado, en donde su lado es la raíz del área del mismo. Es una explicación bastante sosa, es cierto, pero igualmente me tomé el atrevimiento de modificar un poco el código para que sea más entendible, y personamente más intuitivo:

Código:
//Programa que el usuario da el area del circulo y calculamos el radio

#include <stdio.h>

double raiz (double);   // prototipo de función raiz.

int main()
{
    double area, pi=3.141519, x;

    printf("Introduce el area del circulo: ");
    fflush( stdin );    // borra el buffer del teclado.
    scanf("%lf", &area);

    x=area/pi;          // y como r=(x)^(1/2)...

    printf("El radio del circulo es %lf\n", raiz(x));

    return 0;
}

double raiz(double x){  // algoritmo de calculo de raíz cuadrada, método babilónico.
   
    double radio = x, t = 0;
   
    while (t != radio){
        t = radio;
        radio = (x/radio + radio)/2;
    }
    return radio;
}

Espero que les sea de su agrado, es tan sólo otra perspectiva... saludos!


Título: Re: Duda calcular radio círculo
Publicado por: leosansan en 12 Febrero 2014, 08:39 am
¡¡¡Me ausento unos días y ya están tratado de reinventar la rueda!!!

:rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:

Vayamos por partes:

Está muy bien este trabajo, y como comentario quisiera señalar que ese algoritmo:
..............................................................
está basado creo que en el "método de Newton" para solución de ecuaciones no lineales, que en el caso de raíces cuadradas también se conoce como método Babilónico.


Como referencia histórica te lo acepto, peros sólo como eso. ;)

...................................................

En cambio el método babilónico se basa en una solución geométrica, en llevar los lados de un rectańgulo hasta formar un cuadrado, en donde su lado es la raíz del área del mismo. Es una explicación bastante sosa, es cierto, pero igualmente me tomé el atrevimiento de modificar un poco el código para que sea más entendible, y personamente más intuitivo:
............................................
Código
  1. double raiz(double x){  // algoritmo de calculo de raíz cuadrada, método babilónico.
  2.  
  3.    double radio = x, t = 0;
  4.  
  5.    while (t != radio){
  6.        t = radio;
  7.        radio = (x/radio + radio)/2;
  8.    }
  9.    return radio;
  10. }

Creo que te has apuntado un tanto que no es tuyo. Cito textualmente el método expuesto en la Wikipedia (http://es.wikipedia.org/wiki/C%C3%A1lculo_de_la_ra%C3%ADz_cuadrada):

Código
  1. double raiz(double x){
  2.    double r = x, t = 0;
  3.    while (t != r){
  4.        t = r;
  5.        r = (x/r + r)/2;
  6.    }
  7.    return r;
  8. }

Reconoce que el parecido es cuanto menos asombroso. ;)

Lo de eferion no termino de entender lo último:

Podrías optar por un algoritmo que vaya calculando la raiz cuadrada por aproximación y mediante un mecanismo de prueba y error.

1. Empiezas por un número... por ejemplo el 1
2. Ahora asignas un incremento... por ejemplo una unidad.
................................................
También puedes optar por algoritmos más sofisticados y potentes... pero esos no se si los vas a entender y no creo que sean el objetivo de tu práctica.

Como vaya a calcular la raíz de 10000000 va a tener que iterar 10000000 de veces antes de empezar las aproximaciones propiamente dichas. Y lo del incremento arbitrario que tomas lo admito, como lo anterior, como ejemplo. pero sólo como eso. En cualquier caso alabo tu "ocurrencia" para no hablar de métodos que consideras más sofisticados. ;)

Por cierto, ¿de qué algoritmos sofisticados hablas?. Porque yo puedo mencionar algunos elementales como los métodos de la bisección o bipartición,  Regula Falsi, Secante,  Iteración del punto fijo, Newton y sus tropecientas variantes, por mencionar sólo los elementales y todos ellos aplicables por cualquiera que haya estudiado simplemente el Bachillerato.

En el fondo la sensación que me da es que el hecho de tener que calcular la raíz cuadrada ha ofuscado al personal, cuando en este caso se se trata simplemente de obtener la raíz de una función:

Código
  1. f(x)=x*x-N=0

Personalmente me habría decantado por el Método de bisección (http://es.wikipedia.org/wiki/M%C3%A9todo_de_bisecci%C3%B3n) por lo simple y fácil de explicar y/o entender, insisto que con un mínimo conocimiento de las Mates del Bachillerato. Y como ejemplo de la impementación al cáculo de la raíz cuadrada de 7:

Código
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3. #include <math.h>
  4. #define f(x)    (x*x-7)
  5.  
  6. int main( void )
  7. {
  8.    double a=2,b=3,c=0,h=.000000001,FA=0,FB=0,FC=0;
  9.    int i=1;
  10.  
  11.   /* if (f(b)*f(a)<0.){
  12.       printf("Como signo de f(b)*f(a) es negativo, hay solucion\n");
  13.     else {
  14.       printf("Como signo de f(b)*f(a) es positivo, hay que elegir otro intervalo.");
  15. .......................................
  16.     }*/
  17.  
  18.    c=(a+b)/2;
  19.    while ((b-a)>=h ){
  20.        FA=f(a),FB=f(b),FC=f(c);
  21.        if ((FA* FC )>0 ){
  22.          a=c;
  23.          FA=FC;
  24.        }
  25.        else {
  26.          b=c;
  27.          FB=FC;
  28.        }
  29.        c = (a+b)/2;
  30.        i++;
  31.    }
  32.     printf("\n\nLa raiz de %1.8g es %1.8lf.\n\nY el valor real es %1.8lf: \n\nsiendo el numero de iteraciones %d\n\n",N,c,sqrt(N),i);
  33.    return 0;
  34. }

Citar

La raiz de 7 es 2.64575131.

Y el valor real es 2.64575131:

siendo el numero de iteraciones 31

Lo que sí es importante poner de manifiesto es la trascendencia de elegir adecuadamente los valores del intervalo en que se encuentra la raíz a fin de una pronta aproximación a la solución de la ecuación, toda vez que al tratarse de un simple polinomio de grado dos cumple los requisitos exigidos por el método, este y los otros mencionados anteriormente. Pero al tratarse en este caso de hallar la raíz cuadrada de un número real es la obtención de dicho intervalo es algo obvio.


Espero que nadie se sienta ofendido y/o molesto por mis comentarios. Sólo pretendo aportar otro punto de vista al derrotero en que había caído el tema. ;)


¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)









Título: Re: Duda calcular radio círculo
Publicado por: eferion en 12 Febrero 2014, 09:51 am
Lo de eferion no termino de entender lo último... En cualquier caso alabo tu "ocurrencia" para no hablar de métodos que consideras más sofisticados. ;)

Simplemente intento ponerme en la piel del que tiene que resolver una práctica de academia / universidad.

Para bien o para mal, el nivel de los contenidos suele ser más bien bajo... aunque de eso te das cuenta cuando terminas y te pegas con el mundo real.

Podía haberme puesto a rebuscar entre mis libros de algoritmia recursos eficientes y precisos para calcular raíces cuadradas... o bien haber mirado en google... pero eso también podía haberlo hecho el autor del hilo.

Para mí un ejercicio de este tipo no es válido si no comprendes la solución. Si copias y pegas pero luego eres incapaz de comprender cómo has llegado a esa solución no has aprendido absolutamente nada.

Como vaya a calcular la raíz de 10000000 va a tener que iterar 10000000 de veces antes de empezar las aproximaciones propiamente dichas. Y lo del incremento arbitrario que tomas lo admito, como lo anterior, como ejemplo.

Te alejas un poco... para calcular la raíz de 10.000.000 se emplearían unas 40 iteraciones... ya que la idea es reproducir la forma que te enseñan para hacer raíces cuadradas a mano.

Además, para un ejercicio tipo cuando estás aprendiendo no te suelen pedir que calcules la raíz cuadrada de un número de 200 dígitos... más bien te suelen pedir la raíz de un int... y la raíz de 20.000.000 por ejemplo se puede realizar en un tiempo razonablemente corto con el algoritmo que he propuesto... que hay algoritmos ya hechos??? sí, pero no es mi competencia buscarlos para que él resuelva su práctica.

En base a todo esto, y resumiendo, cuando alguien, como en este caso el autor del hilo, es incapaz de hacer una simple búsqueda en google y se limita a esperar a que alguien le sirva la solución en bandeja no espero que cuente con que yo le de dicha solución. Yo le aporto ideas o posibles caminos... pero no le voy a dar la solución porque ese no es el camino...



Título: Re: Duda calcular radio círculo
Publicado por: leosansan en 12 Febrero 2014, 10:51 am
...............................................
En base a todo esto, y resumiendo, cuando alguien, como en este caso el autor del hilo, es incapaz de hacer una simple búsqueda en google y se limita a esperar a que alguien le sirva la solución en bandeja no espero que cuente con que yo le de dicha solución. Yo le aporto ideas o posibles caminos... pero no le voy a dar la solución porque ese no es el camino...


Totalmente de acuerdo.

Sólo quise aportar métodos más propios de resolver una ecuación ya que el hilo derivo hacia derroteros, como diría .... extraños, como el Método Babilónico. Mi intervención sólo pretendía reconducir la deriva que tomaba el tema.

Y repito lo ingeniosa que resulta tu proposición.


¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)



Título: Re: Duda calcular radio círculo
Publicado por: Gh057 en 12 Febrero 2014, 12:29 pm
leosansan... no he escrito en ningún lado el método gh057...
creo que hasta tu aporte es un algoritmo que encuentras si se busca un poco... "métodos más propios..." ufff, eso sí que es ambiguo!

ahora bien si alguien quiere ordenar un secuencia de números y le explicas un método como "el de la burbuja" te estás anotando algo? si lo hubiera escrito en c++, cambia en algo? el algortimo es muy viejo, es necesario que repita que no es mío? lo ví cuando tenía 12 años (aunque yo lo había aprendido con variables como base y altura...aquí puse con radio para seguir con la línea del problema... )

En fin, creo que el tema siempre fue de tener en claro el concepto matemático de obtener una raíz,  y entre todos hemos aportando métodos muy interesantes... al fin de cuentas, el método que indiqué es uno de los primeros y gráficamente ayuda a entender como se obtiene el resultado, en vez de dar código ejecutar y resolver el problema (también tiene menos instrucciones y variables... ;))

Personalmente prefiero indicar el camino a seguir, o indicar algún algoritmo por donde buscar... y no creo que encuentres nunca en este foro ni en otro  un código a mi nombre, me parece que el conocimiento es libre, y prefiero pasar por el eterno Aprendiz, antes de creer ya ahora que mi taza  está colmada de té... y siempre aportaré algo a la taza de otro, si el tiene sed, y si su taza está medio vacía, antes de citar y retrucar a los demás... Un cordial  saludo.