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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  duda sobre estructuras y funciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: duda sobre estructuras y funciones  (Leído 1,993 veces)
fernaEDLP

Desconectado Desconectado

Mensajes: 48


Ver Perfil
duda sobre estructuras y funciones
« en: 30 Enero 2019, 00:38 am »

hola nakamas, espero que estén todos bien, graciass de antemano por toda la ayuda que siempre me dan.
tengo un problema en el que me combinan estructuras con funciones dice lo siguiente:

1. Se desea representar puntos sobre un plano de coordenadas reales x y, y asignarle a cada uno un carácter para identificarlos.
a) Cree una estructura que permita representar estos puntos
b) Declare tres variables del nuevo tipo creado, asígneles valores e imprima en pantalla los datos de cada punto.
c) Cree una función que devuelva la distancia entre dos puntos
d) Cree una función que tome un arreglo de puntos e imprima en pantalla cual es el más alejado del origen.


el punto b no lo hice pero el resto esta mas o menos hecho, mi duda es con el ultimo punto,o sea el d no entiendo muy bien como hacer las llamadas o que pasar como parámetro, me dicen si voy bien encaminado?
hasta ahora hice esto:
Código
  1.  
  2. #include <math.h>
  3. float distancia(float x1,float y1,float x2,float y2);
  4. float distalorigen(float pt[]);
  5. struct punto
  6. {
  7.    float x;
  8.    float y;
  9. }puntos[3];
  10.  
  11. int main()
  12. {
  13. int i;
  14. float dist,resultado;
  15. for(i=0;i<3;i++)
  16. {
  17.    printf("ingrese los datos del punto %d\n",i+1);
  18.    scanf("%f",&puntos[i].x);
  19.    scanf("%f",&puntos[i].y);
  20. }
  21. for(i=0;i<3;i++)
  22. {
  23.    printf("el punto ingresado es %d\n",i+1);
  24.    printf("%f  ",puntos[i].x);
  25.    printf("%f  ",puntos[i].y);
  26.    printf("\n");
  27. }
  28. dist=distancia(puntos[0].x,puntos[0].y,puntos[1].x,puntos[1].y);
  29. printf("la distancia entre los puntos ingresados es \n %.2lf",dist);
  30. resultado=distalorigen(puntos);
  31. printf("el punto mas alejado del origen es \n %.2lf",resultado);
  32.  
  33. }
  34. float distancia (float x1,float y1,float x2,float y2)
  35. {
  36.    float d;
  37.    d=sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1)));
  38.    return d;
  39. }
  40. float distalorigen(float pt[])
  41. {
  42.    int i;
  43.    float mayor=0;
  44.    float R;
  45.    for(i=0;i<3;i++)
  46.    {
  47.        R=sqrt(((pt[i]-0)*(pt[i]-0))+((pt[i+1]-0)*(pt[i+1]-0)));
  48.        if(R>mayor)
  49.        {
  50.            mayor=R;
  51.        }
  52.    }
  53.  
  54.    return mayor;
  55. }
  56.  
  57.  

en la linea 32 me salta un error y me dice que no le puedo pasar el arreglo tipo float de la estructura a la función, tampoco se como especificar que punto es el mayor una vez que calculo cual R es el mayor, disculpen si tengo algún error conceptual groso, es que me quema la cabeza esta materia


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: duda sobre estructuras y funciones
« Respuesta #1 en: 30 Enero 2019, 13:15 pm »

Bueno vamos a ir analizando por partes:
En el enunciado dice:
Citar
Se desea representar puntos sobre un plano de coordenadas reales x y, y asignarle a cada uno un carácter para identificarlos.
Por lo que en el punto a), en la estructura te falta una variable más que sea de tipo <char>. Que es como el nombre del punto.

En cuanto al apartado b), te diría que las variables de tipo <Punto> es mejor que las crees dentro del <main> para que las variables sean locales. No es recomendable crear las variables globales, ya que el código pierde seguridad. Por lo demás todo bien.

En el apartado c), si tienes una estructura de tipo <Punto>, no pases las coordenadas sueltas a la función. Te recomiendo que modifiques esa función y sea algo así:
Código
  1. float distancia(Punto p1, Punto p2);

En el apartado d), si no te deja pasar un array de <Puntos> como parámetro es porque estás declarando que el parámetro es un array de <float>. Además de eso, cuando se pasa un array como parámetro se recomienda pasar su tamaño también para poder recorrerlo (y tener el tamaño en una variable):
Código
  1. // struct Punto
  2. Punto masAlejado(Punto [], int);
  3. int main(){
  4.    const int NUM_PUNTOS = 3;
  5.    Punto puntos[NUM_PUNTOS];
  6.    // el resto del programa
  7.    Punto mas_alejado = masAlejado(puntos, NUM_PUNTOS);
  8.    // muestras el punto mas alejado
  9. }
Te dejo esa plantilla para que la termines de implementar si te parece buena idea, claro :-X. Te comento, te pide calcular el punto más alejado, no la mayor distancia, entonces la función devuelve el punto más alejado, no su distancia.

Ya me contarás si tienes algún problema o alguna duda sobre alguna de las cosas que te he comentado. Suerte:-X
PD: En la función <masAlejado()> puedes crear un punto C(0,0) y usar la función que has creado antes... :silbar: :silbar:


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
fernaEDLP

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: duda sobre estructuras y funciones
« Respuesta #2 en: 31 Enero 2019, 00:27 am »

hola gracias por tu respuesta, ya lo estoy corrigendo el código, te hago una consulta, en el punto b cuando te pide tres variables mas del tipo creado, me esta pidiendo que cree en vez de tener solamente x e y en la estructura, que cree 3 mas o sea ponele, float x float y float z float m float l, ya se que no queres que las declare de forma global, pero en el caso de la estructura no te queda mas opción que declararlas ahi o no?, hasta ahora los ejemplos que vi de estructuras siempre se declara la estructura y después se la llama desde el main
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: duda sobre estructuras y funciones
« Respuesta #3 en: 2 Febrero 2019, 14:56 pm »

Cuando te pide en el apartado b) crear 3 variables de ese tipo se refiere a crear 3 variables del tipo <Punto>. Lo puedes hacer como lo has hecho con un array o crear 3 variables independientes. Para trabajar con ellos en este caso es más sencillo como lo has hecho tú para poder manipularlo todo con un <for>.

Y las estructuras no es obligatorio declararlas así. Te muestro a continuación ambas formas de declarar instancias (objetos) de una estructura:
VARIABLES GLOBALES
Código
  1. struct Nombre{
  2.    // miembros
  3. } n1, n2, n_array[2];
  4.  
  5. int main(){
  6.    // n1 n2 y n_array son objetos globales
  7. }

VARIABLES LOCALES
Código
  1. struct Nombre{
  2.    // miembros
  3. };
  4.  
  5. int main(){
  6.    Nombre n1, n2, n_array[2];
  7.    // n1 n2 y n_array son objetos locales
  8. }

Espero que esto te sirva. Si llegas a trabajar con C++ y con clases se puede hacer igual que aquí. Suerte :-X
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
fernaEDLP

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: duda sobre estructuras y funciones
« Respuesta #4 en: 2 Febrero 2019, 20:03 pm »

graciasss!!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C] Estructuras y punteros a funciones
Programación C/C++
Amadeo Magnus 1 6,272 Último mensaje 13 Octubre 2010, 15:05 pm
por Karman
duda sobre estructuras y funciones
Programación C/C++
asdavid 3 2,813 Último mensaje 29 Noviembre 2012, 00:01 am
por durasno
Duda rapida sobre estructuras
Programación C/C++
AlucardDracula 2 1,980 Último mensaje 23 Diciembre 2013, 22:40 pm
por AlucardDracula
[?]Estructuras y funciones.
Programación C/C++
Ultra Holocaust 0 2,705 Último mensaje 22 Junio 2015, 05:02 am
por Ultra Holocaust
DUDA SOBRE ESTRUCTURAS REPETITIVAS EN ESTE PROBLEMA!! C++
Programación C/C++
larregui15 2 1,890 Último mensaje 17 Julio 2015, 00:00 am
por DarK_FirefoX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines