airseb | je n'ai pas d'erreurs a la compilation mais j'en ai a l'execution au moment où le programme doit écrire dans le fichier, là j'ai un "access violation".
Je n'ai pas le message "voulez vous refaire un choix"
savez vous d'où vient l'erreur ?(mis a part que c du C et C++ mélangé)
voici le code :
Code :
- #include <iostream.h>
- #include <stdio.h>
- #include <conio.h>
- //#include <fstream.h>
- struct donnees_voiture
- {
- char marque[50] ;
- char type [50];
- char immatriculation[50];
- int nb_chevaux ;
- char energie[25] ;
- char date_de_mise_en_circulation[10] ;
- int consommation_au_litre ;
- char nom_utilisateur[50];
- char prenom_utilisateur[50];
- char date_de_possession[20] ;
- int nb_km_parcourus ;
- char date_proch_controle_technic[20];
- int kilometrage_actuel ;
- float prix_L ;
- char date_fact[20] ;
- float montant_fact ;
- };
- int i=0 ;
- FILE *fichier ;
- void fact_essence_diesel ()
- {
- donnees_voiture fact1[10] ;
- cout<<"veuillez saisir la marque du vehicule puis son type,";
- cin>>fact1[i].marque>>fact1[i].type ;
- cout<<"son n°d'immatriculation, son nombre de chevaux, son energie, ";
- cin>>fact1[i].immatriculation>>fact1[i].nb_chevaux>>fact1[i].energie ;
- cout<<"sa date de mise en circulation, sa consommation en litre ";
- cin>>fact1[i].date_de_mise_en_circulation>>fact1[i].consommation_au_litre;
- cout<<"le nom de l'utilisateur, puis son prenom, la date de possession du vehicule,";
- cin>>fact1[i].nom_utilisateur>> fact1[i].prenom_utilisateur>>fact1[i].date_de_possession;
- cout<<"le nombre de km qu'il a parcouru, la date du prochain controle technique,";
- cin>>fact1[i].nb_km_parcourus>>fact1[i].date_proch_controle_technic;
- cout<<" le kilometrage actuel du véhicule, ";
- cin>>fact1[i].kilometrage_actuel;
- cout<<"le prix du litre, la date de la facture"<<endl ;
- cin >>fact1[i].prix_L>>fact1[i].date_fact;
- fact1[i].montant_fact=(fact1[i].kilometrage_actuel-fact1[i].nb_km_parcourus)*
- fact1[i].prix_L ;
- cout<<"le montant de la facture est de "<< fact1[i].montant_fact<<endl ;
- fprintf(fichier, "%s%s%s%d%s%s%d%s%s%s%d%s%d%f%s%f",fact1[i].marque,
- fact1[i].type, fact1[i].immatriculation, fact1[i].nb_chevaux,
- fact1[i].energie, fact1[i].date_de_mise_en_circulation,
- fact1[i].consommation_au_litre, fact1[i].nom_utilisateur,
- fact1[i].prenom_utilisateur, fact1[i].date_de_possession,
- fact1[i].nb_km_parcourus, fact1[i].date_proch_controle_technic,
- fact1[i].kilometrage_actuel, fact1[i].prix_L, fact1[i].date_fact,
- fact1[i].montant_fact);
- i++ ;
- }
- void main ()
- {
- char reponse ;
- int j=0 ;
- int choix ;
- fichier=fopen("c:\fichier1.dat","w" );
- //ofstream fichier ("c:\fichier1.dat" ) ;
- do
- {
- cout<<"menu général"<<endl ;
- cout<<"1)Saisie d'une facture d'essence ou de diesel"<<endl ;
- cout<<"2)Saisie d'une facture de garage "<<endl ;
- cout<<"3)Bilan d'un véhicule "<<endl ;
- cout<<"autre)Quitter "<<endl ;
- cin>>choix ;
- switch (choix)
- {
- case 1 : fact_essence_diesel ();
- break ;
- case 2 : //fact_garage ();
- break ;
- case 3 : //bilan ()
- break ;
- default : return ;
- }
- if (j==10)
- {
- reponse='n';
- }
- else
- {
- cout<<"voulez vous refaire un choix (o/n)"<<endl ;
- cin>>reponse ;
- j++ ;
- }
- }
- while (reponse == 'o');
- fclose (fichier) ;
- getch () ;
- }
|
Message édité par airseb le 05-05-2003 à 10:57:25
|