problem de fonction - C++ - Programmation
Marsh Posté le 14-05-2006 à 12:42:02
non, mais qd j'appel ma fonction
j'ai void main {
Liste_M(Mov*P1,char *P2)
je met ça : Liste_M(Mov*P1,nom de mon fichier)
mais je sais pas quoi mettre ds le champs Mov*P1 avec Mov qui est une classe
}
Marsh Posté le 14-05-2006 à 13:24:07
ben tu lis la doc de la fonction Liste_M
et le type de retour de main EST int, pas void.
Marsh Posté le 14-05-2006 à 13:26:38
si tu veux, je dois utiliser ma fonction Liste_M pour constituer une liste d'objet de type Mov, mais je sais pas trop comment appelé ma fonction ds mon main
#include <fstream> //declaration des bibliotheque//
#include <malloc.h> //declaration des bibliotheque//
#include <iostream> //declaration des bibliotheque//
#include <stdio.h> //declaration des bibliotheque//
#include <string> //declaration des bibliotheque//
using namespace std; //declaration des constante//
class Mobile // definition de la classe mobile//
{
protected : float Heure,XA,YA,ZA; //declaration en privee //
Mobile * pointeur; //declaraton d'un pointeur sur Mobile//
public :
Mobile(float P1=10,float P2=0, float P3=0,float P4=0, Mobile * p = NULL) //constructeur par defaut qui place le point a l'origine//
{
Heure=P1;
XA=P2;
YA=P3;
ZA=P4;
pointeur = p;
}
float tabh(); //declaration fonction//
float tabx(); //declaration fonction//
float taby(); //declaration fonction//
float tabz(); //declaration fonction//
Mobile *tabp(); //declaration fonction//
};
class Mov: public Mobile
{
float VX,VY,VZ;
Mov * pointeur;
public :
Mov *tabp();
Mov(float P5,float P6, float P7,float P8, Mov * p);
void Set_Next(Mov*);
bool Vit(Mov *b);
bool Imp_Mov(Mov*b);
};
Mov::Mov(float P5=0,float P6=0, float P7=0,float P8=0, Mov * p = NULL):Mobile()
{
Heure = P5;
XA = P6;
YA = P7;
ZA = P8;
VX=0;
VY=0;
VZ=0;
pointeur = p;
}
void Mov::Set_Next(Mov* PAR)
{
pointeur = PAR ;
};
bool Mov::Vit (Mov *b)
{
float delta,deltb,deltc,deltat;
delta = b->XA-XA;
deltb = b->YA-YA;
deltc = b->ZA-ZA;
deltat= b->Heure-Heure;
if ( deltat ==0)
{return (0);
}
else
{
return (1);
}
}
bool Mov::Imp_Mov (Mov * f) //declaration fonction Imp_Mov//
{bool RET=true;
cout<<endl<<Heure;
cout<<endl<<XA;
cout<<endl<<YA;
cout<<endl<<ZA;
f=pointeur;
if(f==NULL)
{ RET=false;}
return RET;
}
bool Liste_M(Mov*P1,char *P2)
{
char buffer[81];
int t=0;
Mov *tp, *Liste = NULL, *actuel;
float X,Y,Z,T;
ifstream fichier8(P2); //ouverture du fichier//
while ( t < 2) //boucle pour évincer l'en tête//
{
fichier8.getline(buffer, 80);
if (strstr(buffer, "-----" )!= 0)
t++; //incrementation//
}
while(fichier8) //boucle while dacquisition//
{
T = -1; //initialisation//
fichier8>>T>>X>>Y>>Z; //acquisition//
if (T != -1)
{
tp=new Mov(T,X,Y,Z,NULL); //on creer tp un objet de laclasse mobile et on lui fait l;allocation de memoire//
if (Liste == NULL)
Liste = tp;
else
actuel->Set_Next(tp);
actuel = tp;
}
}
if ( Liste != NULL)
{return 1;}
}
float Mobile::tabh() //definition fonction//
{
return Heure;
}
float Mobile::tabx() //definition fonction//
{
return XA;
}
float Mobile::taby() //definition fonction//
{
return YA;
}
float Mobile::tabz() //definition fonction//
{
return ZA;
}
Mobile *Mobile::tabp() //definition fonction//
{
return pointeur;
}
bool is_readable( const std::string & file ) //definition de la fonction de test d'existaence du fichier//
{
std::ifstream fichier( file.c_str() );
return fichier != 0;
}
void main()
{
int lines; //declaration des variables entières//
int line; //declaration des variables entières//
char mesurea[45]; //déclaration d'une chaine de caractère//
int t=0; //déclaration et initialisation de la onstante//
int g=0; //déclaration et initialisation de la onstante//
line=0; //déclaration et initialisation de la onstante//
lines = 0; //déclaration et initialisation de la onstante//
float T,X,Y,Z,minh,maxh,minx,maxx,miny,maxy,minz,maxz;
Mobile*tp, *Liste = NULL; //initialisation//
cout<<" *************************************"<<endl; //affichage du message d'ouverture du pgm//
cout<<" BONJOUR UTILISATEUR "<<endl; //affichage du message d'ouverture du pgm//
cout<<" *************************************"<<endl<<endl<<endl; //affichage du message d'ouverture du pgm//
cout<<" ++ BIENVENUE ++"<<endl<<endl; //affichage du message d'ouverture du pgm//
cout<<"Veuillez entrer l'arboresence complete du fichier de mesure "<<endl<<endl; //affichage message de saisie//
cout<<"Arborescence saisie : "; //affichage//
cin>>mesurea; //acquissition de l'arborescence//
//declaration pointeur sur un float//
char buffer[81]; // definition taille du buffer//
cout<<endl<<"RESULTAT DU TEST D'OUVERTURE : ";
using std::cout;
if ( is_readable( mesurea ) ) //boucle if ....else....//
{
cout << "Fichier existant et lisible.\n"; //affichage message d'existence//
}
else
{
cout << "Fichier inexistant ou non lisible, veuillez relancer le programme.\n"; //affichage message non existence//
} ;
// acquisition tableaux//
Liste_M(*h,mesurea);
while (Mov::Vit (Mov *b)!= 0 )
{(Mov::Vit (Mov *b)};
/*affichage du message de fin de programmme*/
cout<< endl<< endl<<"*************************************"<<endl;
cout<<"le programme est maientenant termine"<<endl; /*affichage du message de fin du programme*/
cout<<"AU REVOIR ET BONNE JOURNEE "<<endl; /*affichage du message de fin de programmme*/
cout<<"*************************************"<<endl<<endl<<endl; /*affichage du message de fin de programmme*/
}
Marsh Posté le 14-05-2006 à 12:26:57
bonjour, je dois utiliser cette fonction ds mon void main, mais je sais pas quoi passer comme premier parametre ds la signature ? un pointeur ?
merci de me répondre
bool Liste_M(Mov*P1,char *P2)
{
char buffer[81];
int t=0;
Mov *tp, *Liste = NULL, *actuel;
float X,Y,Z,T;