La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 TABLEAU DE POINTEURS TRAITEMENT DE TEXTE TRAITEMENT DE STRUCTURES.

Présentations similaires


Présentation au sujet: "1 TABLEAU DE POINTEURS TRAITEMENT DE TEXTE TRAITEMENT DE STRUCTURES."— Transcription de la présentation:

1 1 TABLEAU DE POINTEURS TRAITEMENT DE TEXTE TRAITEMENT DE STRUCTURES

2 2 Initialisation de tableaux de pointeurs sur des chaînes Chaîne constante était traduite par le compilateur en une adresse que l'on pouvait affecter à un pointeur sur une chaîne. Cela peut se généraliser à un tableau de pointeurs, comme dans: Cette déclaration réalise la création des 7 chaînes constantes correspondant aux 7 jours de la semaine et l'initialisation du tableau jour avec les 7 adresses de ces 7 chaînes. char * jour[7] = {"lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche" } ;

3 3 Initialisation de tableaux de pointeurs sur des chaînes Example: #include int main(void) { char * jour[7] = { "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"}; int i ; printf ("donnez un entier entre 1 et 7 : ") ; scanf ("%d", &i) ; printf ("Le jour numéro %d de la semaine est %s", i, jour[i-1] ) ; return 0 ; } donnez un entier entre 1 et 7 : 6 Le jour numéro 6 de la semaine est samedi tableau de sept pointeurs, chacun d'entre eux désignant une chaîne constante

4 4 Traitement de texte Faire un programme à traiter 20 lignes (au maximum) de text – 62 caractères par ligne en utilisant les fonctions suvantes: Entrer une ligne de texte Entrer tout le text Afficher le text entré Afficher toutes les lignes qui commencent par une lettre donné char *li(char *s); int te(char *s[ ]); void out(char *s[ ],int l); void find(char *list[ ],int l); Les prototypes des fonctions

5 5 Traitement de texte char *s[20] Les lignes de texte

6 6 Traitement de texte #include 1/5 #include #define L 20 #define C 63 char *li(char *s); int te(char *s[]); void out(char *s[],int l); void find(char *list[],int l); Les directives Les prototypes des fonctions

7 7 Traitement de texte void main() 2/5 { char *t[L]; int l, i; l = te(t); out(t,l); find(t,l); } Appel de la fonction dentré texte Appel de la fonction daffichage texte Appel de la fonction daffichage des lignes

8 8 Traitement de texte //entrer une ligne de texte 3/5 char *li(char *s) { char c,*p=s; int i=0; printf("Entrer ligne.\n"); while(c=getchar(),c!='\n'&&c!=EOF&&i

9 9 Traitement de texte //entrer tout le texte 4/5 int te(char *s[]) { int i=0,l; char *buf; buf=(char*)malloc(63); while(1) { printf("li %d\n",i); if(li(buf)==NULL || i==L)break; l=strlen(buf); s[i]=(char *)malloc(l+1); if(s[i]==NULL) { printf("Pas de place\n"); exit(1); } strcpy(s[i],buf); i++; } free (buf); free(s); return i; } La définition de la fonction dentré texte li 0 Entrer ligne. programme traitement texte li 1 Entrer ligne. affichage des lignes li 2 Entrer ligne. qui commencent par une lettre li 3 Entrer ligne. CTRL+Z

10 10 Traitement de texte void out(char *s[],int l) 5/5 { int i; for(i=0;i

11 11 Traitement de structures modèle 1 Faire un programme C de création et traitement d'un tableau d'éléments de type structuré (avec un nombre maximal 30). Afficher tous les étudiants dun faculté donné. Chaque structure est composée des champs suivants: a) nom - chaîne de caractères; b) faculté - chaîne de caractères; c) note moyenne - nombre réel. Utiliser les fonctions suvantes: Entrer les éléments dans le tableau Afficher le tableau Afficher les étudiants dun faculté donné au bien un message (sil ny a aucun étudiant)

12 12 Traitement de structures modèle 1 etudiant *tab[MAX] Les structures nom faculte note

13 13 Traitement de structures typedef struct {char nom[30]; char faculte[10]; float note; } etudiant; int entrer(etudiant *s[ ]); void sortir(etudiant *s[ ],int n); void sortir_el(etudiant *s); void chercher(etudiant *s[ ],int n,char fac_d[]); Les prototypes des fonctions La définition de la structure

14 14 Traitement de structures #include 1/5 #include #define MAX 30 #define RET "" typedef struct {char nom[30]; char faculte[10]; float note; } etudiant; int entrer(etudiant *s[]); void sortir(etudiant *s[],int n); void sortir_el(etudiant *s); void chercher(etudiant *s[],int n,char fac_d[]); Les prototypes des fonctions La définition de la structure Les directives

15 15 Traitement de structures void main() 2/5 { int n; char fac_d[10]; etudiant *tab[MAX]; printf("Entrer les donnees des " "etudiants.\n"); n=entrer(tab); printf("\n La liste donnee\n"); sortir(tab,n); printf("Entrer faculte donne:"); gets(fac_d); chercher(tab,n,fac_d); } Appel de la fonction dentré du tableau Appel de la fonction daffichage du tableau Appel de la fonction daffichage d éléments de la faculté donné

16 16 Traitement de structures int entrer(etudiant *s[]) 3/5 { char *buf=(char*)malloc(31); int n=0; while(1) { printf("Entrer Nom ou bien RET:"); if(strcmp(gets(buf),RET)==0 || n==MAX) break; else { s[n]=(etudiant*)malloc(sizeof(etudiant)); strcpy(s[n]->nom,buf); printf("Entrer faculte:"); gets(s[n]->faculte); printf("Entrer note:"); s[n]->note=atof(gets(buf)); } n++; } free(buf); free(s); return n; } La définition de la fonction dentré Entrer les donnees des etudiants. Entrer Nom ou bien RET:Ana Entrer faculte:FOE Entrer note:4.50 Entrer Nom ou bien RET:Ivan Entrer faculte:FETT Entrer note:5.50 Entrer Nom ou bien RET:Lili Entrer faculte:FOE Entrer note:3.50

17 17 Traitement de structures void sortir(etudiant *s[],int n) 4/5 { int i; for(i=0;i nom); printf("faculte:%s\n",s -> faculte); printf("note:%.2f\n",s -> note); } La définition de la fonction daffichage du tableau La définition de la fonction daffichage dun élément La liste donnee Nom:Ana faculte:FOE note:4.50 Nom:Ivan faculte:FETT note:5.50 Nom:Lili faculte:FOE note:3.50

18 18 Traitement de structures void chercher(etudiant *s[],int n,char fac_d[]) 5/5 { int trouve=0; int i; for (i=0; ifaculte,fac_d)==0) { sortir_el(s[i]); trouve=1; } if(!trouve) printf("On n'a pas trouve etudiant de faculte %s \n",fac_d); } La définition de la fonction daffichage d éléments de la faculté donné Entrer faculte donne:FETT Nom:Ivan faculte:FETT note:5.50

19 19 Traitement de structures modèle 2 Faire un programme C de création et affichage d'un tableau dynamique d'éléments de type structuré. Chaque structure est composée des champs suivants: a) nom - chaîne de caractères; b) note. Utiliser les fonctions suvantes: Création du tableau dynamique Affichage du tableau Réallocation de la zone dynamique

20 20 Traitement de structures modèle 2 #include typedef struct {char nom[30]; float note; } etud; etud **creation(int l); void affichage(int l, etud **a); etud **recreation(etud **x,int l);

21 21 Traitement de structures modèle 2 void main() { etud **x; int l; printf("nombre de structures: "); scanf("%d",&l); x=creation(l); printf("Le tableau des structures cree.\n"); affichage(l,x); l++; x=recreation(x,l); affichage(l,x); free(x); }

22 22 Traitement de structures modèle 2 etud **creation(int l) { etud **t; int i; t=(etud **)malloc(l*sizeof(etud *)); for(i=0;i nom); printf("note:"); scanf("%f",&(*t[i]).note); } return t; }

23 23 Traitement de structures modèle 2 void affichage(int l,etud **a) { int i; for(i=0;i nom,a[i]->note); printf("\n"); } } etud **recreation(etud **t,int l) { int i; t=(etud **)realloc(t,sizeof(etud *)); t[l-1]=(etud *)malloc(sizeof(etud)); printf("nom:"); fflush(stdin); gets(t[l-1]-> nom); printf("note:"); scanf("%f",&(*t[l-1]).note); return t; }


Télécharger ppt "1 TABLEAU DE POINTEURS TRAITEMENT DE TEXTE TRAITEMENT DE STRUCTURES."

Présentations similaires


Annonces Google