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ú

Temas - MILAGRITOS

#1
Buenas tardes, tengo un problema con el siguiente programa ya que de acuerdo a los requerimientos debo solicitar la cedula de 2 jugadores y una vez validados debo permitir la creacion de los cartones, sin embargo, no estoy clara como hacer esa validacion de las cedulas, y tambien creo que debo optimizar un poco la creación de los cartones

#include <iostream>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <cstdlib>
#include <ctime>
#include<stdlib.h>
#include <string.h>
using namespace std;

struct jugador
{
char nombre[20];
char apellido [20];
char cedula[12]; //Cada cédula es unica
float monto;
int carton[5][5];// Almacenamiento del cartón / Cada cartón es único
int restan; // CONTADOR QUE SE ACTIVA UNA VEZ INICIADA UNA PARTIDA PARA AYUDAR AL JUGADOR EN SU CONTEO
int Record[2]; // SISTEMA DE RECORD DEL JUGADOR ALMACENA EL NUMERO DE VICTORIAS Y DERROTA DE CADA JUGADOR.
};

struct carton
{
string letras[5];
int numeros [5][5];
};

void inscripcion(struct jugador &j) //Procedimiento que permite el ingreso de los datos
{
int aux;
cout << "Introduzca su nombre: "<<endl;
fflush(stdin);
cin.getline(j.nombre, 20, '\n');

cout << "Introduzca su apellido: "<<endl;
fflush(stdin);
cin.getline(j.apellido, 20, '\n');

cout << "Introduzca su cedula: "<<endl;
fflush(stdin);
cin.getline(j.cedula, 12, '\n');
cout << "Introduzca el monto que desea apostar: "<<endl;
fflush(stdin);

do{
cin>>j.monto;
if (j.monto<0)
cout<<"Debe ingresar un numero positivo. "<<endl;
else
aux= 1;
}
while (aux== 0);
j.Record[0] = 0;
j.Record[1] = 0;
}

void verificar_cedula(struct jugador *j, int &num)// Procedimiento que verifica que el número de cédula no se repita
{
for (int i = 0; i < num; i++) //Se recorre toda la estructura desde 0 hasta el número de participantes
{
if(!strcmp(j[num].cedula, j[i].cedula))
{
cout <<"Numero de cedula ya registrado. Intente de nuevo. "<<endl;
num = num-1; // Se resta 1 al número de jugadores ya que ese jugador no pudo completar su registro
break;
}
}
num = num+1; //Se suma para mantener el control
}

/*void solicitar_cedula (struct jugador *j, char aux_cedula[], int num)
{

}
*/

void llenar_carton (struct carton *arg_bingo, int &num)
{
srand((unsigned)time(0)); //Inicializar random
int numeroRandom, inicio, fin, rango;

for(int i = 0; i < num; i++) // llena las letras de BINGO
{
arg_bingo[i].letras[0] = "B";
arg_bingo[i].letras[1] = "I";
arg_bingo[i].letras[2] = "N";
arg_bingo[i].letras[3] = "G";
arg_bingo[i].letras[4] = "O";
}

for(int i = 0; i < num; i++) // llena los números del BINGO
{
inicio = 1, fin=15;
rango = (fin-inicio) + 1;
for(int j=0;j<5;j++) // llena la columna B ([0] de los cartones del bingo)
{
numeroRandom = inicio +
int(rango * rand() / (RAND_MAX + 1.0));
arg_bingo[i].numeros[0][j]=numeroRandom;
}

inicio = 16, fin=30;
rango = (fin-inicio) + 1;
for(int j = 0; j < 5; j++) // llena la columna I ([1] de los cartones del bingo)
{
numeroRandom = inicio +
int(rango * rand() / (RAND_MAX + 1.0));
arg_bingo[i].numeros[1][j]=numeroRandom;
}

inicio = 31, fin = 45;
rango = (fin-inicio) + 1;
for(int j = 0; j < 5; j++) // llena la columna N ([2] de los cartones del bingo)
{
numeroRandom = inicio +
int(rango * rand() / (RAND_MAX + 1.0));
arg_bingo[i].numeros[2][j]=numeroRandom;
}

inicio = 46, fin=60;
rango = (fin-inicio) + 1;
for(int j = 0; j < 5; j++) // llena la columna G ([3] de los cartones del bingo)
{
numeroRandom = inicio +
int(rango * rand() / (RAND_MAX + 1.0));
arg_bingo[i].numeros[3][j]=numeroRandom;
}

inicio = 61, fin=75;
rango = (fin-inicio) + 1;
for(int j=0;j<5;j++) // llena la columna O ([4] de los cartones del bingo)
{
numeroRandom = inicio +
int(rango * rand() / (RAND_MAX + 1.0));
arg_bingo[i].numeros[4][j]=numeroRandom;
}
}
}

void imprimir_carton (struct carton *arg_bingo, int num) //Procedimiento que imprime los cartones de bingo
{
for(int i = 0; i < num;i++)
{
cout<<"CARTON DEL JUGADOR # "<<i+1<<endl;
cout<<arg_bingo[i].letras[0]<<"\t";
cout<<arg_bingo[i].letras[1]<<"\t";
cout<<arg_bingo[i].letras[2]<<"\t";
cout<<arg_bingo[i].letras[3]<<"\t";
cout<<arg_bingo[i].letras[4]<<"\t";
cout<<endl;
for(int k=0;k<5;k++)
{
cout<<arg_bingo[i].numeros[0][k]<<"\t";
cout<<arg_bingo[i].numeros[1][k]<<"\t";
cout<<arg_bingo[i].numeros[2][k]<<"\t";
cout<<arg_bingo[i].numeros[3][k]<<"\t";
cout<<arg_bingo[i].numeros[4][k]<<"\t"<<endl;
}
cout<<endl;
}
cout<<endl<<endl;
}
int main()
{
struct jugador j[3];
struct carton bingo[3];
char aux_cedula[12];
int ind [2];
int opcion;
int num = 0;
cout<<"********BINGO CASINO UNE********"<<endl;
do
{
cout<<"********MENU PRINCIPAL********"<<endl;
cout<<"1. Inscripcion. "<<endl;
cout<<"2. Jugar. "<<endl;
cout<< "3. Record. "<<endl;
cout<< "4. Salir. "<<endl;
cout<< "Introduzca opcion (1-4): ";
cin>> opcion;

//Inicio del anidamiento
switch (opcion)
{
case 1: //Inscripcion de jugadores
if (num < 3)
{
inscripcion(j[num]);
verificar_cedula(j,num);
system ("pause");
system("cls"); //Limpia la pantalla
}
else
{
cout<<"Limite de participantes ALCANZADO. "<<endl;
}
break;

case 2: //Juego
if(num < 2)// Deben estar registrados al menos dos jugadores
{
if(num == 0)
{
cout << "No hay jugadores registrados.Para JUGAR necesita 2 jugadores minimo."<<endl;
system ("pause");
system ("cls");
}
else
{
cout <<"Para JUGAR necesita 2 jugadores minimo." << endl;
system ("pause");
system ("cls");
}
}

else //Si esta la cantidad necesaria para poder jugar
{
solicitar_cedula (j, aux_cedula, num);
// llenar_carton (bingo, num);
// imprimir_carton (bingo, num);
}
}

}
while (opcion!=4); //No hay opcion 4 sino que el programa se cierra cuando el usuario coloca "4"
return 0;
}
#2
Tengo varias dudas pero dos principales, 1) como puedo evitar que el usuario siga ingresando en la opcion "inscripcion" una vez que ya tenga registrado 3 participantes y lance un "Cantidad de jugadores MAXIMA alcanzada" y 2) problema de variable con carton e int (el struct)

Código (cpp) [Seleccionar]
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <cstdlib>
#include <ctime>
using namespace std;
struct jugador //Estructura para el registro de los participantes
{
  char nombre[50];
    char apellido[50];
   char cedula[8];
char monto[20];
};

struct carton //Estructura para la creación del cartón de bingo
{
string letras[5];
int numeros[5][5];
};

void inscripcion(struct jugador &j) //Subprograma que permite realizar la inscripcion del jugador
{
cout << "Introduzca su nombre: "<<endl;
cin >> j.nombre;
fflush(stdin); //Limpiamos el búfer
cout << "Introduzca su apellido: "<<endl;
cin >> j.apellido;
fflush(stdin); //Limpiamos el búfer
cout << "Introduzca su cedula: "<<endl;
cin >> j.cedula;
fflush(stdin); //Limpiamos el búfer
cout << "Introduzca el monto a apostar: "<<endl;
cin >> j.monto;
fflush(stdin);
}

void crear_carton (struct carton &bingo, int cantidad_cartones)
{
int inicio, fin, rango;
int numeroRandom;
srand((unsigned)time(0)); //Inicializacion del random

for(int i = 0; i < cantidad_cartones; i++)
{
bingo[i].letras[0] = "B";
bingo[i].letras[1] = "I";
bingo[i].letras[2] = "N";
bingo[i].letras[3] = "G";
bingo[i].letras[4] = "O";
}

for(int i = 0; i < cantidad_cartones; i++) //Llenado del carton de bingo
{
inicio = 1, fin = 15;
rango = (fin-inicio)+1;
for (int j = 0; j< 5; j++) //Llenado de la columna B de los cartones de bingo
{
numeroRandom = inicio +
int(rango * rand() / (RAND_MAX + 1.0));
bingo[i].numeros[0][j]=numeroRandom;
}

inicio = 16, fin = 30;
rango = (fin-inicio) + 1;
for(int j = 0; j < 5; j++) //Llenado de la columna I de los cartones de bingo
{
numeroRandom = inicio +
int(rango * rand() / (RAND_MAX + 1.0));
bingo[i].numeros[1][j]=numeroRandom;
}

inicio = 31, fin = 45;
rango = (fin-inicio) + 1;
for(int j = 0;j < 5; j++) // Llenado de la columna N  de los cartones del bingo
{
numeroRandom = inicio +
int(rango * rand() / (RAND_MAX + 1.0));
bingo[i].numeros[2][j]=numeroRandom;
}

inicio = 46, fin = 60;
rango = (fin-inicio) + 1;
for(int j = 0; j < 5; j++) // Llenado de la columna G de los cartones del bingo
{
numeroRandom = inicio +
int(rango * rand() / (RAND_MAX + 1.0));
bingo[i].numeros[3][j]=numeroRandom;
}

inicio = 61, fin = 75;
rango = (fin-inicio) + 1;
for(int j = 0;j < 5; j++) // Llenado de la columna O de los cartones del bingo
{
numeroRandom = inicio +
int(rango * rand() / (RAND_MAX + 1.0));
bingo[i].numeros[4][j]=numeroRandom;
}
}
}

void imprimir_carton (struct carton bingo, int cantidad_cartones)
{
for(int i = 0; i < cantidad_cartones; i++)
{
cout<<bingo[i].letras[0]<<"\t";
cout<<bingo[i].letras[1]<<"\t";
cout<<bingo[i].letras[2]<<"\t";
cout<<bingo[i].letras[3]<<"\t";
cout<<bingo[i].letras[4]<<"\t";
cout<<endl;
for(int k = 0; k < 5; k++)
{
cout<<bingo[i].numeros[0][k]<<"\t";
cout<<bingo[i].numeros[1][k]<<"\t";
cout<<bingo[i].numeros[2][k]<<"\t";
cout<<bingo[i].numeros[3][k]<<"\t";
cout<<bingo[i].numeros[4][k]<<"\t"<<endl;
}
cout<<endl;
}
cout<<endl<<endl;
}

int main()
{
jugador j [3]; //Declaración de la estructura del jugador
carton bingo [10]; //Declaracion del carton de bingo
int opcion, rpta, cont= 1, i=0; //Variables - Inscripcion
int aux = 0;

cout<<"Bienvenido al juego de BINGO."<<endl;
do
{
cout<<"1. Inscripcion. "<<endl;
cout<<"2. Jugar. "<<endl;
cout<< "3. Record. "<<endl;
cout<< "4. Salir. "<<endl;
cout<< "Introduzca opcion (1-4): ";
cin>> opcion;

//Inicio del anidamiento
switch (opcion)
{
case 1: //Inscripcion de jugadores
//PROBLEMA: NO SE DEBE REALIZAR INSCRIPCION MAS DE UNA VEZ Y FALTA COMPROBAR LOS NUMEROS DE CEDULA
cout<<"Cantidad de jugadores a registrar: "<<endl;
cin>>rpta;
aux= rpta;
  if((rpta>0)&&(rpta<= 3))
  {
  do
  {
  cout<<"Inscripcion del jugador # "<<cont<<endl;
  cont++;
  inscripcion (j[i]);
  i++;
  rpta= rpta-1;
  }
  while (rpta>0);
  }
  else
  {
  cout<<"Debe ingresar una cantidad de jugadores diferente."<<endl;
  }
  break;

case 2: //Jugar - Crear cartones para jugadores
crear_carton (bingo, aux);
imprimir_carton (bingo, aux);
//case 3: {Record}

}
}
while (opcion!=4); //No hay opcion 4 sino que el programa se cierra cuando el usuario coloca "4"
return 0;
}



Engel Lex:
- Los códigos deben ir en etiquetas GeSHi
- Los titulos deben ser descriptivos