TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.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.
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
Exercice 1 1 (père) et 1 (fils) 1 (père) et 0 (fils)
Structures et unions types énumérés Qu'est-ce qu'une structure
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
RECURSIVITE ARBRES BINAIRES
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()
Programme de baccalauréat en informatique Algorithmique et programmation IFT-1001 Thierry EUDE Hatem Mahbouli Laboratoire #12 Département dinformatique.
TRAITEMENT DE STRUCTURES
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
IFT-2000: Structures de données Les graphes Dominic Genest, 2009.
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
Les enregistrements (struct) suite. Struct Rappel Enregistrement : Suite de données pouvant être de types différents, accessibles via une seule variable.
Instruction sélective switch-case Instruction répétitive do-while For
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
8PRO100 Éléments de programmation Les types composés.
Plan troisième cours Instruction sélective Instruction répétitive
LANGAGE C LP A2I IUT St DIE
Plan cours La notion de pointeur et d’adresse mémoire.
La librairie assert.h.
L’essentiel du langage C
Structures des données
Le langage C Structures de données
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
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()
Structures de données élémentaires dans le contexte du TP #1
ETNA – 1ème année Guillaume Belmas –
Les types composés Les enregistrements.
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.
Structures de données élémentaires
PRO-1027 Programmation Scientifique en C
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.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Informatique 2A Langage C 4ème séance
Tableaux et Pointeurs Chaînes de Caractères Programmation Impérative II.
Eléments de base du langage C
Eléments de base du langage C
Transcription de la présentation:

TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES

Traitement des tableaux des structures 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 des tableaux des structures nom faculté note Les structures etudiant *tab[MAX]

Traitement des tableaux des 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 des tableaux des 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 des tableaux des 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 des tableaux des 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 des tableaux des 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 des tableaux des 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 des tableaux des structures dynamiques nom groupe note Les structures student *array

Traitement des tableaux des structures dynamiques 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) groupe; c) note. Utiliser les fonctions suivantes: Création du tableau dynamique Remplissage d’une structure Affichage du tableau

Traitement des tableaux des structures dynamiques #include <stdio.h> #include <stdlib.h> #include <string.h> #include <memory.h> #define NBR 2 struct etud { char nom[20]; int groupe; float note; }; typedef struct etud STUDENT; STUDENT inputStudent(); STUDENT * addStudentFromKey(short *); void printArray(STUDENT *,short );

Traitement des tableaux des structures dynamiques int main() { STUDENT *array; short i; array=addStudentFromKey(&i); printArray(array,i ); return 0; } STUDENT inputStudent() { STUDENT a; printf("\nEntrer le nom:"); gets(a.nom); printf("\nEntrer le groupe:"); scanf("%d",&a.groupe); printf("\nEntrer la note:"); scanf("%f",&a.note); return a;

Traitement des tableaux des structures dynamiques STUDENT *addStudentFromKey(short *i) { STUDENT a, *array; char word[4]; int n=NBR; *i=0; array=(STUDENT*)malloc(NBR*sizeof(STUDENT)); if(array==NULL) { free (array); exit(1);} while(printf("Structure suivante? –" " (yes/no)"),strcmp(gets(word),"yes")==0) { if(*i == n) { n=n*NBR; array=(STUDENT*)realloc(array,n*sizeof(STUDENT)); }

Traitement des tableaux des structures dynamiques printf("\nEtudiant %d: ",*i+1); a=inputStudent(); memcpy(&array[*i],&a,sizeof(STUDENT)); (*i)++; fflush(stdin); } return array; void printArray(STUDENT *array,short n) { int i; printf("\t\t\tTableau dynamique des structures\ \nNUMERO\t NOM \t\t\t GROUPE NOTE\n"); for(i=0;i<n;i++) printf("%-5d %-28s %-2d\t %10.2f\n", i+1,array[i].nom,array[i].groupe,array[i].note);

Traitement des tableaux des structures dynamiques