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)
| | |-+  Duda calcular radio círculo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Duda calcular radio círculo  (Leído 8,455 veces)
welchu

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Duda calcular radio círculo
« 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;
   

   
}


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Duda calcular radio círculo
« Respuesta #1 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.


« Última modificación: 10 Febrero 2014, 11:44 am por eferion » En línea

Gh057


Desconectado Desconectado

Mensajes: 1.190



Ver Perfil
Re: Duda calcular radio círculo
« Respuesta #2 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.
En línea

4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Duda calcular radio círculo
« Respuesta #3 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.
En línea

welchu

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Duda calcular radio círculo
« Respuesta #4 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.
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Duda calcular radio círculo
« Respuesta #5 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.
En línea

Gh057


Desconectado Desconectado

Mensajes: 1.190



Ver Perfil
Re: Duda calcular radio círculo
« Respuesta #6 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.
En línea

4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Duda calcular radio círculo
« Respuesta #7 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?
En línea

Gh057


Desconectado Desconectado

Mensajes: 1.190



Ver Perfil
Re: Duda calcular radio círculo
« Respuesta #8 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.
En línea

4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
welchu

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Duda calcular radio círculo
« Respuesta #9 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..
En línea

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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda Radio Kenworth
Electrónica
Crackptus^^ 0 4,041 Último mensaje 5 Junio 2004, 06:21 am
por Crackptus^^
calcular area de un circulo en javascript
Desarrollo Web
bibisita 2 21,633 Último mensaje 18 Abril 2012, 19:15 pm
por luismmp007
[Duda]Sistema Radio.
Electrónica
MonzterKuki. 7 5,314 Último mensaje 14 Agosto 2010, 23:39 pm
por simorg
formula para calcular radio d bobina al aire con I, B?
Electrónica
Synth3tik0 2 3,791 Último mensaje 18 Noviembre 2013, 16:32 pm
por Synth3tik0
Un microondas ''estropeado'' por una radio? Duda y curiosidad.
Electrónica
Guarrino 2 2,337 Último mensaje 8 Enero 2019, 06:00 am
por Guarrino
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines