TRAITEMENT DE STRUCTURES

Slides:



Advertisements
Présentations similaires
GEF 243B Programmation informatique appliquée Listes chaînées I – Tableaux de structures §15.1 – 15.2.
Advertisements

GEF 243B Programmation informatique appliquée
Premier programme en C :
Cours de C – Séance dexercices 12 Octobre Exercice 5 Idem quexercice 1 : lire une ligne au clavier Sans limitation de la longueur de la ligne (utilisez.
Cours de C – Séance dexercices 25 Septembre 2007.
Les fonctions A quoi ça sert ?
Introduction au Langage C,C++
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Rappels C.
Algorithmes et structures de données Cours 10 Patrick Reuter
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
GEF 243B Programmation informatique appliquée Listes chaînées II §15.1 – 15.2.
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
C.
Structures et unions types énumérés Qu'est-ce qu'une structure
Les pointeurs Manipulation d'adresses et de ce qui est contenu dans ces adresses Très important, fondamental même en C mauvaise réputation : 'dur à comprendre',
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
B.Shishedjiev - Informatique II
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
Récursivité.
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que lon veut allouer. Le premier exemple: #include void main()
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
Les fichiers et les chaînes de caractères
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
Les tris.
FICHIERS.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
IFT-2000: Structures de données
Les enregistrements (struct) suite. Struct Rappel Enregistrement : Suite de données pouvant être de types différents, accessibles via une seule variable.
Un langage de programmation hybride
Notre calendrier français MARS 2014
LANGAGE C LP A2I IUT St DIE
Tableaux Introduction aux tableaux à une dimension. Déclaration, stockage, initialisation et accès en lecture ou en écriture aux composantes d’un tableau.
L’essentiel du langage C
Structures des données
Le langage C Structures de données
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
Les pointeurs L'opérateur &.
Le langage C Rappel Pointeurs & Allocation de mémoire.
Ch. PAUL - Piles et Files à l'aide de listes chainées
LES PILES ET FILES.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
La notion de type revisitée en POO
et quelques rappels sur certains éléments du langage C
Les adresses des fonctions
1 FICHIERS. 2 Les Fichiers  Les "entrées-sorties conversationnelles" échangent des informations entre le programme et l'utilisateur.  Le terme de fichier.
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Argc et argv Utilisation des paramètres de la ligne de commande.
Un survol du language C.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que l’on veut allouer. Le premier exemple: #include void main()
ETNA – 1ème année Guillaume Belmas –
Les types composés Les enregistrements.
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
8PRO100 Éléments de programmation Les pointeurs de caractères.
Fiabilisation des lectures au clavier. Problèmes liés à scanf: rencontre de caractères invalides Sans arrêt prématuré: compte = scanf(``%d%c``;&n,&c);
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
Du 8/09 au 12/09 Du 15/09 au 19/09 Du 22/09 au 26/09 Du 29/09 au 3/10
8PRO107 Éléments de programmation Les adresses et les pointeurs.
PRO-1027 Programmation Scientifique en C
3ième Classe (Mardi, 23 Septembre) CSI2572. O jourd'8: E Allocation de mémoire E Déallocation de mémoire E Tableaux (n dimensions) E Arithmetique des.
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Informatique 1A Langage C 6 ème séance 1. Objectifs de la séance 6  Allocation dynamique de mémoire  Application à la création de tableaux 2.
Transcription de la présentation:

TRAITEMENT DE STRUCTURES TABLEAU DE POINTEURS TRAITEMENT DE TEXTE TRAITEMENT DE STRUCTURES

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" } ;

Initialisation de tableaux de pointeurs sur des chaînes Example: tableau de sept pointeurs, chacun d'entre eux désignant une chaîne constante #include <stdio.h> 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

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é Les prototypes des fonctions char *li(char *s); int te(char *s[ ]); void out(char *s[ ],int l); void find(char *list[ ],int l);

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

Traitement de texte Les directives Les prototypes des fonctions #include<stdio.h> 1/5 #include<stdlib.h> #include<conio.h> #include <string.h> #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 prototypes des fonctions

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

Traitement de texte La définition de la fonction d’entré ligne //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<C-1) { *s++=c; i++; } if(i==0&&c==EOF) return NULL; else {*s='\0'; return p; }

Traitement de texte La définition de la fonction d’entré 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; li 0 Entrer ligne. programme traitement texte li 1 affichage des lignes li 2 qui commencent par une lettre li 3 Entrer ligne. CTRL+Z

Traitement de texte La définition de la fonction d’affichage texte void out(char *s[],int l) 5/5 { int i; for(i=0;i<l;i++) puts(s[i]); } void find(char *list[],int l) { int i,cle=0; char car; printf("Entrer caractère ="); car=getch(); printf("\n"); { if(*(list[i])== car) { puts(list[i]); cle=1; if(!cle) printf(“Il n’y a aucune ligne qui commence avec %c\n“,car); La définition de la fonction d’affichage des lignes programme traitement texte affichage des lignes qui commencent par une lettre Entrer caractere = p

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 d’un 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 d’un faculté donné au bien un message (s’il n’y a aucun étudiant)

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

Traitement de structures La définition de la structure 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

Traitement de structures #include <stdio.h> 1/5 #include <conio.h> #include <string.h> #include <stdlib.h> #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 directives La définition de la structure Les prototypes des fonctions

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 d’entré du tableau Appel de la fonction d’affichage du tableau Appel de la fonction d’affichage d’ éléments de la faculté donné

Traitement de structures La définition de la fonction d’entré 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; 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 note: 3.50

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

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

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

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

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); free(x); }

Traitement de structures modèle 2 etud **creation(int l) { etud **t; int i; t=(etud **)malloc(l*sizeof(etud *)); for(i=0;i<l;i++) { t[i]=(etud *)malloc(sizeof(etud)); printf("structure%d:",i); printf("nom:"); fflush(stdin); gets(t[i]-> nom); printf("note:"); scanf("%f",&(*t[i]).note); } return t;

Traitement de structures modèle 2 void affichage(int l,etud **a) { int i; for(i=0;i<l;i++) { printf("%s %.2f\n",a[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;