Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - dragonlady

#1
Programación C/C++ / Re: Listados de usuarios
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

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define LARGON 15
#define LARGOA 15
#define LARGOC 7
#define LARGOALI 10
#define CANTJUG 100

typedef struct {
   char palabra[LARGON];
   int largopalabra;
}cadena; //estructura tipo cadena para nombre jugador

typedef struct {
   char palabra[LARGOA];
   int largopalabra;
}cadena2; //otra estructura tipo cadena(2) para apellido jugador

typedef struct {
   char numero[LARGOC];
   int largodigito;
}digito; //tipo digito para CI jugador

typedef struct {
   int dia;
   int mes;
   int año;
}fecha; //defino estructura fecha para ser utilizada en la fecha de nacimiento

typedef struct {
   char palabra[LARGOALI];
   int largopalabra;
}cadena3; //definoi estructura tipo cadena(3) para alias jugador


typedef struct {
   cadena nombre;
   cadena2 apellido;
   cadena3 alias;
   digito cedula;
   int edad;
   fecha fechanacimiento;
} jugador; // defino estructura jugador para ser utilizada en el arreglo que guarda los jugadores.

/*typedef struct{
   fecha fecha_partida;
   char alias1[10];
   char alias2[10];
   int round_jug1;
   int round_jug2;
}info_partida;*/

//Prototipos
void menu();
void reglas();
void fin_juego();
void Elegir_Bosque();
void Iniciar_Bosque();
void Actualizar_Juego();
void Bucle_Juego();
void mover_tirarflecha(int);
void inicializo(jugador jugadores[], int pos);//inicializo jugadores
void menu();//armo el menu
int ingopcion();//ingreso la ocpion del menu
int ingNroJugador();//ingreso nro del jugador
void alta(jugador jugadores[]);//procedimiento de alta
cadena ingresoNombre();// ingreso nombre del jugador
cadena2 ingresoApellido();//ingreso apellido del jugador
cadena3 ingresoAlias();//ingreso alias del jugador
digito ingresoCedula();//ingreso cedula del jugador
int calcularEdad();//calculo la Edad del jugador con la fecha de nacimiento
fecha ingresoFechanacimiento();//ingreso fecha de nacimiento
void baja(jugador jugadores[]);//procedimiento para dar de baja al jugador
void modificacion(jugador jugadores[]);//procedimiento para consultar el jugador
void muestroNombre(jugador jugadores[],int pos);//muestro el nombre del jugador
void muestroApellido(jugador jugadores[],int pos);//muestro el apellido del jugador
void muestroCedula(jugador jugadores[],int pos);//muestro la cedula del jugador
void muestroEdad(jugador jugadores[],int pos);//muestro la edad del jugador
void muestroFechanacimiento(jugador jugadores[],int pos);//muestro la fecha de nacimiento
void muestroAlias(jugador jugadores[], int pos);//muestro el alias
void Gestionar_jugadores();
void Consultas();
fecha fecha_del_dia();

//Variables globales
char bosque6x6[6][6];
char bosque8x8[8][8];
char bosque10x10[10][10];
char bosque14x14[14][14];
char bosque18x18[18][18];

int opcion=0;
int tam_bosque=0;

int main()
{
   while(opcion!=5)
   {
       fecha_del_dia();
       system("cls");
       menu();
       scanf("%d",&opcion);
       switch(opcion)
       {
           case 1: Elegir_Bosque();
                   break;
           case 2: reglas();
                   break;
           case 3: Gestionar_jugadores();
                   break;
           case 4: Consultas();
                   break;
           case 5: fin_juego();
                   break;

       }
    }
  return 0;
}

void menu()
{
  printf("     ______ARQUEROS EN EL BOSQUE_______\n");
  printf("     ____________OOOOOO________________\n");
  printf("     _________OOOOOOOOOOOOO____________\n");
  printf("     _____OOOOOOOOOOOOOOOOOOOO_________\n");
  printf("     ___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
  printf("     ___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
  printf("     _____OOOOOOOOOOOOOOOOOOOO_________\n");
  printf("     ______OOOOOOOOOOOOOOOOOO__________\n");
  printf("     _________OOOOOOOOOOOO_____________\n");
  printf("     __<----____OOOOOOOO_______________\n");
  printf("     _____________OOOO_________________\n");
  printf("     _____________OOOO_______---->_____\n");
  printf("     _____________OOOO_________________\n");
  printf("     _____________OOOO_________________\n");
  printf("\n");
  printf("     MENU PRINCIPAL\n");
  printf("     ><><><><><><><\n");
  printf("     Ingrese una de las opciones: \n");
  printf("     1. Jugar\n");
  printf("     2.Ver reglas\n");
  printf("     3.Gestionar jugadores\n");
  printf("     4.Consultas\n");
  printf("     5.Salir del juego\n");
  printf("\n");
}

fecha fecha_del_dia()
{
   fecha fechadia;
   printf("\n              Ingrese Fecha del dia dd/mm/aaaa: ");
   scanf("%d/%d/%d",&fechadia.dia,&fechadia.mes, &fechadia.año);
   return fechadia;
}

void reglas() //aca muestro las reglas. tiene que poder volver al menu anterior
{
  system("cls");
  printf("El juego consiste en eliminar al arquero del extremo opuesto. \n");
  printf("Cada turno puede elegir moverse una casilla o lanzar un flechazo. \n");
  printf("Los flechazos se mueven en linea recta, maximo cinco lugares.\n");
  printf("Ni los jugadores ni los flechazos pueden atravezar los arboles(X)");
  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");
  printf("Jugador primero sera identificado como 1 y jugador segundo como 2.\n");
  printf("\n\n");
  char p;
  printf (">>Presiona cualquier tecla y enter para volver al menu ");
  scanf (" %c",&p);
}

void fin_juego()
{
   system("cls");
   printf("\n\n\n\t\t\t* GRACIAS POR JUGAR! *\n\n\n");
   printf("\t\t\t  Sabrina Cabrera.\n \t\t\t  Programacion.\n \t\t\t  Tecnologo 2015\n\n");
}

void Elegir_Bosque()
{
  system("cls");
  int elige_bosque;
  printf("     >        Ingresa una opcion:        <\n\n");
  printf("     >        1- Bosque de 6 x 6         <\n");
  printf("     >        2- Bosque de 8 x 8         <\n");
  printf("     >        3- Bosque de 10 x 10       <\n");
  printf("     >        4- Bosque de 14 x 14       <\n");
  printf("     >        5- Bosque de 18 x 18       <\n");
  scanf(" %d", &elige_bosque);

  system("cls");

  switch(elige_bosque)
  {
      case 1: tam_bosque = 6;
              Iniciar_Bosque();
              Bucle_Juego();
              break;
      case 2: tam_bosque = 8;
              Iniciar_Bosque();
              Bucle_Juego();
              break;
      case 3: tam_bosque = 10;
              Iniciar_Bosque();
              Bucle_Juego();
              break;
      case 4: tam_bosque = 14;
              Iniciar_Bosque();
              Bucle_Juego();
              break;
      case 5: tam_bosque = 18;
              Iniciar_Bosque();
              Bucle_Juego();
              break;
  }

}
//valores iniciales para el bosque
void Iniciar_Bosque()
{
   srand (time(NULL));

   int Xnum=0;
   int i, j;

   if(tam_bosque == 6)
   {
       for(i = 0; i < tam_bosque;i++)
           for(j = 0; j < tam_bosque;j++)
               bosque6x6[i][j] = ' ';

       bosque6x6[0][0] = '1';
       bosque6x6[5][5] = '2';


       while(Xnum < tam_bosque/2 )

       {
           i = (rand() % tam_bosque);
           j = (rand() % tam_bosque);

           if(bosque6x6[i][j] == ' ')
           {
               bosque6x6[i][j] = 'X';
               Xnum++;
           }

       }
   }

   else if(tam_bosque == 8)
   {
       for(i = 0; i < tam_bosque;i++)
           for(j = 0; j < tam_bosque;j++)
               bosque8x8[i][j] = ' ';

       bosque8x8[0][0] = '1';
       bosque8x8[7][7] = '2';

       while(Xnum < tam_bosque/2 )
       {
           i = rand() % tam_bosque;
           j = rand() % tam_bosque;

           if(bosque8x8[i][j] == ' ')
           {
               bosque8x8[i][j] = 'X';
               Xnum++;
           }

       }
   }
   else if(tam_bosque == 10)
   {
       for(i = 0; i < tam_bosque;i++)
           for(j = 0; j < tam_bosque;j++)
               bosque10x10[i][j] = ' ';

       bosque10x10[0][0] = '1';
       bosque10x10[9][9] = '2';

       while(Xnum < tam_bosque/2 )
       {
           i = rand() % tam_bosque;
           j = rand() % tam_bosque;

           if(bosque10x10[i][j] == ' ')
           {
               bosque10x10[i][j] = 'X';
               Xnum++;
           }

       }
   }
   else if(tam_bosque == 14)
   {
       for(i = 0; i < tam_bosque;i++)
           for(j = 0; j < tam_bosque;j++)
               bosque14x14[i][j] = ' ';

       bosque14x14[0][0] = '1';
       bosque14x14[13][13] = '2';

       while(Xnum < tam_bosque/2 )
       {
           i = rand() % tam_bosque;
           j = rand() % tam_bosque;

           if(bosque14x14[i][j] == ' ')
           {
               bosque14x14[i][j] = 'X';
               Xnum++;
           }

       }
   }
   else if(tam_bosque == 18)
   {
       for(i = 0; i < tam_bosque;i++)
           for(j = 0; j < tam_bosque;j++)
               bosque18x18[i][j] = ' ';

       bosque18x18[0][0] = '1';
       bosque18x18[17][17] = '2';

       while(Xnum < tam_bosque/2 )
       {
           i = rand() % tam_bosque;
           j = rand() % tam_bosque;

           if(bosque18x18[i][j] == ' ')
           {
               bosque18x18[i][j] = 'X';
               Xnum++;
           }

       }
   }

}

//dibuja cuando sea necesario
void Actualizar_Juego()
{
   system("cls");

   if(tam_bosque == 6)
   {
       int i,j;
       printf("\n  ");

       for (j = 0; j < tam_bosque;j++) //filas alfabeticas
           printf("  %c", 'a'+j);
       printf("\n");

       for (i = 0;i < tam_bosque;i++) //columnas numeradas
       {
           printf(" %2d", i);

           for (j = 0;j < tam_bosque;j++)
           {
               printf("| %c", bosque6x6[i][j]);
           }
           printf("| \n");
       }
   }
   else if( tam_bosque == 8)
   {
       int i,j;
       printf("\n  ");

       for (j = 0;j < tam_bosque;j++) //filas alfabeticas
           printf("  %c", 'a'+j);
       printf("\n");

       for (i = 0;i < tam_bosque;i++) //columnas numeradas
       {
           printf(" %2d", i);

           for (j = 0;j < tam_bosque;j++)
           {
               printf("| %c", bosque8x8[i][j]);
           }
           printf("| \n");
       }
   }
   else if( tam_bosque == 10)
   {
       int i,j;
       printf("\n  ");

       for (j = 0;j < tam_bosque;j++) //filas alfabeticas
           printf("  %c", 'a'+j);
       printf("\n");

       for (i = 0;i < tam_bosque;i++) //columnas numeradas
       {
           printf(" %2d", i);

           for (j = 0;j < tam_bosque;j++)
           {
               printf("| %c", bosque10x10[i][j]);
           }
           printf("| \n");
       }
   }
   else if( tam_bosque == 14)
   {
       int i,j;
       printf("\n  ");

       for (j = 0;j < tam_bosque;j++) //filas alfabeticas
           printf("  %c", 'a'+j);
       printf("\n");

       for (i = 0;i < tam_bosque;i++) //columnas numeradas
       {
           printf(" %2d", i);

           for (j = 0;j < tam_bosque;j++)
           {
               printf("| %c", bosque14x14[i][j]);
           }
           printf("| \n");
       }
   }
   else if( tam_bosque == 18)
   {
       int i,j;
       printf("\n  ");

       for (j = 0;j < tam_bosque;j++) //filas alfabeticas
           printf("  %c", 'a'+j);
       printf("\n");

       for (i = 0;i < tam_bosque;i++) //columnas numeradas
       {
           printf(" %2d", i);

           for (j = 0;j < tam_bosque;j++)
           {
               printf("| %c", bosque18x18[i][j]);
           }
           printf("| \n");
       }
   }

}

//jugadas
void Bucle_Juego()
{
   int ganador=0;
   int turno=0;

   printf("Que jugador empieza?: ");
   scanf(" %d", &turno);

   do
   {
       while(ganador == 0)//que se repita mientras no haya ningun ganador
       {
           Actualizar_Juego(); //Actualiza el juego
           mover_tirarflecha(turno); //mueve o ataca

           //Falta comprobar si alguno ya ganó

           //Cambiando los turnos
           if(turno == 1)
           {
               turno = 2;
           }
               else
                   turno = 1;
       }

       //cuando se termine el bucle comprueba quien ha ganado
       if(ganador == 1)
           {
               printf("Ha Ganado el jugador 1");
           }
               else if(ganador == 2)
                   printf("Ha Ganado el jugador 2");

       ganador++;
   }
    while (ganador < 3);

    //para que pregunte si quiere salir o seguir jugando
    /*char respuesta;
    int s=0,n=1;
    printf("Quiere jugar de nuevo? (s/n): ");
    scanf(" %c", &respuesta);

   if (respuesta==s)
   {

   }
       else if (respuesta==n)
           fin_juego();*/

}



void mover_tirarflecha(int turno)
{
   char imagen_jugador; //dibuja 1' o '2' dependiendo del turno

   if(turno == 1)
   {
       imagen_jugador = '1';
       printf("Es el turno del jugador 1\n");
   }
   else
   {
       imagen_jugador = '2';
       printf("Es el turno del jugador 2\n");
   }

  char accion;

   //moverse
  int o_i,d_i; //coordenadas origen
  char o_j,d_j;  //coordenadas destino

  printf("Moverte, tirar flecha o rendirse? (m, t, r)");
  scanf(" %c", &accion);

  //para saber lo que ha ingresado
  if(accion == 'm')
  {
      printf("\nIngrese Coordenadas origen (ej. 0-a) "); //origen
      scanf("%d-%c", &o_i,&o_j);

      printf("\nIngrese Coordenadas destino (1 lugar) "); //destino
      scanf("%d-%c", &d_i,&d_j);


      //Dependiendo del tamaño del bosque
      if( tam_bosque == 6)
      {
          //para que se mueva 1 solo lugar
          /*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]))*/
          {
               bosque6x6[o_i][o_j - 97]= ' '; //queda vacio donde estaba
               bosque6x6[d_i][d_j - 97]= imagen_jugador; //a donde lo mueve mientras esté el espacio vacio
          }
      }
      else if( tam_bosque == 8)
      {
          bosque8x8[o_i][o_j - 97]= ' ';
          bosque8x8[d_i][d_j - 97]= imagen_jugador;
      }
      else if( tam_bosque == 10)
      {
          bosque10x10[o_i][o_j - 97]= ' ';
          bosque10x10[d_i][d_j - 97]= imagen_jugador;
      }
      else if( tam_bosque == 14)
      {
          bosque14x14[o_i][o_j - 97]= ' ';
          bosque14x14[d_i][d_j - 97]= imagen_jugador;
      }
      else if( tam_bosque == 18)
      {
          bosque18x18[o_i][o_j - 97]= ' ';
          bosque18x18[d_i][d_j - 97]= imagen_jugador;
      }

  }
 else if(accion == 't') //para disparar flecha. Se mueven arriba,abajo,izq,derecha
  {
      //para el bosque x6
      if (tam_bosque==6)
      {
          int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
          int i=d_i;
          int j=d_j;

          while((limite<5) && (arriba<6) && (bosque6x6[i][j]!='X'))//para arriba
          {
              if (bosque6x6[i][j]!='2')
                 {
                       arriba++;
                       j++;
                       printf("Fallaste!\n");
                 }
                 else printf("GAME OVER: Jugador 2");
          }


          while((limite<5) && (abajo<6) && (bosque6x6[i][j]!='X'))//para abajo

          {
              if (bosque6x6[i][j]!='2')
                 {
                       abajo++;
                       j--;
                       printf("Fallaste!\n");
                 }

                 else printf("GAME OVER: Jugador 2");

          }

          while((limite<5) && (izq<6) && (bosque6x6[i][j]!='X'))//para la izquierda
          {
              if (bosque6x6[i][j]!='2')
                   {
                       izq++;
                       i--;
                       printf("Fallaste!\n");
                 }
                 else printf("GAME OVER: Jugador 2");
   printf ("\t>>Presiona cualquier tecla y enter para volver al menu principal");
   getchar();

          }

          while((limite<5) && (derecha<6) && (bosque6x6[i][j]!='X'))//para la derecha
          {
              if (bosque6x6[i][j]!='2')
                 {
                       derecha++;
                       i++;
                       printf("Fallaste!\n");
                 }

                 else printf("GAME OVER: Jugador 2");

          }


      }
  }
   else if (accion = 'r')
   {
       printf("Te has rendido: Perdiste!");
       system("cls");
       printf("GAME OVER");
       menu();
   }

}

void Gestionar_jugadores()
{
   system("cls");
   jugador jugadores[CANTJUG];
                   //inicializo todo el arreglo
   int i;
   for (i=0; i<CANTJUG;i++)
   {
       inicializo(jugadores,i);
   }

   system("cls");
   printf("MENU\n");
   printf("====\n");
   printf("1-Alta de jugador\n");
   printf("2-Baja de jugador\n");
   printf("3-Modificacion jugador\n");
   printf("4-Volver al menu anterior\n");
   printf("\n\n");

   int op;
   op = ingopcion();

   while (op!=4)
   {
       switch (op)
       {
           case 1:
                   alta(jugadores);
                   break;
           case 2:
                   baja(jugadores);
                   break;
           case 3:
                   modificacion(jugadores);
                   break;
           case 4: menu();
                   break;
       }

   }


}


int ingopcion()
{
   int opcion;
   do
   {
       printf("\nIngrese opcion (1-4)");
       scanf("%d",&opcion);
   }
   while ((opcion < 1) || (opcion > 4));
   return (opcion);
}


void inicializo(jugador jugadores[], int pos)
{
   //inicializo el nombre del jugador
   int x;
   for (x=0;x<LARGON;x++)
   {
       jugadores[pos].nombre.palabra[x] = ' ';
   }
   jugadores[pos].nombre.largopalabra = 0;
   //inicializo la cedula
   for (x=0;x<LARGOC;x++)
   {
       jugadores[pos].cedula.numero[x] = ' ';
   }

   jugadores[pos].edad = 0;
   jugadores[pos].fechanacimiento.dia = 0;
   jugadores[pos].fechanacimiento.mes = 0;
   jugadores[pos].fechanacimiento.año = 0;

   for(x=0;x<LARGOA;x++)
   {
       jugadores[pos].apellido.palabra[x] = ' ';
   }
   jugadores[pos].apellido.largopalabra = 0;

   for(x=0;x<LARGOALI;x++)
   {
       jugadores[pos].alias.palabra[x] = ' ';
   }
   jugadores[pos].alias.largopalabra = 0;
}

int ingNroJugador()
{
   int nrojug;
   do
   {
       printf("Ingrese Nro. de Jugador (1..%d)",CANTJUG);
       scanf("%d",&nrojug);
   }
   while ((nrojug < 1) || (nrojug > CANTJUG));
   return (nrojug);
}

void alta(jugador jugadores[])//problema me sigue pidiendo jugadores en vez de volver al menu
{
   char confirma;
   int nroJug;
   system("cls");
   printf("\nINGRESO DATOS DE JUGADORES");
   printf("\n==========================\n");
   nroJug = ingNroJugador();
   if (jugadores[nroJug-1].nombre.largopalabra==0)
   {
       jugadores[nroJug-1].nombre = ingresoNombre();
       jugadores[nroJug-1].apellido = ingresoApellido();
       jugadores[nroJug-1].cedula = ingresoCedula();
       jugadores[nroJug-1].fechanacimiento = ingresoFechanacimiento();
       jugadores[nroJug-1].alias = ingresoAlias();
       getchar();
       printf("Confirma Ingreso S/N");
       scanf(" %c",&confirma);
       if (confirma=='N' || confirma == 'n')
       {
           inicializo(jugadores,nroJug-1);
           menu();
       }
   }
   else
   {
       getchar();
       printf("\nJugador YA existe");
       printf("\nPresione cualquier tecla para continuar");
       getchar();
   }

}

cadena ingresoNombre()
{
   getchar();
   cadena nom;
   int i;
   i = 0;
   printf("\nIngrese nombre del jugador: ");
   while (((nom.palabra[i]=getchar()) != 10) && i <= LARGON)
   {
           i++;
   }
   nom.largopalabra = i;
   return nom;
}

cadena2 ingresoApellido()
{
   getchar();
   cadena2 ape;
   int i;
   i = 0;
   printf("\nIngrese apellido del jugador: ");
   while (((ape.palabra[i]=getchar()) != 10) && i <= LARGOA)
   {
           i++;
   }
   ape.largopalabra = i;
   return ape;
}

digito ingresoCedula()
{
   int i=0;
   digito ced;
   printf("\nIngrese Cedula del jugador: ");
   while (((ced.numero[i]=getchar())!= 10) && i<LARGOC)
   {
       i++;
   }
   ced.largodigito = i;

return ced;

}

fecha ingresoFechanacimiento()
{
   fecha fechanac;
   printf("\nIngrese Fecha de Nacimiento dd/mm/aaaa: ");
   scanf("%d/%d/%d",&fechanac.dia,&fechanac.mes, &fechanac.año);
   return fechanac;
}

int calcularEdad()
{
   fecha f = ingresoFechanacimiento();
   int edad = 2015 - f.año;
   return edad;
}

cadena3 ingresoAlias()
{
   getchar();
   cadena3 ali;
   int i;
   i = 0;
   printf("\nIngrese Alias del jugador: ");
   while (((ali.palabra[i]=getchar()) != 10) && i <= LARGOALI)
   {
           i++;
   }
   ali.largopalabra = i;
   return ali;
}


void baja(jugador jugadores[])
{
   char confirma;
   int nroJug;
   system("cls");
   printf("\nELIMINAR DATOS DE JUGADORES");
   printf("\n===========================\n");
   nroJug = ingNroJugador();
   if (jugadores[nroJug-1].nombre.largopalabra!=0)
   {
       getchar();
       printf("\nDatos del jugador nro. %d ",nroJug);
       muestroNombre(jugadores, nroJug-1);
       muestroApellido(jugadores, nroJug-1);
       muestroCedula(jugadores, nroJug|-1);
       muestroEdad(jugadores, nroJug-1);
       muestroFechanacimiento(jugadores,nroJug-1);
       muestroAlias(jugadores,nroJug-1);
       printf("\nDesea eliminar dichos datos (S/N) ");
       scanf("%c",&confirma);
       if ((confirma == 'S') || (confirma == 's'))
       {
           inicializo(jugadores,nroJug-1);
       }
       printf("\nDatos Eliminados");
   }
   else
   {
       printf("\njugador NO existe");

   }
   getchar();
   printf("\nPresione cualquier tecla para continuar");
   getchar();

}

void modificacion(jugador jugadores[])
{
   int nroJug;
   system("cls");
   printf("\nMODIFICAR DATOS DE JUGADORES");
   printf("\n==========================\n");
   nroJug = ingNroJugador();
   if (jugadores[nroJug-1].nombre.palabra[1]!=' ')
   {
       getchar();
       printf("\nDatos del jugador nro. %d ",nroJug);
       muestroNombre(jugadores, nroJug-1);
       muestroApellido(jugadores, nroJug-1);
       muestroCedula(jugadores, nroJug-1);
       muestroFechanacimiento(jugadores,nroJug-1);
       muestroEdad(jugadores, nroJug-1);
   }
   else
   {
       getchar();
       printf("\njugador NO existe");

   }
   printf("\nPresione cualquier tecla para continuar");
   getchar();


}

void muestroNombre(jugador jugadores[],int pos)
{
   int i;
   printf("\nNombre: ");
   for (i=0;i<jugadores[pos].nombre.largopalabra;i++)
   {
       printf("%c",jugadores[pos].nombre.palabra[i]);
   }
}

void muestroApellido(jugador jugadores[],int pos)
{
   int i;
   printf("\nApellido: ");
   for (i=0;i<jugadores[pos].apellido.largopalabra;i++)
   {
       printf("%c",jugadores[pos].apellido.palabra[i]);
   }
}

void muestroCedula(jugador jugadores[], int pos)
{
   int i;
   printf("\nCedula: ");
   for (i=0;i<jugadores[pos].cedula.largodigito;i++)
   {
       printf("%c",jugadores[pos].cedula.numero[i]);
   }
}


void muestroFechanacimiento(jugador jugadores[],int pos)
{
   printf ("\nFecha de Nacimiento: %d/%d/%d",jugadores[pos].fechanacimiento.dia,jugadores[pos].fechanacimiento.mes,jugadores[pos].fechanacimiento.año);

}

void muestroEdad(jugador jugadores[], int pos)
{
   printf("%d",jugadores[pos].edad);
}

void muestroAlias(jugador jugadores[], int pos)
{
   int i;
   printf("\nAlias: ");
   for (i=0;i<jugadores[pos].alias.largopalabra;i++)
   {
       printf("%c",jugadores[pos].alias.palabra[i]);
   }
}

void Consultas(jugador jugadores[], int pos)
{
   int i;

   system("cls");
   printf("MENU\n");
   printf("====\n");
   printf("1-Listado de jugadores\n");
   printf("2-Listado de todas las partidas\n");
   printf("3-Listado de partidas por jugador\n");
   printf("4-Listado de partidas por fecha\n");
   printf("5-Vuelve al menu anterior\n");
   printf("\n\n");
   char p;
   printf (">>Presiona cualquier tecla y enter para volver al menu ");
   scanf (" %c",&p);

   int op;
   op = ingopcion();

   while (op!=5)
   {for(i=1;i<CANTJUG;i++){
                   {printf("\nCedula: %s\n", jugadores[i].cedula);}
       switch (op)
       {
           case 1://Listado de jugadores
                   printf("\nListado jugadores.\n");
                   for(i=0;i<CANTJUG;i++){
                   printf("\nCedula: %s\n", jugadores[i].cedula);
                   printf("Nombre %s\n", jugadores[i].nombre);
                   printf("Apellido %s\n", jugadores[i].apellido);
                   printf("Alias %s\n", jugadores[i].alias);}
               break;
           case 2:
                   /*listado_partidas;*/
                   break;
           case 3:
                   /*listado_partidas_xjugador;*/
                   break;
           case 4:
                   /*listado_partidas_xfecha;*/
                   break;
           case 5: menu();
                   break;
       }

   }
}

}
#2
Programación C/C++ / Re: Listados de usuarios
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:

void alta(jugador jugadores[])//problema me sigue pidiendo jugadores en vez de volver al menu
{
    char confirma;
    int nroJug;
    system("cls");
    printf("\nINGRESO DATOS DE JUGADORES");
    printf("\n==========================\n");
    nroJug = ingNroJugador();
    if (jugadores[nroJug-1].nombre.largopalabra==0)
    {
        jugadores[nroJug-1].nombre = ingresoNombre();
        jugadores[nroJug-1].cedula = ingresoCedula();
        jugadores[nroJug-1].fechanacimiento = ingresoFechanacimiento();
        jugadores[nroJug-1].alias = ingresoAlias();
        getchar();
        printf("Confirma Ingreso S/N");
        scanf(" %c",&confirma);
        if (confirma=='N' || confirma == 'n')
        {
            inicializo(jugadores,nroJug-1);
        }
    }
    else
    {
        getchar();
        printf("\nJugador YA existe");
        printf("\nPresione cualquier tecla para continuar");
        getchar();
    }

}


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?
#3
Programación C/C++ / Re: Listados de usuarios
12 Julio 2015, 20:44 PM
Pero si lo pongo así no entiendo porque no me quiere aceptar el %s

printf("\nListado jugadores.\n");
for(i=1;i<CANTJUG;i++){
{printf("\nCedula: %s\n", jugadores[i].cedula);}
for(i=1;i<CANTJUG;i++)
{printf("Nombre %s\n", jugadores[i].nombre);}
for(i=1;i<CANTJUG;i++)
{printf("Apellido %s\n", jugadores[i].apellido);}
for(i=1;i<CANTJUG;i++)
{printf("Alias %s\n", jugadores[i].alias);}
#4
Programación C/C++ / Re: Listados de usuarios
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.

void Consultas()
{
    system("cls");
    jugador jugadores[CANTJUG];
                    //inicializo todo el arreglo
    int i;
    for (i=0; i<CANTJUG;i++)
    {
        inicializo(jugadores,i);
    }

    system("cls");
    printf("MENU\n");
    printf("====\n");
    printf("1-Listado de jugadores\n");
    printf("2-Listado de todas las partidas\n");
    printf("3-Listado de partidas por jugador\n");
    printf("4-Listado de partidas por fecha\n");
    printf("5-Fin del Programa\n");
    printf("\n\n");
    char p;
    printf (">>Presiona cualquier tecla y enter para volver al menu ");
    scanf (" %c",&p);

    int op;
    op = ingopcion();

    int j;
    j=0;

    while (op!=5)
    {
        switch (op)
        {
            case 1:
                    for (i=0; i<j; i++)
                    {puts(jugadores[CANTJUG].cedula.numero[i]);
                    puts(jugadores[CANTJUG].nombre.palabra[i]);
                    puts(jugadores[CANTJUG].apellido.palabra[i]);
                    puts(jugadores[CANTJUG].alias.palabra[i]);}
                    break;
            case 2:
                    /*listado_partidas;*/
                    break;
            case 3:
                    /*listado_partidas_xjugador;*/
                    break;
            case 4:
                    /*listado_partidas_xfecha;*/
                    break;
            case 5: fin_juego();
                    break;
        }

    }
}

Cuando yo quería mostrar un jugador por busqueda para modificarlo o lo que fuese, tenia funciones así:

void muestroCedula(jugador jugadores[], int pos)
{
    int i;
    printf("\nCedula: ");
    for (i=0;i<jugadores[pos].cedula.largodigito;i++)
    {
        printf("%c",jugadores[pos].cedula.numero[i]);
    }
}


por ejemplo.

Entonces no se como hacer para mostrar todos los jugadores en una lista :|
#5
Programación C/C++ / Listados de usuarios
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):


void Consultas()
{
   system("cls");
   jugador jugadores[CANTJUG];
                   //inicializo todo el arreglo
   int i;
   for (i=0; i<CANTJUG;i++)
   {
       inicializo(jugadores,i);
   }

   system("cls");
   printf("MENU\n");
   printf("====\n");
   printf("1-Listado de jugadores\n");
   printf("2-Listado de todas las partidas\n");
   printf("3-Listado de partidas por jugador\n");
   printf("4-Listado de partidas por fecha\n");
   printf("5-Fin del Programa\n");
   printf("\n\n");
   char p;
   printf (">>Presiona cualquier tecla y enter para volver al menu ");
   scanf (" %c",&p);

   int op;
   op = ingopcion();

   while (op!=5)
   {
       switch (op)
       {
           case 1:
                   int i, j;
                   j=0;
                   for (i=0; i<j; i++)
                   puts(jugador jugadores[CANTJUG].cedula.numero[i]);
                   puts(jugador jugadores[CANTJUG].nombre.palabra[i]);
                   puts(jugador jugadores[CANTJUG].apellido.palabra[i]);
                   puts(jugador jugadores[CANTJUG].alias.palabra[i]);
                   break;
           case 2:
                   listado_partidas;
                   break;
           case 3:
                   listado_partidas_xjugador;
                   break;
           case 4:
                   listado_partidas_xfecha;
                   break;
           case 5: fin_juego();
                   break;
       }

   }
}


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? :(

#6
Gracias a todos, ahora si lo solucioné. Sigo con problemas de distracción.


#7
Hola! Ya intenté y no me funciona eso, me tira toda una serie de errores:


In function 'calcularEdad':|
|809|error: 'fecha' has no member named 'a'|
|809|error: stray '\361' in program|
|809|error: expected ',' or ';' before 'o'|
|808|warning: variable 'f' set but not used [-Wunused-but-set-variable]|

#8
Hola a todos, muchas gracias por contestar. El único que no entendí mucho fue el

Citarint calcular_edad(fecha datos)
{
    time_t t = time(NULL);
    struct tm tm = *localtime(&t);

    int a = ((tm.tm_year + 1900) * 100 + tm.tm_mon + 1) * 100 + tm.tm_mday;
    int b = (datos.año * 100 + datos.mes) * 100 + datos.dia;

    return (a - b) / 10000;
}

Y si... me serviría más poder saber aparte del año si la persona ya cumplió o no, por eso estaría bueno involucrar mes y día, para saber la edad realmente.

Igual lo dejé sencillo con algo que por lo menos pudiese entender, y el problema es que no se bien como arreglar este error. Yo se que no puedo retornar un dato de tipo int si la funcion es de tipo fecha, pero no se como lo puedo arreglar:

fecha calcularEdad()
{
   fecha f = ingresoFechanacimiento();
   int edad = 2015 - f.año;
   return edad;
}


error: incompatible types when assigning to type 'fecha' from type 'int'

#9
Hola a todos, he encontrado bastante información al respecto, así que disculpas por no ser más despierta, pero no le encuentro solución por más que intente.
Tengo que calcular la edad de un usuario en una función y lo que tengo es una función que me devuelve la fecha de nacimiento del mismo.
Así:

fecha ingresoFechanacimiento()
{
    fecha fechanac;
    printf("\nIngrese Fecha de Nacimiento dd/mm/aaaa: ");
    scanf("%d/%d/%d",&fechanac.dia,&fechanac.mes, &fechanac.año);
    return fechanac;
}


Básicamente lo que quiero es hacer eso, otra función para mostrar la edad a partir de la función fecha de nacimiento. Pienso que quizás tendria que sacar solo el año de la función fecha de nacimiento, pero no me sale...

Desde ya, gracias!
#10
Buenas tardes a todos, estoy realizando un trabajito que debería ser sencillo en Ensamblador, que es con 2 displays de 7 segmentos, realizar un contador que cuente las pulsaciones de 0 a 99 y se reinicie. Bueno también tiene que poder contar para atrás, pero ni siquiera puedo hacer que cuente solo hasta 99.
Asumo que hay algún tema con basura o un error de algo que no me doy cuenta como identificar, ya que cuenta hasta 10 y después muestra unos símbolos raros que no llegan a ser números. Después sigue contando hasta 20 y se repite lo mismo cada vez que termina la decena. Muestro un vídeo para que sea más claro de visualizar:

[youtube=640,360]https://www.youtube.com/watch?v=mSRi2kY24Jc&feature=youtu.be[/youtube]

Código (asm) [Seleccionar]

processor 16f84
include   <p16f84.inc>
__config  _XT_OSC & _WDT_OFF & _PWRTE_ON


J equ H'20'  
K equ H'21'


org 0  

inicio: movlw B'00000000'
tris PORTB ; bits del puerto B son salidas
movlw B'00000000' ; w := 00000000
movwf PORTB ; inicializa port B =0
increment: incf PORTB,F
call retro
goto increment

; RETRASO

retro: movlw D'400' ; w := 200 decimal
movwf J ; J := w
jloop: movwf K ; K := w
kloop: decfsz K,f ; K = K-1, salta siguiente si es cero
goto kloop
decfsz J,f ; J = J-1, salta al siguiente si es cero
goto jloop
return

end


Está hecho y probado en Proteus 8. Cualquier idea y/o ayuda de que puede estar pasando (que probamos cambiarle varias cosas ya, pero ese error persiste) la agradezco desde ya.