Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: andresg4 en 20 Abril 2018, 08:11 am



Título: problema al imprimir una estructura
Publicado por: andresg4 en 20 Abril 2018, 08:11 am
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
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<math.h>
  5. //MACROS
  6. #define limpiarpantalla system("cls")
  7. #define pausarpantalla  system("pause")
  8. #define limpiarbuffer   fflush(stdin)
  9.  
  10. //DEFINIR
  11. typedef enum SISTEMAOPERATIVO {Windows=1,Mac_os,Linux,Solaris} SO;
  12. const char *SISTEMA_OPERATIVO []={"Windows","Mac os","Linux","Solaris","No disponible"};
  13.  
  14. typedef enum MESES {enero=1,febrero,marzo,abril,mayo,junio,julio,agosto,septiembre,octubre,noviembre,diciembre} M;
  15. const char *MESES_ES[]={"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"};
  16.  
  17. typedef enum GENERACION {Cuarta_gen=1,Quinta_generacion,Sexta_generacion,Septima_generacion,Octava_generacion}P;
  18. const char *GEN_PRO[]={"4ta Generacion","5ta Generacion","6ta Generacion","7ta Generacion","8va Generacion"};
  19.  
  20. typedef unsigned short int usi;
  21.  
  22. //STRUCT
  23.  
  24. struct computador{
  25. SO sistema;
  26. M meses;
  27. unsigned int year;
  28.    usi dia;
  29.    char propietario[100];
  30.    char procesador[20];
  31.    P generacion_procesador;
  32.    usi RAM;
  33.    int precio;
  34.    usi Disco_Duro;
  35.    int Aux;
  36.  
  37. }persona[100];
  38.  
  39. // IMPRIMIR MENU
  40.  
  41. void Menu (){
  42. printf("PC LOOP MENU:\n");
  43. printf("1.Ingresa Datos:\n2.Ordenar Datos\n3.Imprimir Datos\n4.Estadistica datos\n5.Salir\n");
  44. printf("Por favor Ingrese opcion:");
  45. }
  46.  
  47. //LEER DATOS
  48. int  Ingresar(){
  49. int n=1,i=0;
  50. char seguir='S';
  51.  
  52. while(i<n && toupper(seguir)=='S'){
  53.  
  54. printf("REGISTRO DE DATOS Numero=%i\n",i+1);
  55. limpiarbuffer;
  56. printf("Digite su nombre:\n");
  57. scanf("%s",persona[i].propietario);
  58. limpiarbuffer;
  59. printf("Sistema Operativo:\n 1.Windows\n 2.Mac Os\n 3.Linux \n 4.Solaris");
  60. scanf("%i",&persona[i].sistema);
  61. limpiarbuffer;
  62. printf("Digite el nombre del procesador:\n");
  63. scanf("%s",persona[i].procesador);
  64. limpiarbuffer;
  65. printf("Generacion del procesador:\n 1.4ta Gneracion\n 2.5ta Generacion\n 3.6ta Generacion\n 4.7ta Generacion\n 5.8va Generacion");
  66. scanf("%i",&persona[i].generacion_procesador);
  67. limpiarbuffer;
  68. printf("Cuantas gigas de RAM:\n");
  69. scanf("%u",&persona[i].RAM);
  70. limpiarbuffer;
  71. printf("Espacio del disco duro:\n");
  72. scanf("%i",&persona[i].Disco_Duro);
  73. limpiarbuffer;
  74. printf("Ingrese el precio:\n");
  75. scanf("%i",&persona[i].precio);
  76. limpiarbuffer;
  77. printf("ingrese el dia de ingreso:\n");
  78. scanf("%u",&persona[i].dia);
  79. limpiarbuffer;
  80. 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");
  81. scanf("%i",&persona[i].meses);
  82. limpiarbuffer;
  83. printf("Ingrese el año:\n");
  84. scanf("%i",&persona[i].year);
  85. limpiarbuffer;
  86. printf("Desea seguir:\n S-->si\n N-->no\nPor favor ingresa opcion valida:");
  87. scanf ("%c", &seguir);
  88. limpiarbuffer;
  89. limpiarpantalla;
  90. i++;
  91.  
  92. if(toupper(seguir)=='S') n++;}
  93.  
  94. return n;
  95. }
  96.  
  97. //ORGANIZAR DATOS
  98. void Ordenar(struct computador persona[], int n){
  99. int i,j;
  100. struct computador Aux;
  101. for(i=0;i<n;i++){
  102.  
  103.     for(j=0;j<n;j++){
  104.  
  105.     if (strcmp (persona[j].propietario,persona[i].propietario) > 0){
  106.  
  107.         Aux = persona[j];
  108.  
  109.         persona[j] = persona[i];
  110.  
  111.         persona[i] = Aux;
  112.  
  113.          }
  114.       }
  115. }
  116. }
  117.  
  118. //IMPRIMIR DATOS
  119. void Imprimir(struct computador persona[],int n){
  120. int i;
  121. for(i=0;i<n;i++){
  122. printf("REGISTRO N.%i \n",i+1);
  123. printf("Nombre del propietario:%s\n",persona[i].propietario);
  124. printf("Sistema Operativo:%s\n",persona[i].sistema);
  125. printf("Nombre del procesador:%s\n",persona[i].procesador);
  126. printf("Generacion del procesador:%s\n",persona[i].generacion_procesador);
  127. printf("tiene %i gigas de ram\n",persona[i].RAM);
  128. printf("Espacio disco duro:%i gigas\n",persona[i].Disco_Duro);
  129. printf("precio:%i\n",persona[i].precio);
  130. printf("fecha de ingreso:%i,%s,%i\n",persona[i].dia,persona[i].meses,persona[i].year);
  131. printf("<---------------------------------------------------------------------------------------->\n");
  132. }
  133. }
  134.  
  135. //MAIN
  136.  
  137. int main() {
  138. int ingreso=0,opcion,n;
  139. int contador[]={0,0,0,0,0};
  140. char continuar='s';
  141. printf("BIENVENIDO A PC LOOP:\n");
  142.  
  143. do{
  144. Menu();
  145. scanf("%i",&opcion);
  146. switch(opcion){
  147. case 1:if(ingreso==0){
  148. n=Ingresar();
  149. ingreso++;
  150. break;
  151. } else printf("ya hay datos\n");
  152.       break;
  153. case 2:Ordenar(persona,n);break;
  154. case 3:Imprimir(persona,n);break;
  155. case 4:printf("w");break;
  156. default: printf("Opcion no valida");
  157. }
  158. }
  159.  
  160. while(opcion!=5);
  161.  
  162. return 0;
  163. }