float point error : domain

float point error : domain - C++ - Programmation

Marsh Posté le 04-04-2005 à 13:22:08    

Slt @ tous, avec un pote on est sur un projet en C++ et on a un message d'erreur à  
 
l'execution "floating point error: domain", et en fait qd on déclare nos réels en entier,  
 
ça marche !! ms nous on a besoin de réels !!!!
 
struct Identite
{
 char Nom[Max_Chaine];
 char Prenom[Max_Chaine];
 int Age;
 char Statut;
};
 
struct Date
{
 int Jour;
 int Mois;
 int Annee;
};
 
struct Client
{
 Identite Identite;
 Date Date;
 int Montant_Emprunte;
 float Taux;
 int Duree_Emprunt;
 float Montant_Interet;
};
 
// suite
 
void Telecharger_Fichier(int &NBCLI)
{
 int i, k;
 char NomFic[Max_Chaine];
 Client TabClient[Max_Chaine];
 cout<<"\Entrez le chemin absolu du fichier a telecharger svp : ";
 cin>>NomFic;
 ifstream ficent(NomFic);
 if(ficent==FAUX)
 {
  cout<<"\nOuverture impossible : fichier inexistant ";
  exit(-1);
 }
 else
 {
  i=0;
  ficent>>TabClient[i].Identite.Nom;
  ficent>>TabClient[i].Identite.Prenom;
  ficent>>TabClient[i].Identite.Age;
  ficent>>TabClient[i].Identite.Statut;
  ficent>>TabClient[i].Date.Jour;
  ficent>>TabClient[i].Date.Mois;
  ficent>>TabClient[i].Date.Annee;
  ficent>>TabClient[i].Montant_Emprunte;
  ficent>>TabClient[i].Taux;
  ficent>>TabClient[i].Duree_Emprunt;
  ficent>>TabClient[i].Montant_Interet;
  while(ficent.eof()==FAUX)
  {
   i++;
   ficent>>TabClient[i].Identite.Nom;
   ficent>>TabClient[i].Identite.Prenom;
   ficent>>TabClient[i].Identite.Age;
   ficent>>TabClient[i].Identite.Statut;
   ficent>>TabClient[i].Date.Jour;
   ficent>>TabClient[i].Date.Mois;
   ficent>>TabClient[i].Date.Annee;
   ficent>>TabClient[i].Montant_Emprunte;
   ficent>>TabClient[i].Taux;
   ficent>>TabClient[i].Duree_Emprunt;
   ficent>>TabClient[i].Montant_Interet;
  }
  NBCLI=i;
  cout<<"\nIl y a "<<i<<" clients\n";
  for(k=0; k<i; k++)
  {
   cout<<TabClient[k].Identite.Nom<<" ";
   cout<<TabClient[k].Identite.Prenom<<" ";
   cout<<TabClient[k].Identite.Age<<" ";
   cout<<TabClient[k].Identite.Statut<<" ";
   cout<<TabClient[k].Date.Jour<<" ";
   cout<<TabClient[k].Date.Mois<<" ";
   cout<<TabClient[k].Date.Annee<<" "; // A COMPLETER CA MARCHE POOO
   cout<<TabClient[k].Montant_Emprunte<<" ";
   cout<<TabClient[k].Taux<<" ";
   cout<<TabClient[k].Duree_Emprunt<<" ";
   cout<<TabClient[k].Montant_Interet<<"\n";
  }
 }
 ficent.close();
}
 
 
QQn peut nous aider ?????????

Reply

Marsh Posté le 04-04-2005 à 13:22:08   

Reply

Marsh Posté le 05-04-2005 à 10:01:26    

Maxi-mome a écrit :

Slt @ tous, avec un pote on est sur un projet en C++ et on a un message d'erreur à  
 
l'execution "floating point error: domain", et en fait qd on déclare nos réels en entier,  
 
ça marche !! ms nous on a besoin de réels !!!! <-super mais çà te dit le message quand ? où dans le code ???
struct Client
{
 Identite Identite;
 Date Date;
 int Montant_Emprunte;
 float Taux; // <- perso je n'utilise jamais le type float mais le type double
 int Duree_Emprunt;
 float Montant_Interet; // <- idem
};
 
// suite
 
void Telecharger_Fichier(int &NBCLI)
{
  while(ficent.eof()==FAUX) // while( !ficent.eof() )
  {
   i++;
   ficent>>TabClient[i].Montant_Interet;
  }
 
  NBCLI=i;
  cout<<"\nIl y a "<<i<<" clients\n"; // !! il y a i+1 clients !!!
  for(k=0; k<i; k++)
  {
  }
 }
 ficent.close();
}


 
Cà n'a rien à voir avec ton problème mais quand  ta boucle while sort TabClient est un tableau de i+1 valeur (de 0 à i), donc quand tu fais ton for(k=0;k<i;k++) tu ne traite pas le dernier élément.
 
Je suis pas un pros des (iof)stream, mais j'ai pris l'habitude de faire un ficent.clear juste après avoir fait ficent.close().
 
Sinon pour ton problème peux tu dire où le compilo te met le message d'erreur.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed