Grosse panique!

Signaler
Messages postés
50
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
21 juin 2004
-
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
bonjour, c'est encore moi, je n'arrive decidement pas a trouver pourquoi mon programme n'enregistre pas dans les fichiers, c'est la grosse panique, desole mon programme est long, mais j'ai vraiment besoin d'aide merci.

#include<conio.h>
#include<stdio.h>
#include
#include<string.h>
#define max 19
#define max2 51

/* Prototypes */

void nouvellesfamilles();
void approvisionnement();
void chequesemis();
void solde();
void releve();
void chargement();
void enregistrement();
void depart();
void initialiser();

/* Nom des fichiers */

FILE * familles;
FILE * cheques;

/* Variables */

typedef struct
{
int no;
char nom[20];
int nbpers;
int appro;
}Tenrfamilles;

Tenrfamilles Tfamilles[20];
int Tcheques[max2][max];
int bungalow[20];

int i,enr,j ;
char res;

void main()
{ j=0;
// chargement();
initialiser();
int choix;
do
{
cout<<"\n Gestion des comptes cheques club.";
cout<<"\n 1- saisir la liste des nouvelles familles.";
cout<<"\n 2- saisir un approvisionnement de compte." ;
cout<<"\n 3- Saisir les cheques emis de la journee.";
cout<<"\n 4- lister les familles dont le solde est negatif." ;
cout<<"\n 5- lister le releve de compte d'une famille" ;
cout<<"\n 6- sauvegarder les donnees sur le disque.";
cout<<"\n 7- enregistrer les departs";
cout<<"\n 0 quitter le programme." ;
cout<<"\n votre choix ?";
cin>>choix;
switch(choix)
{case 1:nouvellesfamilles();
break;
case 2:approvisionnement();
break;
case 3:chequesemis();
break;
case 4:solde();
break;
case 5:releve();
break;
case 6:enregistrement();
break;
case 7: depart();
break;
}
} while(choix!=0);
if (enr==0)
{
cout<<"\n vous n'avez pas enregistre vos modifications,souhaitez vous le faire?(O/N)";
cin>>res;
if(res==0)
{
enregistrement();
}
cout<<"\n au revoir";
}
getch();
}

/* option 1*/
void nouvellesfamilles()
{
int nb;
char rep;
rep='o';
nb=1;
i=0;
while( rep=='o')
{
/** on verifie que le bungalow est vide **/

while(i==1)
{ cout<<" rentre dans la boucle";
nb++;
if(Tfamilles[nb].nom == " ")
{
i=1;
}
}


if(nb>=max)
{
cout<<"\n le village vacances est complet, vous ne pouvez plus rajouter de famille.";
cout<<"\n ";
rep='n';
}
else
{
cout<< "\n bungalow no "<< nb;
cout<<"\n entrer le nom:";
cin>>Tfamilles[nb].nom;
cout<<"\n entrer le nombre de personnes:";
cin>>Tfamilles[nb].nbpers;
nb=nb++;
cout<<"\n voulez vous entrer une autre famille?(o/n)" ;
cin>> rep;
}
}
enr=0 ;
}
/* Option 2*/
void approvisionnement()
{int mont,i,r;
char rep[20];
char res,res2;
do
{
i=1;
do
{
cout<<"\n entrer le nom:";
cin>>rep;
do
{ if (strcmp(Tfamilles[i].nom, rep)==0)
{
do
{
cout<<" bungalow numero "<>mont;
cout<<"\n etes vous sur du montant?(O/N):";
cin>>res;
}
while ( res=='n');
}
else
{ cout<< "\n ce nom ne correspond a aucun bungalow." ;
}
i=i+1;
}
while(strcmp(Tfamilles[i].nom, rep)==0 && i<=max);
}
while (strcmp(Tfamilles[i].nom, rep)==1);
Tfamilles[i-1].appro=Tfamilles[i-1].appro+ mont;
cout<<"voulez vous entrer un autre approvisionnement?(O/N):";
cin>> res2;
}while(res2=='o');
enr=0 ;
cout<< Tfamilles[i-1].appro ;
}

/* Option 3 */
void chequesemis()
{
i=1;
j=0;
cout<<Tfamilles[i].appro ;
cout<<"\n lorsque la saisie est terminee ,taper 0 dans le no de bungalow";
do
{
cout<<"\n entrer le no de bungalow:";
cin>>i;
// verification des cheques existants//
do
{
j++;
cout<<"\n ordre numéro:"<<j;
cout<<"\n sommes: "<<Tcheques[i][j];
}
while(Tcheques[i][j]!=0);
if(i!=0)
{
cout<<"\n cheque no: ";
cout<<j;
cout<<"\n entrer le montant du cheque:";
cin>>Tcheques[i][j];
Tfamilles[i].appro= Tfamilles[i].appro -Tcheques[i][j];
cout<< Tfamilles[i].appro ;
}
}
while ( i!=0);
enr=0;

}

/* Option 4 */
void solde()
{
int i,pos;
i=1;
pos=1;
do
{

if(Tfamilles[i].appro<0)
{
cout<<"\n bungalow no"<<Tfamilles[i].no;
cout<<"\n nom:"<<Tfamilles[i].nom;
cout<<"\n approvisionnement:"<<Tfamilles[i].appro;
pos=0;
}
i=i+1;
} while(i!=max);
enr=0;
if(pos==1)
{
cout<<"\n Aucun bingalow n'a le solde negatif";
}
}

/* Option 5 */
void releve()
{
i=0;
int i,j;
cout<<"\n entrer le no du bungalow";
cin>>i;
j=0;
while (j<=max2)
{
if(Tcheques[i][j]!=0)
{
cout<<"\n no du cheque:"<> nb;
// Tfamilles[nb].nom=="";
Tfamilles[nb].appro=0;
Tfamilles[nb].nbpers=0;
for(i=0;i<=max2;i=i+1)
{
for (j=0;j<=max2;j=j+1)
{
Tcheques[i][j]=0;
}
}
}

/* Chargement */
void chargement()
{
int i,j;
i=0;
familles=fopen("familles.dat","r");
while (!feof (familles))
{
fscanf(familles,"%d %s %d %d ",&Tfamilles[i].no,&Tfamilles[i].nom,&Tfamilles[i].nbpers,&Tfamilles[i].appro);
i=i+1;
}
fclose(familles);
cheques=fopen("cheques.dat","r");
while (!feof(cheques))
{
for(i=1;i<=max2;i=i+1)
{for (j=1;j<=max2;j=j+1)
{fscanf(cheques,"%d ",&Tcheques[i][j]);
}
}
}
fclose(cheques);
}

// initialiser//

void initialiser()
{ int i,j;
for(i=0;i<=max2;i=i+1)
{
for (j=0;j<=max2;j=j+1)
{
Tcheques[i][j]=0;
}
}
for(i=1;i<=max;i=i+1)
{
Tfamilles[i].no=i;
//Tfamilles[i].nom=" ";
Tfamilles[i].nbpers=0;
Tfamilles[i].appro=0;

}
}
A voir également:

19 réponses

Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
Tu as fais du pas-à-pas ?,Est-ce-que tu as essaye de faire juste un fprintf normal qui ne soit pas dans un boucle et juste apres avoir fais ton fopen, d'ailleurs il serait preferable de l'ouvrir en "wt" pour specifie que c'est du texte (et non en "w"). Essaye d'isole en faisant un exemple simple :

FILE *f;
f = fopen("familles.dat","wt");
fprintf(f,"teste, pi=%lf",3.1415926535);
fclose(f);
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
pourquoi tu fais à moitié avec des fonctions C et à moitié avec les flux du C++?
Messages postés
50
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
21 juin 2004

honnetement on m'a appris le c et le c++ en meme temps et du coup je confond les deux.
pour le fichier f j'ai essaye et il reste quand meme vide.je comprend pas.
Messages postés
141
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
23 mars 2005
1
t as essaye de faire ce que JCDjcd as dit??

tu peux rajouter des fflush(familles);
pour enregistrer dans le fichier ce que tu as dans le tampon

Chevalier Pheno Starboard, membre de la Freeman-Corp
Messages postés
50
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
21 juin 2004

oui oui j'ai essaye mais ça reste vide
, j'ai aussi ajoute le fflush(familles) mais ça ne marche pas non plus.
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
alors dans ce cas la c'est tres simple :
tu fais un nouveau projet et tu mais un main tres simple, tu fais fopen,fprintf,fclose, et c'est tout, tu appelle que ces trois fonctions, ca marche toujours pas ?
Messages postés
50
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
21 juin 2004

j'ia dejà essaye, mais ça a pas marche, je vais ressayer pour voir, je vais envoyer ce que j'aurai fais, je dois me gourrer quelque part
Messages postés
50
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
21 juin 2004

voilà le programme exact juste pour enregistrer

#include<conio.h>
#include<stdio.h>
#include
#include<string.h>

FILE *f;

void main()
{
f = fopen("familles.dat","wt");
fflush(f);
fprintf(f,"teste, pi=%lf",3.1415926535);
fclose(f);
cout<<"rentre dans le programme";

}
et ça ne marche pas, il y a rien dans le fichier
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
la tu doit avoir un compilateur bizarre car en ce qui me concerne ca marche tres bien
Tu es sur que tu regarde dans le bon fichier?
Messages postés
50
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
21 juin 2004

oui je suis sure

je travaille avec turbo c++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
tu pourrais au moins utiliser gcc qui est gratuit parce que visiblement turbo c++ a quelques petits soucis
Messages postés
50
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
21 juin 2004

j'ai essaye avec visual c++ et ça marche!!
je me prend la tete depuis des semaines alors que ça vient de l'editeur!merci beaucoup
le soulagement!
bisous et encore merci
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
de tt facon un vrai compilo ne compile pas ca

#include<stdio.h>

main()
{

FILE *f = fopen("familles.dat","wt");
fprintf(f,"teste, pi=%lf",3.1415926535);

fclose(f);

return 0;
}


ton fflush ne sert a rien, surtout avant le fprintf
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
ce n'est pas parce que ca ne sert à rien qu'il ne va pas le compiler, ou alors c'est un très bon compilateur
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
tu sais je disais juste ca pour le cout <<
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
ah oui, en fait elle avait oublié le std::, c'est ca?
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
non, en fait cout << c'est du c++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
bah oui, mais on peut très bien utiliser sprintf dans un projet en c++
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
oui mais la c'est du c, et pour le c++ oui on peut se servir de fonction c vu que les 2 languages sont compatible mais n'oublie pas qu'il est standardiser et que certain compilo ca passe pas sur