Solución

Anuncio
Solución Ex. Junio’06 GrA - Programación C++
Pág. 1
1.
JUEGO DEL AHORCADO.............................................................................................................1
2.
CLASES.............................................................................................................................................3
1.
Juego del Ahorcado
#include
#include
#include
#include
<fstream.h>
<time.h>
<stdlib.h>
<string.h>
void Jugar(char *pal);
int Menu();
void CargaPalabra(char *palabra);
void main()
{
char pal[80]="",ch[2];
while(1){
int opc=Menu();
if (opc==3)break;
else if(opc==1)
CargaPalabra(pal);
else if (opc==2)
Jugar(pal);
}
}
void Jugar(char *pal)
{
char ch;
int len=strlen(pal);
char *adivinados = new char[len+1];
char usados[30]; //son 26 las letras
int nusados=0;
//llevar las cuentas
int intentos=0;
for (int i=0;i<len;i++) adivinados[i]='X';
while(1){
cout << "\nAdivinados: ";
for ( i=0;i<len;i++) cout << adivinados[i]<<" ";
cout << " -> Dar digito:?";
cin >> ch;
usados[nusados++]=ch;
//guardamos el digito
bool esta=false;
for ( i=0;i<len;i++) {
if (ch==pal[i]) {
adivinados[i]=ch;
esta=true;
}
}
if (esta==false) intentos++;
//sino ha acertado
if (intentos==9){
cout << "Ahorcado....La palabra es:"<<pal;
break;
//termina el while
}else{
for ( i=0;i<len;i++) if (adivinados[i]=='X') break;
if (i==len) {
Informática II - Fundamentos de Programación
Paul Bustamante
Solución Ex. Junio’06 GrA - Programación C++
Pág. 2
cout << "Enhorabuena...La palabra es:"<<pal<<endl;
break;
}else{
cout << "\tIntentos:"<<intentos;
cout << " Digitos ya usados: ";
for ( i=0;i<nusados;i++) cout<<usados[i]<<" ";
}
}
}
delete [] adivinados;
}
void CargaPalabra(char *palabra)
{
char file[40];
cout << "Nombre del fichero:?";
cin >> file;
fstream fin(file,ios::in|ios::nocreate);
int num=0;
while(!fin.eof())
{
fin>>palabra;
num++;
}
cout << "Se ha seleccionado 1 de "<<num<<" palabras"<<endl;
fin.close();
//empezar de nuevo
fin.open(file,ios::in|ios::nocreate);
srand(time(NULL));
int n=rand()%num; //elegir cualquier palabra
num=0;
while(!fin.eof())
{
fin>>palabra;
if (num==n) break;
//se termina la busqueda
num++;
}
fin.close();
}
int Menu()
{
int opc;
cout << "\n** Juego del Ahorcado **"<<endl;
cout << "1. Cargar Palabra"<<endl;
cout << "2. Jugar"<<endl;
cout << "3. Salir"<<endl;
cout << "\tOpc:?";
cin >> opc;
return opc;
}
Informática II - Fundamentos de Programación
Paul Bustamante
Solución Ex. Junio’06 GrA - Programación C++
2.
Pág. 3
Clases - Agenda
#include <fstream.h>
#include <string.h>
class Agenda
{
public:
virtual void mostrarInfo(){;}
};
class Persona
{
char nombre[20]; //Apellido, nombre
char dir[20];
//direccion
long telf_fijo;
long telf_movil;
public:
Persona(){}
friend void operator>>(istream&ci, Persona &p){
cin.ignore();
cout << "Nombre:?"; cin.getline(p.nombre,20);
cout << "Direccion:?"; cin.getline(p.dir,20);
cout << "Telf.Fijo:?"; cin>>p.telf_fijo;
cout << "Telf.Movil:?"; cin>>p.telf_movil;
}
friend void operator<<(ostream&co, Persona &p){
cout << "\t"<<p.nombre;
cout << " Dir.:"<<p.dir;
cout << " Fijo::"<<p.telf_fijo;
cout << " Movil::"<<p.telf_movil<<endl;
};
}
class Empresa
{
char nombre[15];
char puesto[20];
long telf;
public:
Empresa(){}
friend void operator>>(istream&ci, Empresa &e){
cin.ignore();
cout << "Empresa:\n";
cout << "Nombre:?"; cin.getline(e.nombre,15);
cout << "Direccion:?"; cin.getline(e.puesto,20);
cout << "Telefono:?"; cin>>e.telf;
}
friend void operator<<(ostream&co, Empresa &e){
cout << "\tEmpresa:\n";
cout << "\t"<< e.nombre;
cout << "\tDir.: "<< e.puesto;
cout << "\tTelf:"<< e.telf << endl;
}
};
Informática II - Fundamentos de Programación
Paul Bustamante
Solución Ex. Junio’06 GrA - Programación C++
Pág. 4
class Contactos:public Agenda
{
Persona p;
Empresa e;
char correo[20];
public:
Contactos(){}
friend void operator>>(istream&ci, Contactos *c){
cin >>c->p;
cout << "Correo:?";
cin >> c->correo;
cin>> c->e;
}
void mostrarInfo(){
cout << p;
cout << "\tCorreo:" << correo << endl;
cout << e;
}
};
int Menu();
void main()
{
Agenda *Lista[40];
int num=0;
while(1){
int opc=Menu();
if (opc==5) { //libera
for (int i=0;i<num;i++) delete Lista[i];
break;
}
else if(opc==1){
Contactos *contact1=new Contactos();
cin >> contact1;
Lista[num++]=contact1;
}
else if(opc==2){
for (int i=0;i<num;i++) {
cout << "Contacto "<<i+1<<":\n";
Lista[i]->mostrarInfo();
}
}
else if(opc==3){
char name[40];
cout << "Nombre del fichero:?";
cin >> name;
fstream fout(name,ios::out|ios::binary);
if (!fout) cout << "Error.."<<endl;
for(int i=0;i<num;i++)
fout.write((char*)Lista[i],sizeof(Contactos));
cout << i << " Datos grabados en " <<name << endl;
fout.close();
}
else if(opc==4){ //cargamos en la lista
char name[40];
cout << "Nombre del fichero:?";
cin >> name;
fstream fin(name,ios::in|ios::nocreate|ios::binary);
if (!fin) { cout << "No puede abrir el fichero" << endl;}
else{
int cont=0;
while(true){
Informática II - Fundamentos de Programación
Paul Bustamante
Solución Ex. Junio’06 GrA - Programación C++
Pág. 5
Contactos *contact1=new Contactos();
Lista[num] = contact1; //copia el leido
if (!fin.read((char*)Lista[num],sizeof(Contactos))) {
delete contact1; //borra el ultimo
break;
}
num++;
cont++;
}
}
}
}
}
cout << cont << " Datos cargados de " <<name << endl;
fin.close();
int Menu()
{
int opc;
cout << "\t\t** Menu Contactos **"<<endl;
cout << "\t\t1. Agregar Contacto"<<endl;
cout << "\t\t2. Ver Contactos"<<endl;
cout << "\t\t3. Grabar Contactos"<<endl;
cout << "\t\t4. Cargar Contactos"<<endl;
cout << "\t\t5. Salir"<<endl;
cout << "\t\t\tOpc:?";
cin >> opc;
}
return opc;
Informática II - Fundamentos de Programación
Paul Bustamante
Descargar