[Pequeña Ayuda] Programa que evalua a una chica segun su edad, tet4s y mas

Iniciado por traviatØ, 23 Octubre 2012, 17:23 PM

0 Miembros y 1 Visitante están viendo este tema.

traviatØ

Hola  ;D , sucede que estaba practicando algo de C, escribi un codigo, me compila bien y todo pero al llegar a cierta parte del programa me dice "El Programa a dejado de funcionar" y se cierra, utilizo DevC++ como ide y compilador, este es el codigo

#include <stdio.h>

// Prueba de typedef y pasar una estructura completa a una funcion por valor
typedef struct chica
{
       char *nombre;
       int edad;
       float tetas;
       char *contextura;
} Chica;

float Promedio(Chica);

int main()
{
    Chica Nueva;
   
    printf("Ingrese Nombre de la chica: ");
    scanf("%s", &Nueva.nombre);
    printf("\nIngrese Edad: ");
    scanf("%d", &Nueva.edad);
    printf("\nIngrese tamaño (talla) de las tetas (en decimales): ");
    scanf("%f", &Nueva.tetas);
    printf("\nIngrese contextura: ");
    scanf("%s", &Nueva.contextura);
   
    printf("\n* * * * El Promedio de %s es: %.2f * * * *", Nueva.nombre, Promedio(Nueva)); //Esta linea no se ejecuta o falla
    scanf("%s", &Nueva.contextura);//Instruccion para evitar que se cierre el programa
   

}

float Promedio(Chica Candidata)
{
      float Promedio = 0;
      if(Candidata.edad>=16 && Candidata.edad<=26)
      {
      Promedio = Promedio + 35;
      }
      else if(Candidata.edad>=12 && Candidata.edad <=15)
      {
      Promedio = Promedio + 15.7;
      }
      else if (Candidata.edad<=11 && Candidata.edad>=40)
      {
      Promedio = Promedio + 5.4;
      }
      else
      {
      Promedio = Promedio + 2.3;
      }
   
      if(Candidata.tetas>=36 && Candidata.tetas>=40)
      {
      Promedio = Promedio + 35;
      }
      else if( Candidata.tetas<=35 && Candidata.tetas>=32)
      {
      Promedio = Promedio +15.7;
      }
      else
      {
      Promedio = Promedio + 5.3;
      }
     
     
      if(Candidata.contextura == "delgada" || Candidata.contextura == "flaca" || Candidata.contextura == "al pelo")
      {
      Promedio = Promedio + 30;
      }
      else if( Candidata.contextura == "gorda")
      {
      Promedio = Promedio - 2;
      }
      else
      {
      Promedio = Promedio + 20.7;
      }
     
     
      return Promedio;
}


Saludos
                     

satu

Hola!!

Tienes que reservar memoria para nombre y para contextura, y después liberarla.

Y las cadenas de caracteres no se comparan con ==, se utiliza strcmp

Saludos
Breakbeat como forma de vida