hola anons hay alguno de uds que me pueda ayudar con mi linea de codigo ya que cuando leo los datos y luego le doy a la opcion de imprimir esto produce que se salga del ptrograma alguna que me pueda colaborar muchas gracias.
Código (c) [Seleccionar]
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
//MACROS
#define limpiarpantalla system("cls")
#define pausarpantalla system("pause")
#define limpiarbuffer fflush(stdin)
//DEFINIR
typedef enum SISTEMAOPERATIVO {Windows=1,Mac_os,Linux,Solaris} SO;
const char *SISTEMA_OPERATIVO []={"Windows","Mac os","Linux","Solaris","No disponible"};
typedef enum MESES {enero=1,febrero,marzo,abril,mayo,junio,julio,agosto,septiembre,octubre,noviembre,diciembre} M;
const char *MESES_ES[]={"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"};
typedef enum GENERACION {Cuarta_gen=1,Quinta_generacion,Sexta_generacion,Septima_generacion,Octava_generacion}P;
const char *GEN_PRO[]={"4ta Generacion","5ta Generacion","6ta Generacion","7ta Generacion","8va Generacion"};
typedef unsigned short int usi;
//STRUCT
struct computador{
SO sistema;
M meses;
unsigned int year;
usi dia;
char propietario[100];
char procesador[20];
P generacion_procesador;
usi RAM;
int precio;
usi Disco_Duro;
int Aux;
}persona[100];
// IMPRIMIR MENU
void Menu (){
printf("PC LOOP MENU:\n");
printf("1.Ingresa Datos:\n2.Ordenar Datos\n3.Imprimir Datos\n4.Estadistica datos\n5.Salir\n");
printf("Por favor Ingrese opcion:");
}
//LEER DATOS
int Ingresar(){
int n=1,i=0;
char seguir='S';
while(i<n && toupper(seguir)=='S'){
printf("REGISTRO DE DATOS Numero=%i\n",i+1);
limpiarbuffer;
printf("Digite su nombre:\n");
scanf("%s",persona[i].propietario);
limpiarbuffer;
printf("Sistema Operativo:\n 1.Windows\n 2.Mac Os\n 3.Linux \n 4.Solaris");
scanf("%i",&persona[i].sistema);
limpiarbuffer;
printf("Digite el nombre del procesador:\n");
scanf("%s",persona[i].procesador);
limpiarbuffer;
printf("Generacion del procesador:\n 1.4ta Gneracion\n 2.5ta Generacion\n 3.6ta Generacion\n 4.7ta Generacion\n 5.8va Generacion");
scanf("%i",&persona[i].generacion_procesador);
limpiarbuffer;
printf("Cuantas gigas de RAM:\n");
scanf("%u",&persona[i].RAM);
limpiarbuffer;
printf("Espacio del disco duro:\n");
scanf("%i",&persona[i].Disco_Duro);
limpiarbuffer;
printf("Ingrese el precio:\n");
scanf("%i",&persona[i].precio);
limpiarbuffer;
printf("ingrese el dia de ingreso:\n");
scanf("%u",&persona[i].dia);
limpiarbuffer;
printf("ingrese el mes:\n 1.Enero\n 2.Febrero\n 3.Marzo\n 4.Abril\n 5.Mayo\n 6.Junio\n 7.Julio\n 8.Agosto\n 9.Septiembre\n 10.Octubre\n 11.Noviembre\n 12.Diciembre\n");
scanf("%i",&persona[i].meses);
limpiarbuffer;
printf("Ingrese el año:\n");
scanf("%i",&persona[i].year);
limpiarbuffer;
printf("Desea seguir:\n S-->si\n N-->no\nPor favor ingresa opcion valida:");
scanf ("%c", &seguir);
limpiarbuffer;
limpiarpantalla;
i++;
if(toupper(seguir)=='S') n++;}
return n;
}
//ORGANIZAR DATOS
void Ordenar(struct computador persona[], int n){
int i,j;
struct computador Aux;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if (strcmp (persona[j].propietario,persona[i].propietario) > 0){
Aux = persona[j];
persona[j] = persona[i];
persona[i] = Aux;
}
}
}
}
//IMPRIMIR DATOS
void Imprimir(struct computador persona[],int n){
int i;
for(i=0;i<n;i++){
printf("REGISTRO N.%i \n",i+1);
printf("Nombre del propietario:%s\n",persona[i].propietario);
printf("Sistema Operativo:%s\n",persona[i].sistema);
printf("Nombre del procesador:%s\n",persona[i].procesador);
printf("Generacion del procesador:%s\n",persona[i].generacion_procesador);
printf("tiene %i gigas de ram\n",persona[i].RAM);
printf("Espacio disco duro:%i gigas\n",persona[i].Disco_Duro);
printf("precio:%i\n",persona[i].precio);
printf("fecha de ingreso:%i,%s,%i\n",persona[i].dia,persona[i].meses,persona[i].year);
printf("<---------------------------------------------------------------------------------------->\n");
}
}
//MAIN
int main() {
int ingreso=0,opcion,n;
int contador[]={0,0,0,0,0};
char continuar='s';
printf("BIENVENIDO A PC LOOP:\n");
do{
Menu();
scanf("%i",&opcion);
switch(opcion){
case 1:if(ingreso==0){
n=Ingresar();
ingreso++;
break;
} else printf("ya hay datos\n");
break;
case 2:Ordenar(persona,n);break;
case 3:Imprimir(persona,n);break;
case 4:printf("w");break;
default: printf("Opcion no valida");
}
}
while(opcion!=5);
return 0;
}