Title: TABLEAU DE POINTEURS
1TABLEAU DE POINTEURS
2Initialisation 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 jour7 "lundi", "mardi", "mercredi",
"jeudi", "vendredi", "samedi", "dimanche"
3Initialisation de tableaux de pointeurs sur des
chaînes
tableau de sept pointeurs, chacun d'entre eux
désignant une chaîne constante
include ltstdio.hgt int main(void) char
jour7 "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, jouri-1 )
return 0
donnez un entier entre 1 et 7 6 Le jour numéro
6 de la semaine est samedi
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é
Les prototypes des fonctions
char li(char s) int te(char s ) void
out(char s ,int l) void find(char list
,int l)
5Traitement de texte
Les lignes de texte
char s20
6Traitement de texte
Les directives
includeltstdio.hgt 1/5 includeltstdlib.
hgt includeltconio.hgt include ltstring.hgt 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
7Traitement de texte
Appel de la fonction dentré texte
void main() 2/5 char
tL int l, i l te(t) out(t,l) find
(t,l)
Appel de la fonction daffichage texte
Appel de la fonction daffichage des lignes
8Traitement de texte
La définition de la fonction dentré ligne
//entrer une ligne de texte 3/5 char
li(char s) char c,ps int
i0 printf("Entrer ligne.\n") while(cgetchar(
),c!'\n'c!EOFiltC-1) sc i
if(i0cEOF) return NULL else
s'\0' return p
9Traitement de texte
La définition de la fonction dentré texte
//entrer tout le texte 4/5 int
te(char s) int i0,l char buf
buf(char)malloc(63) while(1)
printf("li d\n",i) if(li(buf)NULL
iL)break lstrlen(buf) si(char
)malloc(l1) if(siNULL)
printf("Pas de place\n") exit(1)
strcpy(si,buf) i free (buf)
free(s) return i
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. CTRLZ
10Traitement de texte
La définition de la fonction daffichage texte
void out(char s,int l) 5/5
int i for(i0iltli) puts(si)
void find(char list,int l) int i,cle0
char car printf("Entrer caractère ")
cargetch() printf("\n")
for(i0iltli) if((listi) car)
puts(listi) cle1
if(!cle) printf(Il ny a aucune ligne qui
commence avec c\n,car)
La définition de la fonction daffichage des
lignes
programme traitement texte affichage des
lignes qui commencent par une lettre Entrer
caractere p programme traitement texte
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)
12Traitement de structures modèle 1
nom faculte note
Les structures
etudiant tabMAX
13Traitement de structures
La définition de la structure
typedef struct char nom30 char
faculte10 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
14Traitement de structures
include ltstdio.hgt 1/5 include
ltconio.hgt include ltstring.hgt include
ltstdlib.hgt define MAX 30 define RET "" typedef
struct char nom30 char faculte10 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
15Traitement de structures
void main() 2/5 int n char
fac_d10 etudiant tabMAX printf("Entrer
les donnees des " "etudiants.\n") nentrer(t
ab) printf("\n La liste donnee\n") sortir(ta
b,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é
16Traitement de structures
La définition de la fonction dentré
int entrer(etudiant s) 3/5
char buf(char)malloc(31) int
n0 while(1) printf("Entrer Nom ou bien
RET") if(strcmp(gets(buf),RET)0 nMAX)
break else sn(etudiant)malloc(sizeo
f(etudiant)) strcpy(sn-gtnom,buf)
printf("Entrer faculte")
gets(sn-gtfaculte) printf("Entrer
note") sn-gtnoteatof(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 faculte FOE Entrer
note 3.50
17Traitement de structures
void sortir(etudiant s,int n)
4/5 int i for(i0iltni)
sortir_el(si) void
sortir_el(etudiant s) printf("Nom s\n",s
-gt nom) printf("faculte s\n",s -gt
faculte) printf("note .2f\n",s -gt note)
La définition de la fonction daffichage du
tableau
La liste donnee Nom Ana faculte FOE note 4.5
0 Nom Ivan faculte FETT note 5.50
Nom Lili faculte FOE note 3.50
La définition de la fonction daffichage dun
élément
18Traitement de structures
La définition de la fonction daffichage d
éléments de la faculté donné
void chercher(etudiant s,int n,char
fac_d) 5/5 int trouve0 int
i for (i0 iltni) if (strcmp(si-gtfaculte,
fac_d)0) sortir_el(si)
trouve1 if(!trouve) printf("On n'a pas
trouve etudiant de faculte s \n",fac_d)
Entrer faculte donneFETT Nom Ivan faculte FET
T note 5.50
19Traitement 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
20Traitement de structures modèle 2
include ltstdio.hgt include ltstdlib.hgt typedef
struct char nom30 float note etud etud
creation(int l) void affichage(int l, etud
a) etud recreation(etud x,int l)
21Traitement de structures modèle 2
void main() etud x int
l printf("nombre de structures
") scanf("d",l) xcreation(l) printf("L
e tableau des structures cree.\n") affichage(l,
x) l xrecreation(x,l) affichage(l,x)
free(x)
22Traitement de structures modèle 2
etud creation(int l) etud t int i
t(etud )malloc(lsizeof(etud ))
for(i0iltli) ti(etud
)malloc(sizeof(etud)) printf("structured",
i) printf("nom") fflush(stdin) get
s(ti-gt nom) printf("note") scanf("f"
,(ti).note) return t
23Traitement de structures modèle 2
void affichage(int l,etud a) int i
for(i0iltli) printf("s
.2f\n",ai -gt nom,ai-gtnote)
printf("\n") etud recreation(etud
t,int l) int i t(etud
)realloc(t,sizeof(etud )) tl-1(etud
)malloc(sizeof(etud))
printf("nom") fflush(stdin) gets(tl-1-gt
nom) printf("note") scanf("f",(tl-1).
note) return t