| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
MeluGnz
Registrado: 08 Ago 2013 Mensajes: 2
| Publicado: 08/08/2013 2:53 pm | | | Título: Ayuda con app en C++ para calcular el IMC |
| Hola a todos, me han pedido que cree una aplicación que corra en windows que debe tener datos estadísticos etc... Mi aplicacion basicamente funciona escribiendo el nombre de la persona y que pregunte su estatura y peso, una vez ingresados los datos debe mostrar por pantalla el IMC de esa persona [altura/peso*peso] ... debe tener capacidad para 100 personas y cuando el usuario quiera, pueda consultar el promedio de IMC y el promedio de peso y de estatura, de todos los usuarios ingresados... a la vez quiero que se pueda consultar los datos de una persona ya ingresada... buscando su nombre, muestre en pantalla los datos.. y que también sea posible eliminar una persona. Ahora esto es lo que he logrado hacer... pero ya no se mas.. tengo grandes problemas.. y no se como revisar si lo que hice esta bien, intento compilarla pero me arroja 1. undefned reference to "quitar(int)" 2. Id returned 1 exit status.
si alguien me pudiera ayudar a terminar esta app seria magnifico :C ... les dejo lo que tengo
porfavor ayuda :C
#include <windows.h> #include <stdio.h> #include <stdlib.h> #include <ctype.h>
int nombre[100]; float peso[100],altura[100],IMC[100];
int agregar(int nombre, float peso, float altura); int quitar(int nombre); void modificar(int nombre, int datos);
int buscar(int nombre);
int main() { int opcion; int salir = 0; int i;
for(i=0; i<100; i++); nombre[i]=-1; do { printf("1- Agregar Persona\n"); printf("2- Quitar Persona\n"); printf("3- Modificar Persona\n"); printf("4- Salir\n");
scanf("&d", &opcion);
switch(opcion) { case 1: { int nom; float p, a; float IMC;
printf("Digite Nombre: "); scanf("%c", &nom);
printf("Introduzca peso en kilogramos: "); scanf("%f", &p);
printf("Introdusca altura en metros: "); scanf("%f", &a);
IMC = p/(a*a); scanf("%3.1f", &IMC);
if(IMC <= 1 ; printf("Esta bajo peso, su IMC es de %3.1f",IMC);
if(18<IMC<25); printf("Su peso es normal, su IMC es de %3.1f",IMC);
if(25<=IMC<=30); printf("Esta sobre peso, su IMC es de %3.1f",IMC);
if(IMC<30); printf("Obesidad Morbida!, su IMC es de %3.1f",IMC);
break; } case 2: { int nom;
printf("Ingrese nombre: "); scanf("%c", &nom);
int nombre = quitar(nombre);
if(nombre == -1) printf("El nombre no existe\n"); else if(nombre ==1) printf("Persona eliminada\n");
break; } case 3: { } case 4: { salir = 1; break; } default: { printf("Ingrese una opcion valida\n"); } }
} while(salir == 0); }
desde ya se los agradesco mucho :C |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 7516 Ubicación: Mexico
| Publicado: 10/08/2013 7:26 am | | | Título: |
| Hola
Bienvenido a los foros. Por favor lee sus reglas.
El programa tiene demasiados errores, algunos de ellos críticos:
* No puedes utilizar esto:
Para almacenar una lista de nombres ya que es un array de enteros. En su lugar debes utilizar un array donde cada elemento sea un array de caracteres. Lo mejor (para no complicar demasiado el programa) es almacenar solo el primer nombre. Para ello utilizas un array declarado de esta forma:
| Código: | char nombre[100][32]; |
En el puedes almacenar los nombres cada uno con un máximo de 31 caracteres.
* Para imprimir una cadena literal terminada con el avance de linea o '\n' lo mas sencillo es utilizar la función puts.
* Al pedir la opcion al usuario:
| Código: | scanf("&d", &opcion); |
Utilizas la cadena de formato "&d", debes cambiarla a "%d".
* Debes colocar cada operación en funciones, ya las tienes declaradas al principio del programa pero no las usas.
* No tienes un mecanismo para llevar el conteo del numero de personas.
* Varios mas ...
El programa con las correcciones y con la función para agregar personas funcionando correctamente:
| Código: | #include <stdio.h> #include <stdlib.h>
char nombre[100][32]; double peso[100]; double altura[100]; double IMC[100]; int num_personas;
void agregar(void); void buscar(void); void quitar(void); void modificar(void);
int main(void) { int opcion; int salir; int i; for(i = 0; i < 100; i++){ nombre[i][0] = '\0'; peso[i] = 0.0; altura[i] = 0.0; IMC[i] = 0.0; } num_personas = 0; salir = 0; do { puts("1) Agregar Persona"); puts("2) Quitar Persona"); puts("3) Modificar Persona"); puts("4) Salir"); scanf("%d", &opcion); switch(opcion){ case 1: agregar(); break; case 2: quitar(); break; case 3: modificar(); break; case 4: salir = 1; break; default: puts("Opcion no valida!"); break; } }while (!salir); return 0; }
void agregar(void) { puts("Ingrese nombre:"); scanf("%s", nombre[num_personas]); puts("Introduzca peso en kilogramos:"); scanf("%lf", &peso[num_personas]); puts("Introdusca altura en metros:"); scanf("%lf", &altura[num_personas]); IMC[num_personas] = peso[num_personas] / (altura[num_personas] * altura[num_personas]); if (IMC[num_personas] <= 18) printf("Esta bajo peso"); else if (IMC[num_personas] > 18 && IMC[num_personas] < 25) printf("Su peso es normal"); else if (IMC[num_personas] >= 25 && IMC[num_personas] <= 30) printf("Esta sobre peso"); else printf("Obesidad Morbida!"); printf(", su IMC es de %3.1f\n", IMC[num_personas]); num_personas++; }
void buscar(void) { /* ... */ }
void quitar(void) { /* ... */ }
void modificar(void) { /* ... */ } |
Falta agregar la lógica de las otras tres operaciones (buscar, eliminar y editar) y, una vez terminado, hay que modificarlo para que no utilice variables "globales" (en su lugar se debe utilizar el paso de argumentos y la emulación del paso por referencia). Eso te toca a ti.
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language |
| | Volver arriba | |  | MeluGnz
Registrado: 08 Ago 2013 Mensajes: 2
| Publicado: 10/08/2013 12:22 pm | | | Título: |
| wooooww no sabes cuanto te agradezco esta ayuda, me pidieron crear esa app, peor no me enseñaron como... continuare desde ahí.. muchiiiiisimas gracias!! |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |