problema al imprimir una estructura

Iniciado por andresg4, 20 Abril 2018, 08:11 AM

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

andresg4

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.

#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;
}