/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Ayuda con app en C++ para calcular el IMC

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
MeluGnz



Registrado: 08 Ago 2013
Mensajes: 2

MensajePublicado: 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 <= 1Cool;
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

MensajePublicado: 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:
Código:
int nombre[100];

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

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com