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;