Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: dragonlady en 12 Julio 2015, 17:20 pm



Título: Listados de usuarios
Publicado por: dragonlady en 12 Julio 2015, 17:20 pm
Buenas, tengo una consulta si alguien me puede ayudar de un programa que vengo haciendo hace bastante (y ya he consultado varias cosas, esto de trabajar en grupo de 1 está complicado), estoy tratando de mostrar una lista de los usuarios(jugadores) activos, y tengo que mostrar cierta información de los mismos.
Mi idea fue algo así,
Hago un Switch con estas opciones dentro (que son los distintos listados que tendría que hacer):

Código
  1. void Consultas()
  2. {
  3.    system("cls");
  4.    jugador jugadores[CANTJUG];
  5.                    //inicializo todo el arreglo
  6.    int i;
  7.    for (i=0; i<CANTJUG;i++)
  8.    {
  9.        inicializo(jugadores,i);
  10.    }
  11.  
  12.    system("cls");
  13.    printf("MENU\n");
  14.    printf("====\n");
  15.    printf("1-Listado de jugadores\n");
  16.    printf("2-Listado de todas las partidas\n");
  17.    printf("3-Listado de partidas por jugador\n");
  18.    printf("4-Listado de partidas por fecha\n");
  19.    printf("5-Fin del Programa\n");
  20.    printf("\n\n");
  21.    char p;
  22.    printf (">>Presiona cualquier tecla y enter para volver al menu ");
  23.    scanf (" %c",&p);
  24.  
  25.    int op;
  26.    op = ingopcion();
  27.  
  28.    while (op!=5)
  29.    {
  30.        switch (op)
  31.        {
  32.            case 1:
  33.                    int i, j;
  34.                    j=0;
  35.                    for (i=0; i<j; i++)
  36.                    puts(jugador jugadores[CANTJUG].cedula.numero[i]);
  37.                    puts(jugador jugadores[CANTJUG].nombre.palabra[i]);
  38.                    puts(jugador jugadores[CANTJUG].apellido.palabra[i]);
  39.                    puts(jugador jugadores[CANTJUG].alias.palabra[i]);
  40.                    break;
  41.            case 2:
  42.                    listado_partidas;
  43.                    break;
  44.            case 3:
  45.                    listado_partidas_xjugador;
  46.                    break;
  47.            case 4:
  48.                    listado_partidas_xfecha;
  49.                    break;
  50.            case 5: fin_juego();
  51.                    break;
  52.        }
  53.  
  54.    }
  55. }
  56.  

Y me tira estos errores:

||In function 'Consultas':|
|974|error: a label can only be part of a statement and a declaration is not a statement|
|977|error: expected expression before 'jugador'|
|978|error: expected expression before 'jugador'|
|979|error: expected expression before 'jugador'|
|980|error: expected expression before 'jugador'|


No me está saliendo poner el puts, no se si es porque no conseguí esos datos con un gets, entonces que podría poner en vez de puts? :(



Título: Re: Listados de usuarios
Publicado por: ivancea96 en 12 Julio 2015, 18:10 pm
Puedes poner printf().

En cualquier caso, el error es, que has puesto:
Código
  1. puts(jugador jugadores[CANTJUG].cedula.numero[i]);

no tienes que poner jugador delante.
Código
  1. puts(jugadores[...]....)

Y has puesto:
Código
  1. j=0;
  2. for (i=0; i<j; i++)

Ese bucle nunca se va a reproducir. De cualqueir modo, no pusiste llaves encerrando los puts, así que ese bucle solo afectaría al primer puts.

A parte, has puesto jugadores[CANTJUG]. Dado que el arreglo tiene ese tamaño, acceder a esa dirección, o te tira basura, o te error en tiempo de ejecución. Habrás querido decir jugadores, pero en cualquier caso, el índice i va a ser siempre 0.


Título: Re: Listados de usuarios
Publicado por: dragonlady en 12 Julio 2015, 18:24 pm
Hola gracias por contestar.
Ya había intentando algunos cambios que me sugeriste, pero sigue sin salirme. No estoy entendiendo lo de [CANTJUG] porque no se que poner.

Código
  1. void Consultas()
  2. {
  3.    system("cls");
  4.    jugador jugadores[CANTJUG];
  5.                    //inicializo todo el arreglo
  6.    int i;
  7.    for (i=0; i<CANTJUG;i++)
  8.    {
  9.        inicializo(jugadores,i);
  10.    }
  11.  
  12.    system("cls");
  13.    printf("MENU\n");
  14.    printf("====\n");
  15.    printf("1-Listado de jugadores\n");
  16.    printf("2-Listado de todas las partidas\n");
  17.    printf("3-Listado de partidas por jugador\n");
  18.    printf("4-Listado de partidas por fecha\n");
  19.    printf("5-Fin del Programa\n");
  20.    printf("\n\n");
  21.    char p;
  22.    printf (">>Presiona cualquier tecla y enter para volver al menu ");
  23.    scanf (" %c",&p);
  24.  
  25.    int op;
  26.    op = ingopcion();
  27.  
  28.    int j;
  29.    j=0;
  30.  
  31.    while (op!=5)
  32.    {
  33.        switch (op)
  34.        {
  35.            case 1:
  36.                    for (i=0; i<j; i++)
  37.                    {puts(jugadores[CANTJUG].cedula.numero[i]);
  38.                    puts(jugadores[CANTJUG].nombre.palabra[i]);
  39.                    puts(jugadores[CANTJUG].apellido.palabra[i]);
  40.                    puts(jugadores[CANTJUG].alias.palabra[i]);}
  41.                    break;
  42.            case 2:
  43.                    /*listado_partidas;*/
  44.                    break;
  45.            case 3:
  46.                    /*listado_partidas_xjugador;*/
  47.                    break;
  48.            case 4:
  49.                    /*listado_partidas_xfecha;*/
  50.                    break;
  51.            case 5: fin_juego();
  52.                    break;
  53.        }
  54.  
  55.    }
  56. }
  57.  
Cuando yo quería mostrar un jugador por busqueda para modificarlo o lo que fuese, tenia funciones así:

Código
  1. void muestroCedula(jugador jugadores[], int pos)
  2. {
  3.    int i;
  4.    printf("\nCedula: ");
  5.    for (i=0;i<jugadores[pos].cedula.largodigito;i++)
  6.    {
  7.        printf("%c",jugadores[pos].cedula.numero[i]);
  8.    }
  9. }

por ejemplo.

Entonces no se como hacer para mostrar todos los jugadores en una lista :|


Título: Re: Listados de usuarios
Publicado por: crack81 en 12 Julio 2015, 19:26 pm
lo de "CANTJUG" es la cantidad de jugadores
que puede ser 2,3,8 etc.

Te animo a publicar tu codigo para ver a myor profundidad tus posibles errores,
ya que puedo modificar tu programa pero no sea lo que buscas


Título: Re: Listados de usuarios
Publicado por: ivancea96 en 12 Julio 2015, 19:27 pm
Tendrás que usar un for para iterar por cada elemento del arreglo jugadores. Puedes poner desde i=0, hasta i<CANTJUG. En cualquier caso, ese i<j sobra. j es 0. i nunca va a ser <j.


Título: Re: Listados de usuarios
Publicado por: dragonlady en 12 Julio 2015, 20:44 pm
Pero si lo pongo así no entiendo porque no me quiere aceptar el %s

Código
  1. printf("\nListado jugadores.\n");
  2. for(i=1;i<CANTJUG;i++){
  3. {printf("\nCedula: %s\n", jugadores[i].cedula);}
  4. for(i=1;i<CANTJUG;i++)
  5. {printf("Nombre %s\n", jugadores[i].nombre);}
  6. for(i=1;i<CANTJUG;i++)
  7. {printf("Apellido %s\n", jugadores[i].apellido);}
  8. for(i=1;i<CANTJUG;i++)
  9. {printf("Alias %s\n", jugadores[i].alias);}


Título: Re: Listados de usuarios
Publicado por: crack81 en 13 Julio 2015, 00:45 am
Estuve revisando tu codigo antes de que lo quitaras, creo que estas escribiendo codigo de mas, tienes que hacer las cosas un poco mas genericas y asi poder reutilizar tu codigo.

mira por ejemplo tenias muchos struct donde la info de adentro era del mismo tipo y yo digo porque no haces algo como esto:

Código
  1. typedef struct{
  2.  char palabra_[20];
  3.  int largoPalabra;
  4. }nombre,apellido,ci,alias;

asi te evitas estar creando 3 o 4


en la funcion Elegir_Bosque puedes hacer esto:
Código
  1. void Elegir_Bosque(void)
  2. {
  3.  // system("cls");
  4.   int elige_bosque;
  5.   printf("     >        Ingresa una opcion:        <\n\n");
  6.   printf("     >        1- Bosque de 6 x 6         <\n");
  7.   printf("     >        2- Bosque de 8 x 8         <\n");
  8.   printf("     >        3- Bosque de 10 x 10       <\n");
  9.   printf("     >        4- Bosque de 14 x 14       <\n");
  10.   printf("     >        5- Bosque de 18 x 18       <\n");
  11.   scanf(" %d", &elige_bosque);
  12.  
  13.   //system("cls");
  14.  
  15.   switch(elige_bosque)
  16.   {
  17.   case 1: tam_bosque = 6;break;
  18.   case 2: tam_bosque = 8;break;
  19.   case 3: tam_bosque = 10;break;
  20.   case 4: tam_bosque = 14;break;
  21.   case 5: tam_bosque = 18;break;
  22.   default:tam_bosque = 6;break;
  23.   }
  24.  
  25.   Iniciar_Bosque();
  26.   Bucle_Juego();
  27.  
  28. }
  29.  

y hay una donde si estaba en extremo larga que era la de Iniciar_Bosque
podias haber hecho algo como esto

Código
  1. void Iniciar_Bosque()
  2. {
  3. srand (time(NULL));
  4. int Xnum=0;
  5. int i, j;
  6.  
  7. //aqui nos creamos un arreglo dinamico que dependiendo la opcion
  8. //del usuario puede ser de 6,8,10,14
  9. //este tambien se llama arreglo bidimensional o puntero doble
  10. char **bosque=(char**)malloc(tam_bosque*sizeof(*char));//esto creas las filas
  11. for(i=0;i<tam_bosque;i++)//recorremos todas las filas
  12.   bosque[i]=(char*)malloc(tam_bosque*sizeof(char));//esto crea las columnas
  13.  
  14.  
  15. for(i = 0; i < tam_bosque;i++)
  16.  for(j = 0; j < tam_bosque;j++)
  17. bosque[i][j] = ' ';
  18.  
  19. bosque[0][0] = '1';
  20. bosque[tam_bosque-1][tam_bosque-1] = '2';
  21.  
  22.  
  23. while(Xnum < tam_bosque/2 ){
  24. i = (rand() % tam_bosque);
  25. j = (rand() % tam_bosque);
  26.  
  27. if(bosque[i][j] == ' ')
  28. {
  29. bosque[i][j] = 'X';
  30.        Xnum++;
  31. }
  32.  
  33. }
  34. }



Título: Re: Listados de usuarios
Publicado por: dragonlady en 13 Julio 2015, 01:03 am
Hola! Gracias por la ayuda. Este año empecé programación y hay cosas que me las tienen limitadas. Yo ya había abierto un tema aquí cuando estaba haciendo la primer parte de los bosques y eso, y había aplicado la idea de arreglos dinámicos, pero el problema es que el profesor no nos permite algunas cosas, entre ellas me rezongó por eso y me hizo hacer los 5 tableros.
Tendré en cuenta lo de las estructuras, eso sí (que también me las enseñaron a hacer separadas así y, aunque me complican mucho y no se mucho el tema, por eso estoy en el lío en el que estoy jaja)

Tengo una parte si no te molesta ayudarme, que me está complicado mucho la vida porque no puedo probar otras partes a causa de eso.

Tengo una función para ingresar a los jugadores:

Código
  1. void alta(jugador jugadores[])//problema me sigue pidiendo jugadores en vez de volver al menu
  2. {
  3.    char confirma;
  4.    int nroJug;
  5.    system("cls");
  6.    printf("\nINGRESO DATOS DE JUGADORES");
  7.    printf("\n==========================\n");
  8.    nroJug = ingNroJugador();
  9.    if (jugadores[nroJug-1].nombre.largopalabra==0)
  10.    {
  11.        jugadores[nroJug-1].nombre = ingresoNombre();
  12.        jugadores[nroJug-1].cedula = ingresoCedula();
  13.        jugadores[nroJug-1].fechanacimiento = ingresoFechanacimiento();
  14.        jugadores[nroJug-1].alias = ingresoAlias();
  15.        getchar();
  16.        printf("Confirma Ingreso S/N");
  17.        scanf(" %c",&confirma);
  18.        if (confirma=='N' || confirma == 'n')
  19.        {
  20.            inicializo(jugadores,nroJug-1);
  21.        }
  22.    }
  23.    else
  24.    {
  25.        getchar();
  26.        printf("\nJugador YA existe");
  27.        printf("\nPresione cualquier tecla para continuar");
  28.        getchar();
  29.    }
  30.  
  31. }

que lo que debería hacer cuando termino de ingresar un jugador, es volver al menú. Por algun motivo no puedo, siempre cuando termino de ingresar un jugador, me pide que ingrese otro. Alguna idea?


Título: Re: Listados de usuarios
Publicado por: crack81 en 13 Julio 2015, 01:16 am
Pues como jode tu profesor, yo entiendo que algunos problemas necesiten ser desarrollados de una forma para que se entienda algun tema en especifico, pero si tu profesor ya ve que dominas el tema de arreglos estaticos porque limitarte a ellos.

Los arreglos estaticos cualquieras los entiende mientras que arreglo dinamico es un poco mas dificil principalmente por el tema de liberar la memoria.

Respecto a tu tema te aconsejo volvera a publicar tu codigo aunque este largo para ver exactamente donde tocar el codigo.


Título: Re: Listados de usuarios
Publicado por: dragonlady en 13 Julio 2015, 01:17 am
Si es complicado de entender algunas cosas, como las cadenas nos hace ingresarlas de una manera muy larga y no nos enseñó %s, yo digo que eso tendrá el objetivo de no llenarnos más de información, pero la verdad no se. Porque me parece que todo lo que aprendí, lo aprendí a medias, aunque eso también debe ser porque yo soy media mala jajajaj

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define LARGON 15
  6. #define LARGOA 15
  7. #define LARGOC 7
  8. #define LARGOALI 10
  9. #define CANTJUG 100
  10.  
  11. typedef struct {
  12.    char palabra[LARGON];
  13.    int largopalabra;
  14. }cadena; //estructura tipo cadena para nombre jugador
  15.  
  16. typedef struct {
  17.    char palabra[LARGOA];
  18.    int largopalabra;
  19. }cadena2; //otra estructura tipo cadena(2) para apellido jugador
  20.  
  21. typedef struct {
  22.    char numero[LARGOC];
  23.    int largodigito;
  24. }digito; //tipo digito para CI jugador
  25.  
  26. typedef struct {
  27.    int dia;
  28.    int mes;
  29.    int año;
  30. }fecha; //defino estructura fecha para ser utilizada en la fecha de nacimiento
  31.  
  32. typedef struct {
  33.    char palabra[LARGOALI];
  34.    int largopalabra;
  35. }cadena3; //definoi estructura tipo cadena(3) para alias jugador
  36.  
  37.  
  38. typedef struct {
  39.    cadena nombre;
  40.    cadena2 apellido;
  41.    cadena3 alias;
  42.    digito cedula;
  43.    int edad;
  44.    fecha fechanacimiento;
  45. } jugador; // defino estructura jugador para ser utilizada en el arreglo que guarda los jugadores.
  46.  
  47. /*typedef struct{
  48.     fecha fecha_partida;
  49.     char alias1[10];
  50.     char alias2[10];
  51.     int round_jug1;
  52.     int round_jug2;
  53. }info_partida;*/
  54.  
  55. //Prototipos
  56. void menu();
  57. void reglas();
  58. void fin_juego();
  59. void Elegir_Bosque();
  60. void Iniciar_Bosque();
  61. void Actualizar_Juego();
  62. void Bucle_Juego();
  63. void mover_tirarflecha(int);
  64. void inicializo(jugador jugadores[], int pos);//inicializo jugadores
  65. void menu();//armo el menu
  66. int ingopcion();//ingreso la ocpion del menu
  67. int ingNroJugador();//ingreso nro del jugador
  68. void alta(jugador jugadores[]);//procedimiento de alta
  69. cadena ingresoNombre();// ingreso nombre del jugador
  70. cadena2 ingresoApellido();//ingreso apellido del jugador
  71. cadena3 ingresoAlias();//ingreso alias del jugador
  72. digito ingresoCedula();//ingreso cedula del jugador
  73. int calcularEdad();//calculo la Edad del jugador con la fecha de nacimiento
  74. fecha ingresoFechanacimiento();//ingreso fecha de nacimiento
  75. void baja(jugador jugadores[]);//procedimiento para dar de baja al jugador
  76. void modificacion(jugador jugadores[]);//procedimiento para consultar el jugador
  77. void muestroNombre(jugador jugadores[],int pos);//muestro el nombre del jugador
  78. void muestroApellido(jugador jugadores[],int pos);//muestro el apellido del jugador
  79. void muestroCedula(jugador jugadores[],int pos);//muestro la cedula del jugador
  80. void muestroEdad(jugador jugadores[],int pos);//muestro la edad del jugador
  81. void muestroFechanacimiento(jugador jugadores[],int pos);//muestro la fecha de nacimiento
  82. void muestroAlias(jugador jugadores[], int pos);//muestro el alias
  83. void Gestionar_jugadores();
  84. void Consultas();
  85. fecha fecha_del_dia();
  86.  
  87. //Variables globales
  88. char bosque6x6[6][6];
  89. char bosque8x8[8][8];
  90. char bosque10x10[10][10];
  91. char bosque14x14[14][14];
  92. char bosque18x18[18][18];
  93.  
  94. int opcion=0;
  95. int tam_bosque=0;
  96.  
  97. int main()
  98. {
  99.    while(opcion!=5)
  100.    {
  101.        fecha_del_dia();
  102.        system("cls");
  103.        menu();
  104.        scanf("%d",&opcion);
  105.        switch(opcion)
  106.        {
  107.            case 1: Elegir_Bosque();
  108.                    break;
  109.            case 2: reglas();
  110.                    break;
  111.            case 3: Gestionar_jugadores();
  112.                    break;
  113.            case 4: Consultas();
  114.                    break;
  115.            case 5: fin_juego();
  116.                    break;
  117.  
  118.        }
  119.     }
  120.   return 0;
  121. }
  122.  
  123. void menu()
  124. {
  125.   printf("     ______ARQUEROS EN EL BOSQUE_______\n");
  126.   printf("     ____________OOOOOO________________\n");
  127.   printf("     _________OOOOOOOOOOOOO____________\n");
  128.   printf("     _____OOOOOOOOOOOOOOOOOOOO_________\n");
  129.   printf("     ___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
  130.   printf("     ___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
  131.   printf("     _____OOOOOOOOOOOOOOOOOOOO_________\n");
  132.   printf("     ______OOOOOOOOOOOOOOOOOO__________\n");
  133.   printf("     _________OOOOOOOOOOOO_____________\n");
  134.   printf("     __<----____OOOOOOOO_______________\n");
  135.   printf("     _____________OOOO_________________\n");
  136.   printf("     _____________OOOO_______---->_____\n");
  137.   printf("     _____________OOOO_________________\n");
  138.   printf("     _____________OOOO_________________\n");
  139.   printf("\n");
  140.   printf("     MENU PRINCIPAL\n");
  141.   printf("     ><><><><><><><\n");
  142.   printf("     Ingrese una de las opciones: \n");
  143.   printf("     1. Jugar\n");
  144.   printf("     2.Ver reglas\n");
  145.   printf("     3.Gestionar jugadores\n");
  146.   printf("     4.Consultas\n");
  147.   printf("     5.Salir del juego\n");
  148.   printf("\n");
  149. }
  150.  
  151. fecha fecha_del_dia()
  152. {
  153.    fecha fechadia;
  154.    printf("\n              Ingrese Fecha del dia dd/mm/aaaa: ");
  155.    scanf("%d/%d/%d",&fechadia.dia,&fechadia.mes, &fechadia.año);
  156.    return fechadia;
  157. }
  158.  
  159. void reglas() //aca muestro las reglas. tiene que poder volver al menu anterior
  160. {
  161.   system("cls");
  162.   printf("El juego consiste en eliminar al arquero del extremo opuesto. \n");
  163.   printf("Cada turno puede elegir moverse una casilla o lanzar un flechazo. \n");
  164.   printf("Los flechazos se mueven en linea recta, maximo cinco lugares.\n");
  165.   printf("Ni los jugadores ni los flechazos pueden atravezar los arboles(X)");
  166.   printf(" Al recibir un flechazo el jugador pierde el round, las partidas se componen de 3 round y las gana el que gane 2 de ellos.\n");
  167.   printf("Jugador primero sera identificado como 1 y jugador segundo como 2.\n");
  168.   printf("\n\n");
  169.   char p;
  170.   printf (">>Presiona cualquier tecla y enter para volver al menu ");
  171.   scanf (" %c",&p);
  172. }
  173.  
  174. void fin_juego()
  175. {
  176.    system("cls");
  177.    printf("\n\n\n\t\t\t* GRACIAS POR JUGAR! *\n\n\n");
  178.    printf("\t\t\t  Sabrina Cabrera.\n \t\t\t  Programacion.\n \t\t\t  Tecnologo 2015\n\n");
  179. }
  180.  
  181. void Elegir_Bosque()
  182. {
  183.   system("cls");
  184.   int elige_bosque;
  185.   printf("     >        Ingresa una opcion:        <\n\n");
  186.   printf("     >        1- Bosque de 6 x 6         <\n");
  187.   printf("     >        2- Bosque de 8 x 8         <\n");
  188.   printf("     >        3- Bosque de 10 x 10       <\n");
  189.   printf("     >        4- Bosque de 14 x 14       <\n");
  190.   printf("     >        5- Bosque de 18 x 18       <\n");
  191.   scanf(" %d", &elige_bosque);
  192.  
  193.   system("cls");
  194.  
  195.   switch(elige_bosque)
  196.   {
  197.       case 1: tam_bosque = 6;
  198.               Iniciar_Bosque();
  199.               Bucle_Juego();
  200.               break;
  201.       case 2: tam_bosque = 8;
  202.               Iniciar_Bosque();
  203.               Bucle_Juego();
  204.               break;
  205.       case 3: tam_bosque = 10;
  206.               Iniciar_Bosque();
  207.               Bucle_Juego();
  208.               break;
  209.       case 4: tam_bosque = 14;
  210.               Iniciar_Bosque();
  211.               Bucle_Juego();
  212.               break;
  213.       case 5: tam_bosque = 18;
  214.               Iniciar_Bosque();
  215.               Bucle_Juego();
  216.               break;
  217.   }
  218.  
  219. }
  220. //valores iniciales para el bosque
  221. void Iniciar_Bosque()
  222. {
  223.    srand (time(NULL));
  224.  
  225.    int Xnum=0;
  226.    int i, j;
  227.  
  228.    if(tam_bosque == 6)
  229.    {
  230.        for(i = 0; i < tam_bosque;i++)
  231.            for(j = 0; j < tam_bosque;j++)
  232.                bosque6x6[i][j] = ' ';
  233.  
  234.        bosque6x6[0][0] = '1';
  235.        bosque6x6[5][5] = '2';
  236.  
  237.  
  238.        while(Xnum < tam_bosque/2 )
  239.  
  240.        {
  241.            i = (rand() % tam_bosque);
  242.            j = (rand() % tam_bosque);
  243.  
  244.            if(bosque6x6[i][j] == ' ')
  245.            {
  246.                bosque6x6[i][j] = 'X';
  247.                Xnum++;
  248.            }
  249.  
  250.        }
  251.    }
  252.  
  253.    else if(tam_bosque == 8)
  254.    {
  255.        for(i = 0; i < tam_bosque;i++)
  256.            for(j = 0; j < tam_bosque;j++)
  257.                bosque8x8[i][j] = ' ';
  258.  
  259.        bosque8x8[0][0] = '1';
  260.        bosque8x8[7][7] = '2';
  261.  
  262.        while(Xnum < tam_bosque/2 )
  263.        {
  264.            i = rand() % tam_bosque;
  265.            j = rand() % tam_bosque;
  266.  
  267.            if(bosque8x8[i][j] == ' ')
  268.            {
  269.                bosque8x8[i][j] = 'X';
  270.                Xnum++;
  271.            }
  272.  
  273.        }
  274.    }
  275.    else if(tam_bosque == 10)
  276.    {
  277.        for(i = 0; i < tam_bosque;i++)
  278.            for(j = 0; j < tam_bosque;j++)
  279.                bosque10x10[i][j] = ' ';
  280.  
  281.        bosque10x10[0][0] = '1';
  282.        bosque10x10[9][9] = '2';
  283.  
  284.        while(Xnum < tam_bosque/2 )
  285.        {
  286.            i = rand() % tam_bosque;
  287.            j = rand() % tam_bosque;
  288.  
  289.            if(bosque10x10[i][j] == ' ')
  290.            {
  291.                bosque10x10[i][j] = 'X';
  292.                Xnum++;
  293.            }
  294.  
  295.        }
  296.    }
  297.    else if(tam_bosque == 14)
  298.    {
  299.        for(i = 0; i < tam_bosque;i++)
  300.            for(j = 0; j < tam_bosque;j++)
  301.                bosque14x14[i][j] = ' ';
  302.  
  303.        bosque14x14[0][0] = '1';
  304.        bosque14x14[13][13] = '2';
  305.  
  306.        while(Xnum < tam_bosque/2 )
  307.        {
  308.            i = rand() % tam_bosque;
  309.            j = rand() % tam_bosque;
  310.  
  311.            if(bosque14x14[i][j] == ' ')
  312.            {
  313.                bosque14x14[i][j] = 'X';
  314.                Xnum++;
  315.            }
  316.  
  317.        }
  318.    }
  319.    else if(tam_bosque == 18)
  320.    {
  321.        for(i = 0; i < tam_bosque;i++)
  322.            for(j = 0; j < tam_bosque;j++)
  323.                bosque18x18[i][j] = ' ';
  324.  
  325.        bosque18x18[0][0] = '1';
  326.        bosque18x18[17][17] = '2';
  327.  
  328.        while(Xnum < tam_bosque/2 )
  329.        {
  330.            i = rand() % tam_bosque;
  331.            j = rand() % tam_bosque;
  332.  
  333.            if(bosque18x18[i][j] == ' ')
  334.            {
  335.                bosque18x18[i][j] = 'X';
  336.                Xnum++;
  337.            }
  338.  
  339.        }
  340.    }
  341.  
  342. }
  343.  
  344. //dibuja cuando sea necesario
  345. void Actualizar_Juego()
  346. {
  347.    system("cls");
  348.  
  349.    if(tam_bosque == 6)
  350.    {
  351.        int i,j;
  352.        printf("\n  ");
  353.  
  354.        for (j = 0; j < tam_bosque;j++) //filas alfabeticas
  355.            printf("  %c", 'a'+j);
  356.        printf("\n");
  357.  
  358.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  359.        {
  360.            printf(" %2d", i);
  361.  
  362.            for (j = 0;j < tam_bosque;j++)
  363.            {
  364.                printf("| %c", bosque6x6[i][j]);
  365.            }
  366.            printf("| \n");
  367.        }
  368.    }
  369.    else if( tam_bosque == 8)
  370.    {
  371.        int i,j;
  372.        printf("\n  ");
  373.  
  374.        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
  375.            printf("  %c", 'a'+j);
  376.        printf("\n");
  377.  
  378.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  379.        {
  380.            printf(" %2d", i);
  381.  
  382.            for (j = 0;j < tam_bosque;j++)
  383.            {
  384.                printf("| %c", bosque8x8[i][j]);
  385.            }
  386.            printf("| \n");
  387.        }
  388.    }
  389.    else if( tam_bosque == 10)
  390.    {
  391.        int i,j;
  392.        printf("\n  ");
  393.  
  394.        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
  395.            printf("  %c", 'a'+j);
  396.        printf("\n");
  397.  
  398.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  399.        {
  400.            printf(" %2d", i);
  401.  
  402.            for (j = 0;j < tam_bosque;j++)
  403.            {
  404.                printf("| %c", bosque10x10[i][j]);
  405.            }
  406.            printf("| \n");
  407.        }
  408.    }
  409.    else if( tam_bosque == 14)
  410.    {
  411.        int i,j;
  412.        printf("\n  ");
  413.  
  414.        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
  415.            printf("  %c", 'a'+j);
  416.        printf("\n");
  417.  
  418.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  419.        {
  420.            printf(" %2d", i);
  421.  
  422.            for (j = 0;j < tam_bosque;j++)
  423.            {
  424.                printf("| %c", bosque14x14[i][j]);
  425.            }
  426.            printf("| \n");
  427.        }
  428.    }
  429.    else if( tam_bosque == 18)
  430.    {
  431.        int i,j;
  432.        printf("\n  ");
  433.  
  434.        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
  435.            printf("  %c", 'a'+j);
  436.        printf("\n");
  437.  
  438.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  439.        {
  440.            printf(" %2d", i);
  441.  
  442.            for (j = 0;j < tam_bosque;j++)
  443.            {
  444.                printf("| %c", bosque18x18[i][j]);
  445.            }
  446.            printf("| \n");
  447.        }
  448.    }
  449.  
  450. }
  451.  
  452. //jugadas
  453. void Bucle_Juego()
  454. {
  455.    int ganador=0;
  456.    int turno=0;
  457.  
  458.    printf("Que jugador empieza?: ");
  459.    scanf(" %d", &turno);
  460.  
  461.    do
  462.    {
  463.        while(ganador == 0)//que se repita mientras no haya ningun ganador
  464.        {
  465.            Actualizar_Juego(); //Actualiza el juego
  466.            mover_tirarflecha(turno); //mueve o ataca
  467.  
  468.            //Falta comprobar si alguno ya ganó
  469.  
  470.            //Cambiando los turnos
  471.            if(turno == 1)
  472.            {
  473.                turno = 2;
  474.            }
  475.                else
  476.                    turno = 1;
  477.        }
  478.  
  479.        //cuando se termine el bucle comprueba quien ha ganado
  480.        if(ganador == 1)
  481.            {
  482.                printf("Ha Ganado el jugador 1");
  483.            }
  484.                else if(ganador == 2)
  485.                    printf("Ha Ganado el jugador 2");
  486.  
  487.        ganador++;
  488.    }
  489.     while (ganador < 3);
  490.  
  491.     //para que pregunte si quiere salir o seguir jugando
  492.     /*char respuesta;
  493.      int s=0,n=1;
  494.      printf("Quiere jugar de nuevo? (s/n): ");
  495.      scanf(" %c", &respuesta);
  496.  
  497.     if (respuesta==s)
  498.     {
  499.  
  500.     }
  501.         else if (respuesta==n)
  502.             fin_juego();*/
  503.  
  504. }
  505.  
  506.  
  507.  
  508. void mover_tirarflecha(int turno)
  509. {
  510.    char imagen_jugador; //dibuja 1' o '2' dependiendo del turno
  511.  
  512.    if(turno == 1)
  513.    {
  514.        imagen_jugador = '1';
  515.        printf("Es el turno del jugador 1\n");
  516.    }
  517.    else
  518.    {
  519.        imagen_jugador = '2';
  520.        printf("Es el turno del jugador 2\n");
  521.    }
  522.  
  523.   char accion;
  524.  
  525.    //moverse
  526.   int o_i,d_i; //coordenadas origen
  527.   char o_j,d_j;  //coordenadas destino
  528.  
  529.   printf("Moverte, tirar flecha o rendirse? (m, t, r)");
  530.   scanf(" %c", &accion);
  531.  
  532.   //para saber lo que ha ingresado
  533.   if(accion == 'm')
  534.   {
  535.       printf("\nIngrese Coordenadas origen (ej. 0-a) "); //origen
  536.       scanf("%d-%c", &o_i,&o_j);
  537.  
  538.       printf("\nIngrese Coordenadas destino (1 lugar) "); //destino
  539.       scanf("%d-%c", &d_i,&d_j);
  540.  
  541.  
  542.       //Dependiendo del tamaño del bosque
  543.       if( tam_bosque == 6)
  544.       {
  545.           //para que se mueva 1 solo lugar
  546.           /*if ((bosque6x6[d_i+1][d_j])&&(bosque6x6[d_i][d_j+1])&&(bosque6x6[d_i-1][d_j])&&(bosque6x6[d_i][d_j-1]))*/
  547.           {
  548.                bosque6x6[o_i][o_j - 97]= ' '; //queda vacio donde estaba
  549.                bosque6x6[d_i][d_j - 97]= imagen_jugador; //a donde lo mueve mientras esté el espacio vacio
  550.           }
  551.       }
  552.       else if( tam_bosque == 8)
  553.       {
  554.           bosque8x8[o_i][o_j - 97]= ' ';
  555.           bosque8x8[d_i][d_j - 97]= imagen_jugador;
  556.       }
  557.       else if( tam_bosque == 10)
  558.       {
  559.           bosque10x10[o_i][o_j - 97]= ' ';
  560.           bosque10x10[d_i][d_j - 97]= imagen_jugador;
  561.       }
  562.       else if( tam_bosque == 14)
  563.       {
  564.           bosque14x14[o_i][o_j - 97]= ' ';
  565.           bosque14x14[d_i][d_j - 97]= imagen_jugador;
  566.       }
  567.       else if( tam_bosque == 18)
  568.       {
  569.           bosque18x18[o_i][o_j - 97]= ' ';
  570.           bosque18x18[d_i][d_j - 97]= imagen_jugador;
  571.       }
  572.  
  573.   }
  574.  else if(accion == 't') //para disparar flecha. Se mueven arriba,abajo,izq,derecha
  575.   {
  576.       //para el bosque x6
  577.       if (tam_bosque==6)
  578.       {
  579.           int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
  580.           int i=d_i;
  581.           int j=d_j;
  582.  
  583.           while((limite<5) && (arriba<6) && (bosque6x6[i][j]!='X'))//para arriba
  584.           {
  585.               if (bosque6x6[i][j]!='2')
  586.                  {
  587.                        arriba++;
  588.                        j++;
  589.                        printf("Fallaste!\n");
  590.                  }
  591.                  else printf("GAME OVER: Jugador 2");
  592.           }
  593.  
  594.  
  595.           while((limite<5) && (abajo<6) && (bosque6x6[i][j]!='X'))//para abajo
  596.  
  597.           {
  598.               if (bosque6x6[i][j]!='2')
  599.                  {
  600.                        abajo++;
  601.                        j--;
  602.                        printf("Fallaste!\n");
  603.                  }
  604.  
  605.                  else printf("GAME OVER: Jugador 2");
  606.  
  607.           }
  608.  
  609.           while((limite<5) && (izq<6) && (bosque6x6[i][j]!='X'))//para la izquierda
  610.           {
  611.               if (bosque6x6[i][j]!='2')
  612.                    {
  613.                        izq++;
  614.                        i--;
  615.                        printf("Fallaste!\n");
  616.                  }
  617.                  else printf("GAME OVER: Jugador 2");
  618.    printf ("\t>>Presiona cualquier tecla y enter para volver al menu principal");
  619.    getchar();
  620.  
  621.           }
  622.  
  623.           while((limite<5) && (derecha<6) && (bosque6x6[i][j]!='X'))//para la derecha
  624.           {
  625.               if (bosque6x6[i][j]!='2')
  626.                  {
  627.                        derecha++;
  628.                        i++;
  629.                        printf("Fallaste!\n");
  630.                  }
  631.  
  632.                  else printf("GAME OVER: Jugador 2");
  633.  
  634.           }
  635.  
  636.  
  637.       }
  638.   }
  639.    else if (accion = 'r')
  640.    {
  641.        printf("Te has rendido: Perdiste!");
  642.        system("cls");
  643.        printf("GAME OVER");
  644.        menu();
  645.    }
  646.  
  647. }
  648.  
  649. void Gestionar_jugadores()
  650. {
  651.    system("cls");
  652.    jugador jugadores[CANTJUG];
  653.                    //inicializo todo el arreglo
  654.    int i;
  655.    for (i=0; i<CANTJUG;i++)
  656.    {
  657.        inicializo(jugadores,i);
  658.    }
  659.  
  660.    system("cls");
  661.    printf("MENU\n");
  662.    printf("====\n");
  663.    printf("1-Alta de jugador\n");
  664.    printf("2-Baja de jugador\n");
  665.    printf("3-Modificacion jugador\n");
  666.    printf("4-Volver al menu anterior\n");
  667.    printf("\n\n");
  668.  
  669.    int op;
  670.    op = ingopcion();
  671.  
  672.    while (op!=4)
  673.    {
  674.        switch (op)
  675.        {
  676.            case 1:
  677.                    alta(jugadores);
  678.                    break;
  679.            case 2:
  680.                    baja(jugadores);
  681.                    break;
  682.            case 3:
  683.                    modificacion(jugadores);
  684.                    break;
  685.            case 4: menu();
  686.                    break;
  687.        }
  688.  
  689.    }
  690.  
  691.  
  692. }
  693.  
  694.  
  695. int ingopcion()
  696. {
  697.    int opcion;
  698.    do
  699.    {
  700.        printf("\nIngrese opcion (1-4)");
  701.        scanf("%d",&opcion);
  702.    }
  703.    while ((opcion < 1) || (opcion > 4));
  704.    return (opcion);
  705. }
  706.  
  707.  
  708. void inicializo(jugador jugadores[], int pos)
  709. {
  710.    //inicializo el nombre del jugador
  711.    int x;
  712.    for (x=0;x<LARGON;x++)
  713.    {
  714.        jugadores[pos].nombre.palabra[x] = ' ';
  715.    }
  716.    jugadores[pos].nombre.largopalabra = 0;
  717.    //inicializo la cedula
  718.    for (x=0;x<LARGOC;x++)
  719.    {
  720.        jugadores[pos].cedula.numero[x] = ' ';
  721.    }
  722.  
  723.    jugadores[pos].edad = 0;
  724.    jugadores[pos].fechanacimiento.dia = 0;
  725.    jugadores[pos].fechanacimiento.mes = 0;
  726.    jugadores[pos].fechanacimiento.año = 0;
  727.  
  728.    for(x=0;x<LARGOA;x++)
  729.    {
  730.        jugadores[pos].apellido.palabra[x] = ' ';
  731.    }
  732.    jugadores[pos].apellido.largopalabra = 0;
  733.  
  734.    for(x=0;x<LARGOALI;x++)
  735.    {
  736.        jugadores[pos].alias.palabra[x] = ' ';
  737.    }
  738.    jugadores[pos].alias.largopalabra = 0;
  739. }
  740.  
  741. int ingNroJugador()
  742. {
  743.    int nrojug;
  744.    do
  745.    {
  746.        printf("Ingrese Nro. de Jugador (1..%d)",CANTJUG);
  747.        scanf("%d",&nrojug);
  748.    }
  749.    while ((nrojug < 1) || (nrojug > CANTJUG));
  750.    return (nrojug);
  751. }
  752.  
  753. void alta(jugador jugadores[])//problema me sigue pidiendo jugadores en vez de volver al menu
  754. {
  755.    char confirma;
  756.    int nroJug;
  757.    system("cls");
  758.    printf("\nINGRESO DATOS DE JUGADORES");
  759.    printf("\n==========================\n");
  760.    nroJug = ingNroJugador();
  761.    if (jugadores[nroJug-1].nombre.largopalabra==0)
  762.    {
  763.        jugadores[nroJug-1].nombre = ingresoNombre();
  764.        jugadores[nroJug-1].apellido = ingresoApellido();
  765.        jugadores[nroJug-1].cedula = ingresoCedula();
  766.        jugadores[nroJug-1].fechanacimiento = ingresoFechanacimiento();
  767.        jugadores[nroJug-1].alias = ingresoAlias();
  768.        getchar();
  769.        printf("Confirma Ingreso S/N");
  770.        scanf(" %c",&confirma);
  771.        if (confirma=='N' || confirma == 'n')
  772.        {
  773.            inicializo(jugadores,nroJug-1);
  774.            menu();
  775.        }
  776.    }
  777.    else
  778.    {
  779.        getchar();
  780.        printf("\nJugador YA existe");
  781.        printf("\nPresione cualquier tecla para continuar");
  782.        getchar();
  783.    }
  784.  
  785. }
  786.  
  787. cadena ingresoNombre()
  788. {
  789.    getchar();
  790.    cadena nom;
  791.    int i;
  792.    i = 0;
  793.    printf("\nIngrese nombre del jugador: ");
  794.    while (((nom.palabra[i]=getchar()) != 10) && i <= LARGON)
  795.    {
  796.            i++;
  797.    }
  798.    nom.largopalabra = i;
  799.    return nom;
  800. }
  801.  
  802. cadena2 ingresoApellido()
  803. {
  804.    getchar();
  805.    cadena2 ape;
  806.    int i;
  807.    i = 0;
  808.    printf("\nIngrese apellido del jugador: ");
  809.    while (((ape.palabra[i]=getchar()) != 10) && i <= LARGOA)
  810.    {
  811.            i++;
  812.    }
  813.    ape.largopalabra = i;
  814.    return ape;
  815. }
  816.  
  817. digito ingresoCedula()
  818. {
  819.    int i=0;
  820.    digito ced;
  821.    printf("\nIngrese Cedula del jugador: ");
  822.    while (((ced.numero[i]=getchar())!= 10) && i<LARGOC)
  823.    {
  824.        i++;
  825.    }
  826.    ced.largodigito = i;
  827.  
  828. return ced;
  829.  
  830. }
  831.  
  832. fecha ingresoFechanacimiento()
  833. {
  834.    fecha fechanac;
  835.    printf("\nIngrese Fecha de Nacimiento dd/mm/aaaa: ");
  836.    scanf("%d/%d/%d",&fechanac.dia,&fechanac.mes, &fechanac.año);
  837.    return fechanac;
  838. }
  839.  
  840. int calcularEdad()
  841. {
  842.    fecha f = ingresoFechanacimiento();
  843.    int edad = 2015 - f.año;
  844.    return edad;
  845. }
  846.  
  847. cadena3 ingresoAlias()
  848. {
  849.    getchar();
  850.    cadena3 ali;
  851.    int i;
  852.    i = 0;
  853.    printf("\nIngrese Alias del jugador: ");
  854.    while (((ali.palabra[i]=getchar()) != 10) && i <= LARGOALI)
  855.    {
  856.            i++;
  857.    }
  858.    ali.largopalabra = i;
  859.    return ali;
  860. }
  861.  
  862.  
  863. void baja(jugador jugadores[])
  864. {
  865.    char confirma;
  866.    int nroJug;
  867.    system("cls");
  868.    printf("\nELIMINAR DATOS DE JUGADORES");
  869.    printf("\n===========================\n");
  870.    nroJug = ingNroJugador();
  871.    if (jugadores[nroJug-1].nombre.largopalabra!=0)
  872.    {
  873.        getchar();
  874.        printf("\nDatos del jugador nro. %d ",nroJug);
  875.        muestroNombre(jugadores, nroJug-1);
  876.        muestroApellido(jugadores, nroJug-1);
  877.        muestroCedula(jugadores, nroJug|-1);
  878.        muestroEdad(jugadores, nroJug-1);
  879.        muestroFechanacimiento(jugadores,nroJug-1);
  880.        muestroAlias(jugadores,nroJug-1);
  881.        printf("\nDesea eliminar dichos datos (S/N) ");
  882.        scanf("%c",&confirma);
  883.        if ((confirma == 'S') || (confirma == 's'))
  884.        {
  885.            inicializo(jugadores,nroJug-1);
  886.        }
  887.        printf("\nDatos Eliminados");
  888.    }
  889.    else
  890.    {
  891.        printf("\njugador NO existe");
  892.  
  893.    }
  894.    getchar();
  895.    printf("\nPresione cualquier tecla para continuar");
  896.    getchar();
  897.  
  898. }
  899.  
  900. void modificacion(jugador jugadores[])
  901. {
  902.    int nroJug;
  903.    system("cls");
  904.    printf("\nMODIFICAR DATOS DE JUGADORES");
  905.    printf("\n==========================\n");
  906.    nroJug = ingNroJugador();
  907.    if (jugadores[nroJug-1].nombre.palabra[1]!=' ')
  908.    {
  909.        getchar();
  910.        printf("\nDatos del jugador nro. %d ",nroJug);
  911.        muestroNombre(jugadores, nroJug-1);
  912.        muestroApellido(jugadores, nroJug-1);
  913.        muestroCedula(jugadores, nroJug-1);
  914.        muestroFechanacimiento(jugadores,nroJug-1);
  915.        muestroEdad(jugadores, nroJug-1);
  916.    }
  917.    else
  918.    {
  919.        getchar();
  920.        printf("\njugador NO existe");
  921.  
  922.    }
  923.    printf("\nPresione cualquier tecla para continuar");
  924.    getchar();
  925.  
  926.  
  927. }
  928.  
  929. void muestroNombre(jugador jugadores[],int pos)
  930. {
  931.    int i;
  932.    printf("\nNombre: ");
  933.    for (i=0;i<jugadores[pos].nombre.largopalabra;i++)
  934.    {
  935.        printf("%c",jugadores[pos].nombre.palabra[i]);
  936.    }
  937. }
  938.  
  939. void muestroApellido(jugador jugadores[],int pos)
  940. {
  941.    int i;
  942.    printf("\nApellido: ");
  943.    for (i=0;i<jugadores[pos].apellido.largopalabra;i++)
  944.    {
  945.        printf("%c",jugadores[pos].apellido.palabra[i]);
  946.    }
  947. }
  948.  
  949. void muestroCedula(jugador jugadores[], int pos)
  950. {
  951.    int i;
  952.    printf("\nCedula: ");
  953.    for (i=0;i<jugadores[pos].cedula.largodigito;i++)
  954.    {
  955.        printf("%c",jugadores[pos].cedula.numero[i]);
  956.    }
  957. }
  958.  
  959.  
  960. void muestroFechanacimiento(jugador jugadores[],int pos)
  961. {
  962.    printf ("\nFecha de Nacimiento: %d/%d/%d",jugadores[pos].fechanacimiento.dia,jugadores[pos].fechanacimiento.mes,jugadores[pos].fechanacimiento.año);
  963.  
  964. }
  965.  
  966. void muestroEdad(jugador jugadores[], int pos)
  967. {
  968.    printf("%d",jugadores[pos].edad);
  969. }
  970.  
  971. void muestroAlias(jugador jugadores[], int pos)
  972. {
  973.    int i;
  974.    printf("\nAlias: ");
  975.    for (i=0;i<jugadores[pos].alias.largopalabra;i++)
  976.    {
  977.        printf("%c",jugadores[pos].alias.palabra[i]);
  978.    }
  979. }
  980.  
  981. void Consultas(jugador jugadores[], int pos)
  982. {
  983.    int i;
  984.  
  985.    system("cls");
  986.    printf("MENU\n");
  987.    printf("====\n");
  988.    printf("1-Listado de jugadores\n");
  989.    printf("2-Listado de todas las partidas\n");
  990.    printf("3-Listado de partidas por jugador\n");
  991.    printf("4-Listado de partidas por fecha\n");
  992.    printf("5-Vuelve al menu anterior\n");
  993.    printf("\n\n");
  994.    char p;
  995.    printf (">>Presiona cualquier tecla y enter para volver al menu ");
  996.    scanf (" %c",&p);
  997.  
  998.    int op;
  999.    op = ingopcion();
  1000.  
  1001.    while (op!=5)
  1002.    {for(i=1;i<CANTJUG;i++){
  1003.                    {printf("\nCedula: %s\n", jugadores[i].cedula);}
  1004.        switch (op)
  1005.        {
  1006.            case 1://Listado de jugadores
  1007.                    printf("\nListado jugadores.\n");
  1008.                    for(i=0;i<CANTJUG;i++){
  1009.                    printf("\nCedula: %s\n", jugadores[i].cedula);
  1010.                    printf("Nombre %s\n", jugadores[i].nombre);
  1011.                    printf("Apellido %s\n", jugadores[i].apellido);
  1012.                    printf("Alias %s\n", jugadores[i].alias);}
  1013.                break;
  1014.            case 2:
  1015.                    /*listado_partidas;*/
  1016.                    break;
  1017.            case 3:
  1018.                    /*listado_partidas_xjugador;*/
  1019.                    break;
  1020.            case 4:
  1021.                    /*listado_partidas_xfecha;*/
  1022.                    break;
  1023.            case 5: menu();
  1024.                    break;
  1025.        }
  1026.  
  1027.    }
  1028. }
  1029.  
  1030. }
  1031.  


Título: Re: Listados de usuarios
Publicado por: crack81 en 13 Julio 2015, 06:18 am
Preguntas porque no te regresaba al menu era por que en la funcion getionar jugadores despues de escoger una opcion no volvia a mostrar el menu para volver al menu principal

Código
  1. void Gestionar_jugadores()
  2. {
  3. system("cls");
  4. jugador jugadores[CANTJUG];
  5. //inicializo todo el arreglo
  6. int i;
  7. for (i=0; i<CANTJUG;i++)
  8. {
  9. inicializo(jugadores,i);
  10. }
  11.  
  12.  
  13.  
  14. int op;
  15. while (op!=4)
  16. {
  17. system("cls");
  18. printf("MENU\n");
  19. printf("====\n");
  20. printf("1-Alta de jugador\n");
  21. printf("2-Baja de jugador\n");
  22. printf("3-Modificacion jugador\n");
  23. printf("4-Volver al menu anterior\n");
  24. printf("\n\n");
  25. op = ingopcion();
  26.  
  27. switch (op)
  28. {
  29.            case 1:
  30. alta(jugadores);
  31.                    break;
  32.            case 2:
  33. baja(jugadores);
  34.                    break;
  35.            case 3:
  36. modificacion(jugadores);
  37.                    break;
  38.            case 4: menu();
  39. break;
  40.        }
  41.  
  42. }
  43.  
  44.  
  45. }
  46.  


y tambien habia un detalle en la funcion alta ya que scanf no leian bien la opcion de confirmar

Código
  1. void alta(jugador jugadores[])//problema me sigue pidiendo jugadores en vez de volver al menu
  2. {
  3. char confirma;
  4. int nroJug;
  5. system("cls");
  6. printf("\nINGRESO DATOS DE JUGADORES");
  7. printf("\n==========================\n");
  8. nroJug = ingNroJugador();
  9. if (jugadores[nroJug-1].nombre.largopalabra==0)
  10. {
  11. jugadores[nroJug-1].nombre = ingresoNombre();
  12. jugadores[nroJug-1].apellido = ingresoApellido();
  13. jugadores[nroJug-1].cedula = ingresoCedula();
  14. jugadores[nroJug-1].fechanacimiento = ingresoFechanacimiento();
  15. jugadores[nroJug-1].alias = ingresoAlias();
  16. printf("Confirma Ingreso S/N");
  17. fflush(stdin);
  18. scanf("%c",&confirma);
  19. if (confirma=='N' || confirma == 'n')
  20. {
  21. inicializo(jugadores,nroJug-1);
  22. menu();
  23. }
  24. }
  25. else
  26. {
  27. printf("\nJugador YA existe");
  28. printf("\nPresione cualquier tecla para continuar");
  29. }
  30.  
  31. }