Bon voila, je dois rendre un projet qui consiste à faire un carnet d'adresse sous C++, on doit aussi pouvoir extraire des adresses mail d'un texte mais bon j'en suis pas encore là....
Le prob c'est que là mon prog ne marche pas chez moi alors qu'à l'école je pouvais l'exécuter, peut être est-ce parce ke j'ai installé une bibliothèque de mon école. Enfin lors de l'éxécution j'ai le mess : "ce prog va être arreter car opération non conforme etc....." savez vous pkoi ???
Voici ce ke j'ai fait jusqu'à présent :
#include "stdafx.h"
#include "math.h"
#include "biblio.h"
#include "iostream.h"
#include "string.h"
typedef struct
{
char ident[30];
int tcontact;
char nom[20];
char pre[20];
char adr[100];
char ville[20];
int cp;
char pays[20];
char boite[30];
char heb[10];
char ext[5];
int valide;
} contact;
void sauvez_sur_fichier(contact*carnet,int dim)
{
FILE*fichier;
fichier=fopen("projet info","w+" );
fwrite(carnet,sizeof(contact),dim,fichier);
fclose(fichier);
}
void lire_sur_fichier(contact*carnet,int dim)
{
FILE*fichier;
int num;
fichier=fopen("projet info","r+" );
num=fread(carnet,sizeof(contact),dim,fichier);
cout<<num<<endl;
fclose(fichier);
}
/* Fonction servant à saisir chaque champ de la zone pointée */
void saisie(contact *pt)
{
cout<<"Identificateur"<<endl<<flush;
cin>>(*pt).ident;
//cout<<"Type de contact"<<endl<<flush;
//cin>>(*pt).tcontact;
cout<<"Nom"<<endl<<flush;
cin>>(*pt).nom;
cout<<"Prenom"<<endl<<flush;
cin>>(*pt).pre;
//cout<<"Adresse"<<endl<<flush;
//cin>>(*pt).adr;
//cout<<"Ville"<<endl<<flush;
//cin>>(*pt).ville;
//cout<<"Code postal"<<endl<<flush;
//cin>>(*pt).cp;
//cout<<"Pays"<<endl<<flush;
//cin>>(*pt).pays;
//cout<<"Pays"<<endl<<flush;
//cin>>(*pt).pays;
cout<<"Boite"<<endl<<flush;
cin>>(*pt).boite;
cout<<"Hebergeur"<<endl<<flush;
cin>>(*pt).heb;
cout<<"Ext"<<endl<<flush;
cin>>(*pt).ext;
//cout<<"Validite "<<endl<<flush;
(*pt).valide=1;
}
void initialisation(contact carnet[],int l)
{
int i;
for (i=0;i<l;i++)
{
carnet[i].tcontact=-1;
strcpy(carnet[i].ident , "" );
strcpy(carnet[i].boite ,"" );
strcpy(carnet[i].heb , "" );
strcpy(carnet[i].ext , "" );
carnet[i].valide=0;
}
}
void affstr(contact *pt)
{
cout<<"NOM "<<(*pt).nom<<endl<<flush;
cout<<"PRENOM "<<(*pt).pre<<endl<<flush;
cout<<"BOITE E-MAIL "<<(*pt).boite<<"@"<<(*pt).heb<<"."<<(*pt).ext<<endl<<flush;
}
void vider_le_tableau(contact t[], int dim) /* ne sert à rien car la fct affstr le fait déjà*/
{
int i;
for (i=0;i<dim;i++)
{
t[i].valide=0;
}
}
int validation (contact *pt) /* Fonction pour savoir s'il y a ou non un contact dans une case donnée */
{ int c;
c=0;
do
{
c=c+1;
}while((*pt).valide==1);
return c;
}
void affichage (contact carnet[],int a) /* Fonction qui sert à afficher les contacts */
{ int i;
for(i=0;i<a;i++)
{
if (carnet[i].valide!=0)
{
cout<<carnet[i].ident<<endl;
cout<<carnet[i].boite<<"@";
cout<<carnet[i].heb<<".";
cout<<carnet[i].ext<<endl;
}
}
}
void modifier (contact t[], int dimension)
{
contact *pt;
char nom[100];
int i,a;
pt=t;
cout<<"entrez le nom de la personne que vous souhaitez modifier"<<endl;
cin>>nom;
i=0;
while (strcmp(nom,(*pt).ident)!=0) /* strcmp est un outil de comparaison (voir cours)
Tant que le nom qu'on a entré et le nom que l'on veut modifier sont différents, on passe dans la boucle */
{
pt++;
i=i+1;
};
cout<<"Taper le numéro correspondant au menu pour lequel vous souhaitez modifier quelque chose."<<endl;
cout<<"1 - Identification"<<endl ;
cout<<"2 - Boite"<<endl ;
cout<<"3 - Hebergeur"<<endl;
cout<<"4 - Ext"<<endl;
cin>>a;
switch(a)
{
case 1:
{
char nom[30];
cout<<"Entrer le nouveau nom"<<endl;
cin>>nom;
strcpy((*pt).ident,"nom" );
break;
}
case 2:
{
char boite[10];
cout<<"Entrer la nouvelle boite e-mail"<<endl;
cin>>boite;
strcpy((*pt).ident,"boite" );
break;
}
case 3:
{
char heb[20];
cout<<"Entrer le nouvel hébergeur correspondant à votre boite mail"<<endl;
cin>>heb;
strcpy((*pt).ident,"heb" );
break;
}
case 4:
{
char ext[5];
cout<<"Entrer l'extension de votre voite mail"<<endl;
cin>>ext ;
strcpy((*pt).ext,"ext" ) ;
break;
}
}
}
int menu(contact carnet[], int dim)
{
cout<<"QUE VOULEZ VOUS FAIRE ?"<<endl;
cout<<" 0 - Sortir du programme"<<endl;
cout<<" 1 - Saisir un nouveau contact"<<endl;
cout<<" 2 - Affichage "<<endl;
cout<<" 3 - Modifier "<<endl;
cout<<" 4 - Suppression d'un nouveau contact "<<endl;
cout<<" 5 - Suppression d'un doublon "<<endl;
int n;
cin>>n;
switch(n)
{
case 0:
{
break;
}
case 1:
{
saisie (carnet+1);
break;
}
case 2:
{
affichage(carnet+1,100);
break;
}
case 3:
{
modifier(carnet+1,100);
break;
}
}
case 4 :
{
supprimer(carnet+1,100);
break;
}
return n;
}
void supprimer (contact t[], int dim) /* Fonction servant à supprimer un contact */
{
contact *pt;
char nom[100];
int i;
pt=t;
cout<<"Entrer le nom de la personne que vous souhaitez supprimer de votre liste de contacts"<<endl;
cin>>nom;
i=0;
while (strcmp(nom,(*pt).ident)!=0)
{
pt++;
i=i+1;
};
(*(pt)).valide=0;
}
void main()
{
contact carnet[100];
// vider_le_tableau(carnet,100);
initialisation(carnet,100);
lire_sur_fichier(carnet,100);
int n;
do
{
n=menu(carnet,5);
}
while (n != 0);
sauvez_sur_fichier(carnet,100);
}
---------------
Be myself, I have nothing to prove...