Código
//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.