Enregistrements Et Fichiers Etudiant [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Les Enregistrements EXERCICE 1 : ab-

Définir un type TEMPS qui contient les champs heure, minute, seconde. Ecrire une action paramétrée qui réalise la somme T de deux durées T1 et T2 de type temps. cEcrire une fonction TRANSFORM qui transforme un temps T de type TEMPS en un entier S qui exprime ce temps en secondes. Exemple : pour T=2 heures 10 minutes 37 secondes, S=7837 secondes. dEcrire une procédure DECOMPOS qui décompose un temps S exprimé en secondes en un temps T de type TEMPS. Exemple : pour S=7837 secondes, T=2 heures 10 minutes 37 secondes. eEtant donnés deux temps T1 et T2 de type TEMPS, écrire un algorithme qui calcule le temps T somme des temps T1 et T2 (T, T1 et T2 sont de type TEMPS) en utilisant les actions TRANSFORM et DECOMPOS. #include #include typedef struct {int heure; int minute; int seconde; } Temps; int TRANSFORM(Temps t) {int x; x=t.heure*3600+t.minute*60+t.seconde; return x; } Temps DECOMPS(int x) { Temps T; T.heure=x/3600; T.minute=(x%3600)/60; T.seconde=x%3600%60; return T; } Temps SOMME(Temps T1, Temps T2) {Temps T; T.heure=T1.heure+T2.heure; T.minute=T1.minute+T2.minute; T.seconde=T1.seconde+T2.seconde; return T; } int main()

{ Temps t1,t2,t;int v; printf("donner le temps t1 "); scanf("%d %d %d",&t1.heure,&t1.minute, &t1.seconde); printf("donner le temps t2 "); scanf("%d %d %d",&t2.heure,&t2.minute, &t2.seconde); t=DECOMPS(TRANSFORM(SOMME(t1,t2))); printf("le temps est %d %d %d \n",t.heure,t.minute, t.seconde); system("pause"); return 0; } EXERCICE 6 : Soit un enregistrement E défini par deux informations :  T un tableau d’entiers pouvant contenir au maximum 100 éléments;  N le nombre d’éléments du tableau T. Soit une chaîne de caractères M, écrire une action paramétrée qui retourne un enregistrement de type E contenant toutes les positions de la chaîne ‘ab‘ dans la chaîne M. Exemple : M = ‘faabaababbaabrs’ Résultat :

2

5

4

#include #include #include typedef struct {int tab[100]; int n; }E; E position(char c[]) {E ee; int i,j=0; for(i=0;i=10) fprintf(f,"%d %s %s %f\n",T[i].mat, T[i].nom, T[i].prenom,T[i].moyenne); }

//Affichage des noms des admis rewind(f);/*mettre la tête au debut du fichier puisque le fichier est

ouvert en mode lecture ecriture*/ fscanf(f,"%d %s %s %f",&etd.mat, etd.nom, etd.prenom,&etd.moyenne); while(feof(f)==0) {

printf("le nom est %s \n", etd.nom); fscanf(f,"%d %s %s %f",&etd.mat, etd.nom, etd.prenom,&etd.moyenne);

} fclose (f); } system("pause"); }

En utilisant les fichiers binaires #include #include typedef struct {int mat; char nom[20]; char prenom [20]; float moyenne; }etudiant; int main() {FILE *f; etudiant etd, T[100]; int NbrEtuds,i; f=fopen("Admis.dat","w+");/*ouverture de fichier en mode lecture ecriture + creation de fichier s'il n'existe pas sinon son contenu sera ecrasé*/ if(f==NULL)printf("Erreur de creation de fichier"); else {printf("donner le nombre des etudiants");scanf("%d",&NbrEtuds); for (i=0; i < NbrEtuds; i++) {printf("Entrer les informations de l'etudiant: matricule , nom, prenom, moyenne \n"); scanf("%d %s %s %f", &T[i].mat, T[i].nom, T[i].prenom,&T[i].moyenne); } for (i=0; i < NbrEtuds; i++) if(T[i].moyenne>=10) fwrite(&T[i],sizeof(etudiant),1,f); } //Affichage des noms des admis rewind(f);/*mettre la tête au debut puisque le fichier est ouvert en mode lecture ecriture*/ fread(&etd,sizeof(etd),1,f);

while(feof(f)==0) {

printf("le nom est %s \n", etd.nom); fread(&etd,sizeof(etd),1,f);

} fclose (f); system("pause"); return 0; }

EXERCICE  4 : Soit F un fichier d’entiers représentant des séquences de nombres séparées par un ou plusieurs zéro. Écrire un algorithme qui réalise les traitements suivants : 1. A partir de F (fichier existant), crée un fichier G contenant pour chaque séquence, la moyenne des nombres qui la constituent. 2. Puis, Supprimer les valeurs nulles du fichier G. Exemple : F :  0  0  1   4   3   7   0   0   0   6   -9   2   7   -6   0   -10   3  0   0 G :                 3,75                            0,00                  -3,50 G :                 3,75                                                     -3,50 Fichier Binaire : #include #include main() {FILE *f, *g; int i,n,v,nbr=0; float s=0,t[100]; g=fopen("moyenne.dat","w+"); f=fopen("entier.dat","w+"); if((g==NULL) || (f==NULL))printf("Erreur de creation des fichiers"); else {printf("Remplir f"); printf("Donner n");scanf("%d",&n); for(i=0;i