Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Problemas al imprimir un arreglo de estructuras

Estas en el tema de Problemas al imprimir un arreglo de estructuras en el foro de C/C++ en Foros del Web. Buenas tardes amigos de la comunidad forosweb, tengo un pequeño problema me han mandando a crear un pequeño sistema para agregar personas eliminar, modificar,etc,etc pues ...
  #1 (permalink)  
Antiguo 20/03/2014, 14:39
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 8 años
Puntos: 0
Problemas al imprimir un arreglo de estructuras

Buenas tardes amigos de la comunidad forosweb, tengo un pequeño problema me han mandando a crear un pequeño sistema para agregar personas eliminar, modificar,etc,etc pues bien estoy empezando a armarlo poco a poco xD pero me consegui con un error que lo he revisado y cambiado varias veces pero no consigo el error el programa scanea los datos sin problemas he probado imprimirlo en otra parte del programa e imprimir los datos del arreglo sin problema pero al pedir que me muestre todos los datos ingresados en la opcion 2 solo me muestra espacios vacios dejo mi codigo:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5.    typedef struct
  6.       {
  7.               char nombre[30];
  8.               char apellido[30];
  9.               int edad;
  10.               char deporte [30];
  11.               int codigo;
  12.               }datos;
  13.              
  14.               datos dat[10];
  15. void menu(void);
  16. main()
  17. {
  18.  
  19.               menu();
  20. }
  21. void menu(void)
  22. {
  23.  
  24.      int r,a,b,noa,i,acum;
  25.      char re;
  26.      do
  27.      {
  28.      acum=0;
  29.      a=1;
  30.      b=3;
  31.    puts("Bienvenido a el programa TEST \n Escoja una opcion para continuar\n\n");
  32.    puts("1-Agregar atleta\n");
  33.    puts("2-Consultar atletas\n");
  34.    puts("3-Eliminar  atletas\n");
  35.    puts("4-Modificar de forma individual\n");
  36.    puts("5-Modificar de forma general\n");
  37.    scanf("%d",&r);
  38.  
  39.       switch(r)
  40.           {
  41.              case 1:
  42.              system("cls");
  43.              puts("Cuantos atletas desea agregar");
  44.              scanf("%d",&noa);
  45.              system("cls");
  46.  
  47.              printf("Nombre\t\t");
  48.              printf("Apellido\t");
  49.              printf("Edad\t\t");
  50.              printf("Deporte\t\t");
  51.              printf("Codigo \t\t");
  52.               for (i=0;i<noa;i++)
  53.                  {
  54.                gotoxy(a,b);scanf("%s",&dat[i].nombre);
  55.                a+=17;
  56.                gotoxy(a,b);scanf("%s",&dat[i].apellido);
  57.                a+=17;
  58.                gotoxy(a,b);scanf("%d",&dat[i].edad);
  59.                a+=15;
  60.                 gotoxy(a,b);scanf("%s",&dat[i].deporte);
  61.                 a+=16;
  62.                  gotoxy(a,b);scanf("%d",&dat[i].codigo);
  63.                  a=1;
  64.                  b+=2;
  65.                  acum=acum+1;
  66.                  }
  67.                          break;
  68.              case 2:
  69.              system("cls");
  70.              printf("Nombre\t\t");
  71.              printf("Apellido\t");
  72.              printf("Edad\t\t");
  73.              printf("Deporte\t\t");
  74.              printf("Codigo \t\t");
  75.              printf("\n");
  76.  
  77.  
  78.              for (i=0;i<acum;i++)
  79.              {
  80.  
  81.               printf("%s\t\t",dat[i].nombre);
  82.  
  83.               printf("%s\t",dat[i].apellido);
  84.  
  85.               printf("%d\t\t",dat[i].edad);
  86.  
  87.               printf("%s\t\t",dat[i].deporte);
  88.  
  89.               printf("%d\t\t",dat[i].codigo);
  90.  
  91.               printf("\n");
  92.                 }
  93.  
  94.                  getch();
  95.  
  96.                  break;
  97.  
  98.          }
  99.  
  100.                      system("cls");
  101.                  printf("Desea regresar al menu principal o salir del programar presione s para continuar");
  102.                  scanf("%s",&re);
  103.                  }
  104.                  while(re=='s');
  105.  
  106.    getch();
  107.  
  108.  
  109.      }


Código C:
Ver original
  1. for (i=0;i<acum;i++)
  2.              {
  3.  
  4.               printf("%s\t\t",dat[i].nombre);
  5.  
  6.               printf("%s\t",dat[i].apellido);
  7.  
  8.               printf("%d\t\t",dat[i].edad);
  9.  
  10.               printf("%s\t\t",dat[i].deporte);
  11.  
  12.               printf("%d\t\t",dat[i].codigo);
  13.  
  14.               printf("\n");
  15.                 }
En esta parte del codigo es que no me imprime los datos ingresados probe imprimiendo a parte algun miembro de la estructura y me imprime el dato sin problemas que podria ser? que me aconsejan gracias de antemano.
  #2 (permalink)  
Antiguo 20/03/2014, 15:52
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 9 años, 4 meses
Puntos: 83
Respuesta: Problemas al imprimir un arreglo de estructuras

Revisa las lineas 26, 27, 28 y 78:

Código C:
Ver original
  1. do
  2.     {
  3.     acum = 0;
  4.     ...
  5.  
  6.  
  7.     for (i=0;i<acum;i++)
  8.     ....
  9. }

Que sucede con acum en cada inicio de ciclo?? Ahora ya ves por donde va la cosa, no es problema de programacion sino de concentracion en lo que estas haciendo :)

Saludos
vosk
  #3 (permalink)  
Antiguo 20/03/2014, 18:55
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 8 años
Puntos: 0
Respuesta: Problemas al imprimir un arreglo de estructuras

Gracias vosk por tu pronta respuesta ya me di cuenta, que cuando terminaba el ciclo empeza desde 0 acum jeje, lo que hice fue declarar una variable global, y luego pasarle el valor de acum en el ciclo dejo el codigo igual, gracias por tu ayuda xD

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5.    typedef struct
  6.       {
  7.               char nombre[30];
  8.               char apellido[30];
  9.               int edad;
  10.               char deporte [30];
  11.               int codigo;
  12.               }datos;
  13.  
  14.               datos dat[10];
  15. int j=0;
  16. void menu(void);
  17. main()
  18. {
  19.  
  20.               menu();
  21. }
  22. void menu(void)
  23. {
  24.  
  25.      int r,a,b,noa,i,acum;
  26.      char re;
  27.      do
  28.      {
  29.      acum=0;
  30.      a=1;
  31.      b=3;
  32.    printf("%d Bienvenido a el programa TEST \n Escoja una opcion para continuar\n\n",j);
  33.    puts("1-Agregar atleta\n");
  34.    puts("2-Consultar atletas\n");
  35.    puts("3-Eliminar  atletas\n");
  36.    puts("4-Modificar de forma individual\n");
  37.    puts("5-Modificar de forma general\n");
  38.    scanf("%d",&r);
  39.  
  40.       switch(r)
  41.           {
  42.              case 1:
  43.              system("cls");
  44.              puts("Cuantos atletas desea agregar");
  45.              scanf("%d",&noa);
  46.              system("cls");
  47.  
  48.              printf("Nombre\t\t");
  49.              printf("Apellido\t");
  50.              printf("Edad\t\t");
  51.              printf("Deporte\t\t");
  52.              printf("Codigo \t\t");
  53.               for (i=0;i<noa;i++)
  54.                  {
  55.                gotoxy(a,b);scanf("%s",&dat[i].nombre);
  56.                a+=17;
  57.                gotoxy(a,b);scanf("%s",&dat[i].apellido);
  58.                a+=17;
  59.                gotoxy(a,b);scanf("%d",&dat[i].edad);
  60.                a+=15;
  61.                 gotoxy(a,b);scanf("%s",&dat[i].deporte);
  62.                 a+=16;
  63.                  gotoxy(a,b);scanf("%d",&dat[i].codigo);
  64.                  a=1;
  65.                  b+=2;
  66.                  acum=acum+1;
  67.                  j=acum;
  68.                  }
  69.                          break;
  70.              case 2:
  71.              system("cls");
  72.              printf("Nombre\t\t");
  73.              printf("Apellido\t");
  74.              printf("Edad\t\t");
  75.              printf("Deporte\t\t");
  76.              printf("Codigo \t\t");
  77.              printf("\n");
  78.  
  79.  
  80.              for (i=0;i<j;i++)
  81.              {
  82.  
  83.               printf("%s\t\t",dat[i].nombre);
  84.  
  85.               printf("%s\t",dat[i].apellido);
  86.  
  87.               printf("%d\t\t",dat[i].edad);
  88.  
  89.               printf("%s\t\t",dat[i].deporte);
  90.  
  91.               printf("%d\t\t",dat[i].codigo);
  92.  
  93.               printf("\n");
  94.                 }
  95.  
  96.                  getch();
  97.  
  98.                  break;
  99.  
  100.          }
  101.  
  102.                      system("cls");
  103.                  printf("Desea regresar al menu principal o salir del programar presione s para continuar ");
  104.                  scanf("%s",&re);
  105.                  }
  106.                  while(re=='s');
  107.  
  108.    getch();
  109.  
  110.  
  111.      }

Etiquetas: arreglo, estructuras, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:09.