vamos a ver...
spoiler
#include <iostream>
#include <stdio>
#include <conio>
using namespace std;
#define N_MAX_PILOTOS 3
typedef char cadena[50];
using namespace std;
struct TFecha{
int dia;
int mes;
int anio;
};
struct TTiempo{
int piloto;
float sectores[3];
float Total;
int minuto;
int segundos;
float milesimas;
};
class piloto{ //Los atributos son los mismos
cadena nombre;
int anio;
cadena nacionalidad;
char escuderia;
char tipo;
public:
void modificarnombre(cadena nom);
void modificaranio(int ani);
void modificarnacionalidad(cadena nac);
void modificarescuderia(char esc);
void modificartipo(char tip);
int veranio();
void vernombre(cadena nom);
void vernacionalidad (cadena nac);
char verescuderia();
char vertipo();
};
//metodos para CREAR PILOTOS & MODIFICAR//
void piloto::modificarnombre(cadena nom){
strcpy(nombre,nom);
}
void piloto::modificarnacionalidad(cadena nac){
strcpy(nacionalidad,nac);
}
void piloto::modificarescuderia(char esc){
escuderia=esc;
}
void piloto::modificartipo(char tip){
tipo=tip;
}
void piloto::modificaranio(int ani){
anio=ani;
}
//metodos para ver los valores.
int piloto::veranio(){
return anio;
}
void piloto::vernombre(cadena nom){
strcpy(nom,nombre);
}
void piloto::vernacionalidad(cadena nac){
strcpy(nac,nacionalidad);
}
char piloto::verescuderia(){
return escuderia;
}
char piloto::vertipo(){
return tipo;
}
class x
{
cadena Nombre;
cadena Pais;
TFecha Fecha;
int NVueltas;
piloto DatosPilotos[N_MAX_PILOTOS];
int NPilotos;
TTiempo DatosClasificacion[N_MAX_PILOTOS];
public:
x(cadena fich=""); // constructor de la Clase X
};
x::x(cadena fich){
cadena ruta;
strcpy(ruta,fich);
int fin;
// este if no me funciona, ruta siempre tiene basura en su conteido
if(ruta!=""){
cout<<ruta;
FILE *fin;
fin=fopen(ruta,"rb");
if (fin!=NULL)
fread(this,sizeof(GranPremio),1,fin);
fclose(fin);
}
for(int i=0;i<N_MAX_PILOTOS;i++){
DatosClasificacion[i].piloto=0;
for(int x=0;x<3;x++){
DatosClasificacion[i].sectores[x]=0;
}
DatosClasificacion[i].minuto=0;
DatosClasificacion[i].segundos=0;
DatosClasificacion[i].milesimas=0;
DatosClasificacion[i].Total=0;
}
int main(){
GranPremio gran;
cadena nomfich;
int mos,modi,sw,numpilotos,numpil;
do{
cout<<"\n1.Crear Parrilla";
cout<<"\n2.Mostrar Pilotos";
cout<<"\n3.Modificar Pilotos";
cout<<"\n4.Cargar Fichero";
cout<<"\n5.Devolver nº Piltos";
cout<<"\n\nElija una opcion:";
cin>>sw;
switch(sw){
case 1:
{
cout<<"\nCuantos Pilotos van a Participar ? ";
cin>>numpil;
gran.CrearParrilla(numpil);
numpilotos=gran.cuantos();
break;
}
case 2:
{
system("cls");
cout<<"\nQue piloto desea mostrar?";
numpilotos=gran.cuantos();
cout<<"\n\t el rango va desde 1 hasta "<<numpilotos;
cin>>mos;
gran.MostrarPilotos(mos-1);
break;
}
case 3:
{
system("cls");
cout<<"Que piloto desea modificar?";
numpilotos=gran.cuantos();
cout<<"\n\t el rango va desde 1 hasta "<<numpilotos;
cin>>modi;
gran.ModificarPilotos(modi-1);
break;
}
case 4:{
//FALLA AL INTENTAR CARGAR EL FICHER
cout<<"\nIntroduce el nombre del fichero :";
cin>>nomfich;
x gp(nomfich); // llamo al constructor y paso el nombre del
// fichero, pero no funciona..
break;
}
case 5:{
cout<<"\nEl numero de pilotos es :"<<gran.cuantos()<<endl;
system("Pause");
break;
}
}
}while(sw!=8);
}
1º¿Como puedo arreglar el if que me comprueba si ahi algo en la variable de tipo cadena llamada ruta.?
2º¿como funciona el constructor, realmente es como los metodos de la clase que le mandas un valor en este caso fich, y carga el fichero?
3º¿En que falla, si en la declaracion del constructor pongo el nombre del fichero me lo carga, pero al pasarselo mediante la opcion 4 del menu, no funciona, aunque el valor que le pasa es el mismo?