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
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 (http://www.cplusplus.com/reference/clibrary/cstring/strcmp/)
Saludos