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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


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

Desconectado Desconectado

Mensajes: 14


Ver Perfil
duda
« en: 8 Marzo 2018, 11:48 am »

Hola,

estoy iniciandome en programación, mi duda es la siguiente: modificando un ejercicio en C para intentar que me calcule el IMC pero no se porque me da error, adjunto la imagen

gracias a todos!

http://s2.subirimagenes.com/privadas/previo/thump_2433259duda.jpg


« Última modificación: 8 Marzo 2018, 11:53 am por iordee » En línea

nonokario

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: duda
« Respuesta #1 en: 8 Marzo 2018, 18:19 pm »

Muy chiquita la imagen. No llego a leer nada!


En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: duda
« Respuesta #2 en: 8 Marzo 2018, 20:20 pm »



Me imagino que has definido una estructura y has asignado una operación dentro a un miembro de dicha estructura. Eso no se hace así. Si quieres asignar una operación debes hacerla fuera de la estructura tomando el miembro que te interese, en este caso IMC. Ejemplo:

Código:
struct MiEstructura ms;

ms.IMS=5.1;
« Última modificación: 8 Marzo 2018, 20:23 pm por srWhiteSkull » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: duda
« Respuesta #3 en: 8 Marzo 2018, 20:40 pm »

A ver:
Dentro de una estructura no se puede poner código. Ahí intentas que IMC sea calculado por una operación matemática pero eso debes hacerlo en otro sitio.
Y aunque fuera C++, que sí permite código éste debe encapsulado en un método, no se puede escribir directamente.
Siendo coherentes con el código deberías eliminar todo lo referente al IMC de la estructura ya que si dejas allí la variable en cualquier momento se podría cambiar falseando el dato.

Haz una función que reciba la estructura, calcule la IMC a partir de sus datos y lo devuelva.

De todas formas veo algo raro con las funciones PrintPatient#(tPatient p#);
¿Las funciones hacen cosas diferentes? ya que tPatient, tPatient2 y tPatient3 son el mismo tipo de dato ¿porqué hay 3? Una cosa es el tipo de dato y la otra las variables.
Si las funciones PrintPatient# son todas iguales te basta que exista solo una y le vayas pasando las diferentes variables de los pacientes. Algo así:

Código:
tPatient p1, p2, p3;

// Cargas los datos de p1, p2 y p3

PrintPatient(p1);
PrintPatient(p2);
PrintPatient(p3);
En línea

javieer

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: duda
« Respuesta #4 en: 8 Marzo 2018, 23:42 pm »

gracias a los dos por contestar!! ahora tengo algo asi pero me da error, perdonad pero soy noob :huh: :
En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: duda
« Respuesta #5 en: 9 Marzo 2018, 00:00 am »

No hombre, estás muy verde, mira este ejemplo e intenta asimilarlo :

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. // En este ambito se hacen las declaraciones GLOBALES
  5. typedef struct ms {
  6.    float IMC;
  7. } loquesea;
  8. /*
  9.  *
  10.  */
  11. int main(int argc, char** argv) { // Ambito funcion (aqui se ponen las operaciones)
  12.    struct ms m; // declaramos nuestra estructura m de tipo ms LOCALMENTE
  13.    m.IMC=1.0;
  14.  
  15.    printf("%f",m.IMC);
  16.    system("PAUSE");
  17.    return (EXIT_SUCCESS);
  18. }

Lo ideal es que busques una guía de C para continuar,
https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Estructuras_y_Uniones
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: duda
« Respuesta #6 en: 9 Marzo 2018, 01:12 am »

Como te decía, la estructura no debe guardar el IMC, lo debes sacar de forma que no se pueda modificar, y eso es con una función.

Algo así:
Código:
float get_IMC(tPatient p) {
    return weight/(height*height);
}

Cada vez que en el código debas obtener el IMC de alguien usas la función.

¿Por qué? Imagínate que IMC se guarda en la estructura y la calculas:
Código:
p.IMC = p.wheight/(height*height);

Ahora tienes en p.IMC el índice de masa corporal, pero eso no evita que en cualquier otro punto del programa se haga
Código:
p.IMC = 25;

A partir de este momento el IMC será 25 porqué sí y no el resultado del cálculo.
En línea

javieer

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: duda
« Respuesta #7 en: 9 Marzo 2018, 11:42 am »

gracias!, creo que algo aunque sea muy poco voy pillando.. jeje ahora estoy intentando hacer la media del peso de tres pacientes, mi idea es declarar una cariable tipo entero y almacenar weight.p1, weight.p2 y weight.p3 no se como hacelo lo que tengo en la cabeza es:

float totalweight = (weight.p1+weight.p2+weight.p3)/3 pero al hacerlo siempre me dice que no estan declaradas las variables, perdonad por las gilipolleces que digo pero es que acabo de empezar  :xD
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: duda
« Respuesta #8 en: 9 Marzo 2018, 13:47 pm »

Es al revés p1.wheight. Primero va la variable de tipo estructura (que es quien engloba) y después su variable interna.
En línea

javieer

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: duda
« Respuesta #9 en: 11 Marzo 2018, 12:21 pm »

gracias me habia equivocado al escribirlo, ahora ya he conseguido que me funcione el programa ahora tengo un switch case que me indica que un paciente es fumador o no lo es, o si es hombre o mujer pero tengo que mostrar las pacientes que sean mujer y fumadoras como hago para unir esas dos variables?
En línea

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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
revenge1252 9 9,735 Último mensaje 13 Febrero 2008, 21:41 pm
por revenge1252
Duda duda y duda de Metasploit
Bugs y Exploits
huber_nomas 4 5,772 Último mensaje 17 Febrero 2012, 14:00 pm
por MauroMasciar
Duda facil, [VIDEO QUE EXPLICA MI DUDA]
Diseño Gráfico
Ngeooz 6 8,837 Último mensaje 2 Diciembre 2013, 19:33 pm
por Ngeooz
[DUDA] Cambiar letra de unidad a archivo con un Batch [DUDA] « 1 2 »
Windows
MrMaticool 10 11,266 Último mensaje 12 Febrero 2014, 17:55 pm
por MrMaticool
[DUDA] Crear servidor telnet o ssh (Windows y Linux) y otra duda
Redes
MDd2 4 3,994 Último mensaje 13 Abril 2017, 18:29 pm
por Randomize
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines