1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
| #ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#define NB 1
// C'est le nombre de personne total qui vont être sondé
typedef struct sOnDage{
char nom[20];
char prenom[20];
int sexe;
int age;
int choix[5];
}tpersonne;
void saisie(tpersonne sonde[NB]) // Demande de saisie des informations
{int i,j;
for(i=0;i<NB;i++){
printf("\n\nEntrez votre nom:\n");
gets(sonde[i].nom);
gets(sonde[i].nom); //On rajoute un gets supplémentaire pour contourner le bug du programme
printf("\nEntrez votre prenom:\n");
gets(sonde[i].prenom);
printf("\nQuelle age avez vous?\n");
scanf("%i",&sonde[i].age);
printf("\nSexe Masculin tapez 1, sexe Feminin tapez 2\n");
scanf("%i",&sonde[i].sexe);
for(j=0;j<5;j++){ // 5=nombre de titres à selectionner
printf("Quelle est votre titre préféré n°%i?\n",j+1);
scanf("%i",&sonde[i].choix[j]);
}}}
void affiche(tpersonne sonde[NB]) // Affichage des diférentes informations saisies par l'utilisateur
{int i,j;
for(i=0;i<NB;i++){
printf("Le nom est : %s\n",sonde[i].nom);
printf("Le prenom est : %s\n",sonde[i].prenom);
if (sonde[i].age<20)
printf("Vous avez %i ans, vous faites parti de la catégorie moins de 20ans\n",sonde[i].age);
else if(sonde[i].age>=20)
printf("Vous avez %i ans, vous faites parti de la catégorie plus de 20 ans\n",sonde[i].age);
if (sonde[i].sexe==1){
printf("La personne est un homme\n");
printf("Son classement est le suivant:\n\n");}
else{
printf("la personne est une femme\n");
printf("son classement est le suivant:\n\n");}
for(j=0;j<5;j++){
printf("%i\n",sonde[i].choix[j]);
}}}
//Fonction qui permettra de compter le nombre de fois qu'un titre est citéà une position choisie
int contage(tpersonne sonde[NB],int titre,int position){
int i,
comp=0;
for(i=0;i<NB;i++){
if(sonde[i].choix[position]==titre)
comp=comp+1;
}
return comp;
}
int note_de_titre(tpersonne sonde[NB], int titre, int choix,int position){
int i;
int s=0;
for(i=0;i<choix;i++)
if(sonde[i].choix[position]==titre);
s=s+1;
return s;}
//Fonction qui va permettre de sauvegarder les donnée entrés par les utilisateurs
//Données enregistrés dans le répertoire \Debug\SRC
void sauvegarde(tpersonne*sOnDage,int y){
int i;
int j;
char file_name[20];
FILE*fpt;
printf("nom du fichier de sauvegarde:\n ");
scanf("%s",file_name);
fpt=fopen(file_name,"w");
for(i=0;i<y;i++){
fprintf(fpt,"Données personne n°%i\n", i+1);
//"fprintf" écris directement dans le fichier
fprintf(fpt,"Nom: %s\n\n",sOnDage[i].nom);
fprintf(fpt,"Prénom: %s\n\n",sOnDage[i].prenom);
fprintf(fpt,"Age(1= <20ans; 2= >20ans): %i\n\n",sOnDage[i].age);
fprintf(fpt,"Sexe(1=Homme, 2=Femme): %i\n\n",sOnDage[i].sexe);
for(j=0;j<5;j++){
fprintf(fpt,"titre n°%i: %i\n",j+1,sOnDage[i].choix[j]);}}
fclose(fpt);
}
// Permets de charger un fichier déjà sauvegardé auparavant
void chargement (tpersonne*sOnDage,int*ychargement){
int i;
char file_name[20];
int *sOnDage;
FILE *fpt;
printf("Entrez le nom du fichier que vous voullez charger:\n ");
scanf("%s", file_name[20]);
fpt=fopen(file_name,"r");
fscanf(fpt,"%i",&y);
sOnDage=(int*)malloc(*y*sizeof(int));
for(i=0;i<y;i++){
fscanf(fpt,"%i",& sOnDage[i]);}
fclose(fpt);
}
// Fonction Principale
int main(){ //On définis toutes les variables qui seront utilisés dans le main
int z,s, titre, position,note;
int y=NB;
int comp;
int choix[5];
tpersonne sonde[NB];
printf("1: Créer une nouvelle base de donnée\n");
printf("2: Charger une base de donnée déjà enregistré\n");
printf("3: Quitter le programme\n\n");
scanf ("%i",&z);
// On utilise un switch car c'est la fonction la plus pratique pour les menus
switch(z)
{ case 1 : saisie(sonde);
affiche(sonde);
printf("Statistique citation titre \n");
printf("Entrez le numéro d'un des titres que vous voulez compter:\n ");
scanf("%i",&titre);
printf("en quelle position:\n");
scanf("%i",&position);
comp= contage(sonde,NB,position);
printf("\n\nle titre n°%i a été cité en tout %i fois en position %i\n",titre,contage,position);
printf("Note des titres\n\n");
printf("connaitre la note de quelle titre?\n");
scanf("i",¬e);
s=note_de_titre(sonde,titre,choix,position);
printf("\n la note du titre n°%i est de %i",note,s);
sauvegarde(sonde,y);
break;
case 2 : chargement(&y);
break;
}
} |
Partager