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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Ayuda con Algoritmo C++
« en: 23 Julio 2014, 22:17 pm »

Hola a todos. soy estudiante de informatica y nuevo en esto de programar, y estoy necesitando ayuda con la resolucion de un ejercicio.

el ej. es el siguiente: utilice la definicion typedef struct{char ape_nom[40]; int edad; float altura,peso}paciente; para diseñar una funcion llamada masacorp55 que obtenga los datos del paciente mayor a 55 años de mayor valor de masa corporal. la funcion debe recibir entre sus parametros un arreglo con los datos de N pacientes. masa corporal= peso/altura^2. escriba un prog. cliente. que ingrese los datos de n pacientes y muestre los dtos de la persona de mayor masa corporal.

hasta ahora este es el algoritmo que pude programar:
Código
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. typedef struct{ char ape_nom[40];
  6. int edad; float altura, peso;} paciente;
  7.  
  8. paciente masacorp55(paciente x[], int n){
  9. float masa; float maxmas=1;
  10. for (int i=0; i<n; i++){
  11. if (x[i].edad>55){
  12. masa=x[i].peso/(x[i].altura*x[i].altura);
  13. if(masa>maxmas){
  14. maxmas=masa;
  15. x[i]=maxmas;
  16. }
  17. }
  18. }
  19. return x[i];
  20. }
  21.  
  22. int main(int argc, char *argv[]) {
  23. paciente A[1000]; int n;
  24. cout<<"ingrese num. de pacientes";
  25. cin>>n; int i;
  26. for (int i=0; i<n; i++){
  27. cout<<"nombre del paciente";
  28. cin.getline (A[i].ape_nom,40);
  29. cout<<"edad";
  30. cin>>A[i].edad;
  31. cout<<"altura";
  32. cin>>A[i].altura;
  33. cout<<"peso";
  34. cin>>A[i].peso;
  35. }
  36.  
  37. masacorp55(A[i],n);
  38. cout<<masacorp55;
  39.  
  40. return 0;
  41. }

pero me tira un error. no puedo asignar a A, maxmas ya que uno es un struct y el otro tipo float.  Que sugerencias y correcciones pueden aportarme?. gracias por su tiempo


« Última modificación: 23 Julio 2014, 22:29 pm por Eternal Idol » En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Ayuda con Algoritmo C++
« Respuesta #1 en: 24 Julio 2014, 00:08 am »

Hola, como dices no puedes asignar directamente un float a una estructura, pero es que no entiendo la lógica de tu programa, porque lo que debes devolver es la persona que tiene mayor masa corporal, entonces lo que tienes que hacer es que mientras vas calculando:

- Si la persona i tiene una masa corporal x
- Si la persona i+1 tiene una masa corporal y mayor que x , entonces la masa corporal máxima para esas dos personas es y. Y el índice de la estructura es i+1. Por tanto:

Código
  1. paciente masacorp55(paciente x[], int n)
  2. {
  3.    float masa;
  4.    float maxmas=1;
  5.    int indicePacienteMaxMasa = 0;
  6.    for (int i=0; i<n; i++)
  7.    {
  8.        if (x[i].edad>55)
  9.        {
  10.            masa=x[i].peso/(x[i].altura*x[i].altura);
  11.            if(masa>maxmas)
  12.            {
  13.                maxmas=masa;
  14.                indicePacienteMaxMasa = i; //Para ver quien es de la estructura y retornar ese
  15.            }
  16.        }
  17.    }
  18.    return x[indicePacienteMaxMasa];
  19. }
Aun así hay errores en tu código, como que no puedes poner un cout con una estructura. Y que no puedes devolver un puntero a la estructura paciente en esa función(por lo de return x) si has definido que se retornaría una estructura paciente.

Saludos.


En línea

Regístrate en
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Ayuda con Algoritmo C++
« Respuesta #2 en: 24 Julio 2014, 00:35 am »

Aun así hay errores en tu código, como que no puedes poner un cout con una estructura.

Para acceder a los miembros de la estructura devuelta por la función, puede hacerlo de esta forma:

Código
  1. cout << masacorp55(A, n).ape_nom << endl;

Edito:

Para imprimir todos los datos del paciente con mayor masa corporal:

Código
  1. paciente datos =  masacorp55(A, n);
  2.  
  3.    cout << datos.ape_nom << endl;
  4.    cout << datos.edad << endl;
  5.    cout << datos.altura << endl;
  6.    cout << datos.peso << endl;

Saludos
« Última modificación: 24 Julio 2014, 01:06 am por Blaster » En línea

marchiali

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ayuda con Algoritmo C++
« Respuesta #3 en: 24 Julio 2014, 00:57 am »

muuchas gracias por la ayuda me solucionaron las dudas.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
dime el algoritmo que más te gusta... ejm:algoritmo del avestruz
Programación General
jhonatanAsm 0 4,473 Último mensaje 13 Mayo 2011, 01:30 am
por jhonatanAsm
Ayuda Algoritmo
Programación General
Negr0 8 4,686 Último mensaje 25 Junio 2011, 11:27 am
por Negr0
Ayuda con un algoritmo
Programación Visual Basic
$Edu$ 7 3,162 Último mensaje 25 Octubre 2011, 01:51 am
por $Edu$
¡AYUDA URGENTE! ALGORITMO
Dudas Generales
mariele31 3 2,118 Último mensaje 29 Marzo 2022, 18:32 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines