hola necesito ayuda con esta practica. El codigo esta bien, el problema es que no soy capaz de ponerlo en forma de modulo. mi profesora me obliga ha hacer las funciones con void y yo las tengo hechas pero con diferentes casos en swicths. espero que me puedan ayudar geracias.
Edito: Por favor, la proxima ves utiliza el botón GeSHi para colorear tu código. Gracias.
Código (cpp) [Seleccionar]
//Complubuilding
#include <iostream>
#include <string>
#include <fstream>
#include <time.h>
#include <cstdlib>
using namespace std;
//const char edif[]="edificios.txt",jug[]="jugadores.txt";
// arrays de edificios
typedef struct{
int codigo;
char nombre[100]; //ESTABA A 100
int precio;
int dinero;
int prestigio;
int estado;
}tEdificio;
//arrays de jugadores
typedef struct{
char usuario[100];
int password;
char empresa[100];
double dinero;
char prestigio;
int comprados;
int poscomprados[100];
int ncomprados;
}tJugador;
int main(){
int password;
char apodo[50];
int cont =0;
char limpiar[100];
int nedificios=0;
int posicioneliminar =0;
int posicioncomprar =0;
int njugador=0;
bool salir = true, ordenado = false;;
ifstream edificios;
string edif;
ifstream jugadores;
string jug;
int eleccion1, i,k,eleccion2;
tEdificio vedificios[100];
tJugador vjugadores[20],auxejug;
//tMonio monio;
edificios.open("edificios.txt");//se abre el archivo que contiene los edificios
if (edificios.is_open()){ //mientras .txt abierto
while(!edificios.fail() && edificios.good() && vedificios[nedificios].codigo!=-1){ // mientras lectura sin fallo distinta del centinela
//getline(edificios, edif);
edificios >> vedificios[nedificios].codigo; edificios.getline(limpiar, 100);
edificios.getline(vedificios[nedificios].nombre, 100);
edificios >> vedificios[nedificios].precio; edificios.getline(limpiar, 100);
edificios >> vedificios[nedificios].dinero; edificios.getline(limpiar, 100);
edificios >> vedificios[nedificios].prestigio; edificios.getline(limpiar, 100);
edificios >> vedificios[nedificios].estado; edificios.getline(limpiar, 100);
/*
cout << "\nCodigo:" << vedificios[nedificios].codigo;
cout << "\nPrecio:" << vedificios[nedificios].precio;
cout << "\nNombre:" << vedificios[nedificios].nombre;
cout << "\nPrestigio:" << vedificios[nedificios].prestigio;
cout << "\nEstado;" << vedificios[nedificios].estado;
*/
nedificios++;
}
edificios.close(); // Cierre del archivo
nedificios--;
} else{
cout <<"ERROR. NO SE ENCUENTRA EL FICHERO";
}
jugadores.open("jugadores.txt");//se abre el archivo que contiene los jugadores
if (jugadores.is_open()){ //mientras .txt abierto
while(!jugadores.fail() && jugadores.good()){ // mientras lectura sin fallo distinta del centinela
//getline(jugadores, jug);
jugadores.getline(vjugadores[njugador].usuario,90);
jugadores >> vjugadores[njugador].password; jugadores.getline(limpiar, 100);
jugadores >> vjugadores[njugador].empresa; jugadores.getline(limpiar, 100);
jugadores >> vjugadores[njugador].dinero; jugadores.getline(limpiar, 100);
jugadores >> vjugadores[njugador].comprados; jugadores.getline(limpiar, 100);
jugadores >> vjugadores[njugador].prestigio; jugadores.getline(limpiar, 100);
njugador++;
}
jugadores.close(); // Cierre del archivo
}
do{
cout << "Introduce tu apodo : ";
cin >> apodo;
cout << "introduce contrasena: ";
cin >> password;
cont++;
while(password != 12345 && cont < 3){
cout << endl << "error contraseña: " << cont << endl << "Introduce tu apodo : ";
cin >> apodo;
cout << "introduce contrasena: ";
cin >> password;
cont++;
}
if(cont ==3) exit(1);
if (strcmp (apodo,"admin") == 0)
{
//menu admin
do{
cout << "Que quieres hacer?" << endl;
cout << "1- Lista de Edificios" << endl;
cout << "2- Lista de Jugadores" << endl;
cout << "3- Nuevo jugador" << endl;
cout << "4-Nuevo edificio"<< endl;
cout << "5-Borrar edificio" << endl;
cout << "6-Borrar jugador" << endl;
cout << "7-Ejecutar un turno" << endl;
cout << "0- Salir" << endl;
cin >> eleccion1;
switch(eleccion1)
{
case 1: //Visualizacion de edificios
for(i=0;i<nedificios;i++){
cout << "\nCodigo:" << vedificios[i].codigo;
cout << "\nNombre:" << vedificios[i].nombre;
cout << "\nPrecio:" << vedificios[i].precio;
cout << "\nDinero:" << vedificios[i].dinero;
cout << "\nPrestigio:" << vedificios[i].prestigio;
cout << "\nEstado: " << vedificios[i].estado << endl << "----------";
}
break;
case 2: //Visualizacion de jugadores
for ( i=0; i<njugador; i++){
cout << "\nUsuario:" << vjugadores[i].usuario;
cout << "\nPassword:" << vjugadores[i].password;
cout << "\nEmpresa:" << vjugadores[i].empresa;
cout << "\nDinero:" << vjugadores[i].dinero;
cout << "\nComprados:" << vjugadores[i].comprados;
cout << "\nPrestigio:" << vjugadores[i].prestigio << endl << "----------";
}
break;
case 3: //Nuevo jugador
//pedir los datos del jugador y guardarlos en vjugadores[njugador].usuario
cout << "\nintroduce tu codigo:" << vjugadores[njugador].usuario;
cin >> vjugadores[njugador].usuario;
cout << "\nintroduce tu password:" << vjugadores[njugador].password;
cin >> vjugadores[njugador].password;
cout << "\ntu empresa:" << vjugadores[njugador].empresa;
cin >> vjugadores[njugador].empresa;
cout << "\ntu dinero:" << vjugadores[njugador].dinero;
cin >> vjugadores[njugador].dinero;
cout << "\ntus edificios comprados:" << vjugadores[njugador].comprados;
cin >> vjugadores[njugador].ncomprados;
cout << "\ntu prestigio:" << vjugadores[njugador].prestigio;
cin >> vjugadores[njugador].prestigio;
njugador++;
break;
case 4: //Nuevo edificio
cout << "\ncodigo: ";
cin >> vedificios[nedificios].codigo;
cout << "\nnombre:";
cin >> vedificios[nedificios].nombre;
cout << "\nprecio:" ;
cin >> vedificios[nedificios].precio;
cout << "\ndinero:" ;
cin >> vedificios[nedificios].dinero;
cout << "\nprestigio:";
cin >> vedificios[nedificios].prestigio;
cout << "\nestado:";
cin >> vedificios[nedificios].estado;
nedificios++;
break;
case 5: //Borrar edificio
cout << "introduce el puesto del edificio para eliminar: ";
cin >> posicioneliminar;
cout << "Se va a eliminar el edificio:";
cout << "codigo:" << vedificios[posicioneliminar].codigo << endl;
cout << "nombre:" << vedificios[posicioneliminar].nombre << endl;
cout << "precio:" << vedificios[posicioneliminar].precio << endl;
cout << "dinero:" << vedificios[posicioneliminar].dinero << endl;
cout << "prestigio:" << vedificios[posicioneliminar].prestigio << endl;
cout << "estado:" << vedificios[posicioneliminar].estado << endl;
for(i=posicioneliminar;i<nedificios-1;i++){
vedificios[i]=vedificios[i+1];
}
nedificios--;
//tEdificios[posicioneliminar);
break;
case 6: //Borrar jugador
cout << "introduce el puesto del jugador para eliminar: ";
cin >> posicioneliminar;
cout << "Se va a eliminar el edificio:"; //hecho con la parte opcional
cout << "usuario:" << vjugadores[posicioneliminar].usuario << endl;
cout << "password:" << vjugadores[posicioneliminar].password << endl;
cout << "empresa:" << vjugadores[posicioneliminar].empresa << endl;
cout << "dinero:" << vjugadores[posicioneliminar].dinero << endl;
cout << "prestigio:" << vjugadores[posicioneliminar].prestigio << endl;
cout << "comprados:" << vjugadores[posicioneliminar].comprados << endl;
for(i=posicioneliminar;i<njugador+1;i++){
vjugadores[i]=vjugadores[i-1];
}
njugador--;
break;
case 7: //Ejecutar un turno
/* Ejecutar un turno: Recorre la lista de jugadores y, para cada uno, recorre su
lista de edificios comprados. Para cada edificio, añade (o resta) el dinero y
puntos de prestigio que el edificio genera en cada turno.
*/
for ( i=0; i<njugador; i++){
for(int j=0; j<vjugadores[i].ncomprados;j++){
vjugadores[i].dinero += vedificios[vjugadores[i].poscomprados[j]].dinero;
vjugadores[i].prestigio += vedificios[vjugadores[i].poscomprados[j]].prestigio;
}
}
break;
/* cout << "\nUsuario:" << jugador[njugador].usuario;
cout << "\nPassword:" << jugador[njugador].password;
cout << "\nEmpresa:" << jugador[njugador].empresa;
cout << "\nDinero:" << jugador[njugador].dinero;
cout << "\nComprados:" << jugador[njugador].comprados;
cout << "\nPrestigio:" << jugador[njugador].prestigio;
nedificios++;
*/
}
}while (eleccion1!=0);
}//fin if
else{
if (strcmp (apodo,"salir") != 0)
{
//int k;
for (k=0; k<njugador; k++){
if(strcmp (vjugadores[k].usuario,apodo)==0)
break;
}
if ( k==njugador){
cout << "jugador incorrecto" << endl;
}
else{
int posjugador=k;
do { //menu jugador
cout << "Que quieres hacer?" << endl;
cout << "1.- Ver mis edificios" << endl;
cout << "2.- Ver los edificios disponibles" << endl;
cout << "3.- Comprar un edificio" << endl;
cout << "4.- Ver la clasificación ordenada por dinero" << endl; //ordenado por dinero
cout << "5.- Ver la clasificación ordenada por prestigio" << endl; //ordenado por prestigio
cout << "0.- Cerrar la sesión" << endl;
cin >> eleccion2;
switch(eleccion2)
{
case 1: //ver mis edificios
for(int j=0; j<vjugadores[posjugador].ncomprados;j++){
cout << "codigo:" << vedificios[vjugadores[posjugador].poscomprados[j]].codigo << endl;
cout << "nombre:" << vedificios[vjugadores[posjugador].poscomprados[j]].nombre << endl;
cout << "precio:" << vedificios[vjugadores[posjugador].poscomprados[j]].precio << endl;
cout << "dinero:" << vedificios[vjugadores[posjugador].poscomprados[j]].dinero << endl;
cout << "prestigio:" << vedificios[vjugadores[posjugador].poscomprados[j]].prestigio << endl;
cout << "estado:" << vedificios[vjugadores[posjugador].poscomprados[j]].estado << endl;
}
break;
case 2: //Edificios disponibles
for(i=0;i<nedificios;i++){
cout << "\nCodigo:" << vedificios[i].codigo;
cout << "\nNombre:" << vedificios[i].nombre;
cout << "\nPrecio:" << vedificios[i].precio;
cout << "\nDinero:" << vedificios[i].dinero;
cout << "\nPrestigio:" << vedificios[i].prestigio;
cout << "\nEstado: " << vedificios[i].estado << endl << "----------";
}
break;
case 3 : //Compra de Edificios
cout << "introduce el puesto del edificio : ";
cin >> posicioncomprar;
cout << "Se va a comprar el edificio:";
cout << "codigo:" << vedificios[posicioncomprar].codigo << endl;
cout << "nombre:" << vedificios[posicioncomprar].nombre << endl;
cout << "precio:" << vedificios[posicioncomprar].precio << endl;
cout << "dinero:" << vedificios[posicioncomprar].dinero << endl;
cout << "prestigio:" << vedificios[posicioncomprar].prestigio << endl;
cout << "estado:" << vedificios[posicioncomprar].estado << endl;
vjugadores[posjugador].dinero = vjugadores[posjugador].dinero - vedificios[posicioncomprar].dinero;
vjugadores[posjugador].poscomprados[vjugadores[posjugador].ncomprados++]=posicioncomprar;
vedificios[posicioncomprar].estado=1;
/*for(i=posicioncomprar;i<nedificios-1;i++){
vedificios[i]=vedificios[i+1];
}
nedificios--;
*/
break;
case 4: //Ver clasificacion ordenada por dinero
for ( int i =0; (i <njugador-1)&& !ordenado;i++){
ordenado=true;
for ( int j =0; j <njugador-i-1; j++){
if(vjugadores[j].dinero <vjugadores[j+1].dinero){
ordenado = false;
auxejug = vjugadores[j];
vjugadores[j]=vjugadores[j+1];
vjugadores[j+1]= auxejug;
}
for ( i=0; i<njugador; i++){
cout << "\nUsuario:" << vjugadores[i].usuario;
cout << "\nDinero:" << vjugadores[i].dinero;
cout << "\nComprados:" << vjugadores[i].ncomprados;
cout << "\nPrestigio:" << vjugadores[i].prestigio << endl << "----------";
}
}
}
break;
case 5: //Ver clasificacion ordenada por prestigio
for ( int i =0; (i <njugador-1)&& !ordenado;i++){
ordenado=true;
for ( int j =0; j <njugador-i-1; j++){
if(vjugadores[j].prestigio <vjugadores[j+1].prestigio){
ordenado = false;
auxejug = vjugadores[j];
vjugadores[j]=vjugadores[j+1];
vjugadores[j+1]= auxejug;
}
for ( i=0; i<njugador; i++){
cout << "\nUsuario:" << vjugadores[i].usuario;
cout << "\nDinero:" << vjugadores[i].prestigio;
cout << "\nComprados:" << vjugadores[i].ncomprados;
}
}
}
break;
break;
}
}while (eleccion2!=0);
}
}
}
}while (strcmp (apodo,"salir") != 0);
system ("pause");
return 0;
}
Edito: Por favor, la proxima ves utiliza el botón GeSHi para colorear tu código. Gracias.