Vous êtes sur la page 1sur 6

TP 4

1. crivez une fonction int somme(int x, int y) qui retourne l'addition de x et y. 2. crivez une fonction void somme(int *resultat, int x, int y) qui additionne

x et y et place le rsultat de cette addition dans la variable resultat.


3. crivez une fonction minuscule char minuscule(char car) qui retourne le

caractre en minuscule (sinon elle retourne le caractre car sans le modifier).


4. crivez une fonction minuscule void minuscule(char *car) qui modifie le

caractre pass par adresse, elle le transforme en minuscule s'il est en majuscule.
5. crivez une fonction int compter_occurrences(char car, int taille, char
*mot) qui retourne le nombre d'occurrences d'un caractre car dans une chane mot de taille taille. Utilisez cette fonction dans le main en lisant le mot avec un scanf puis

essayez de l'utiliser lorsque le mot est entr sur la ligne de commandes.


6. crivez une fonction int compter_voyelles(int taille, char *mot) qui

retourne le nombre de voyelles dans la chane mot de taille taille.


7. Rcrivez la fonction compter_occurrences avec la taille de la chane et le mot qui

sont des variables globales.

Correction du TP 4
1. crivez une fonction int somme(int x, int y) qui retourne l'addition de x et y.
2.

3. #include <stdio.h> 4. #include <stdlib.h>


5.

6. int somme(int x, int y)


7. {

8.

return (x + y); 9. } 10. 11. int main(void) 12. { 13. int nb1, nb2; 14. 15. printf("entrez 2 nombres : "); 16. if(scanf("%d %d", &nb1, &nb2) != 2){ 17. printf("erreur de saisie\n"); 18. exit(1); 19. } 20. 21. printf("la somme de %d et %d est %d\n", nb1, nb2, somme(nb1, nb2)); 22. 23. return 0; 24. }

25.

26. crivez une fonction void somme(int *resultat, int x, int y) qui additionne

x et y et place le rsultat de cette addition dans la variable resultat.


27.

28. #include <stdio.h> 29. #include <stdlib.h>


30.

31. void somme(int *resultat, int x, int y)


32. { 33. *resultat = x + y; 34. } 35. 36. int main(void) 37. { 38. int nb1, nb2, res; 39. 40. printf("entrez 2 nombres : "); 41. if(scanf("%d %d", &nb1, &nb2) != 2){ 42. printf("erreur de saisie\n"); 43. exit(1); 44. } 45. 46. somme(&res, nb1, nb2); 47. printf("la somme de %d et %d est %d\n", nb1, nb2, res); 48. 49. return 0; 50. } 51. 52. crivez une fonction minuscule char minuscule(char car) qui retourne le caractre en minuscule (sinon elle retourne le caractre car sans le modifier). 53. 54. #include <stdio.h> 55. 56. // a -> z code ascii 97 -> 122 57. // A -> Z code ascii 65 -> 90 58. char minuscule(char car) 59. { 60. if( (car >= 65) && (car <= 90) ) 61. return (car + 32) ; 62. 63. return car; 64. } 65. 66. int main(void) 67. { 68. int indice; 69. char mot[255]; 70. 71. printf("entrez un mot : "); 72. scanf("%s", mot); 73. 74. indice = 0; 75. while(mot[indice] != '\0'){ 76. mot[indice] = minuscule(mot[indice]); 77. indice++;

78.
79.

} printf("le mot en minuscules : %s\n", mot);

80. 82.

81. return 0; 83. } 84.

85. crivez une fonction minuscule void minuscule(char *car) qui modifie le
86.

caractre pass par adresse, elle le transforme en minuscule s'il est en majuscule.

87. #include <stdio.h>


88. 89. // a -> z code ascii 97 -> 122 90. // A -> Z code ascii 65 -> 90 91. void minuscule(char *car) 92. { 93. if( (*car >= 65) && (*car <= 90) ) 94. *car += 32 ; 95. } 96. 97. int main(void) 98. { 99. int indice; 100. char mot[255]; 101. 102. printf("entrez un mot : "); 103. scanf("%s", mot); 104. 105. indice = 0; 106. while(mot[indice] != '\0'){ 107. minuscule(&mot[indice]); 108. indice++; 109. } 110. 111. printf("le mot en minuscules : %s\n", mot); 112. 113. return 0; 114. } 115. 116. crivez une fonction int compter_occurrences(char car, int taille, char *mot) qui retourne le nombre d'occurrences d'un caractre car dans une chane mot de taille taille. Utilisez cette fonction dans le main en lisant le mot avec un scanf 117. 118. // VERSION 1 119. // compte les occurrences d'un caractere dans un mot. 120. // 121. // Les tests pourraient etre realises en demandant le caractere 122. // dont on veut connaitre l'occurrence et le mot. 123. // Le test realise ici parcourt le mot et donne pour chaque 124. // lettre du mot le nombre de fois ou elle apparait sans tenir 125. // compte des repetitions : 126. // ./compter zoo 127. // z apparait 1 fois 128. // o apparait 2 fois 129. // o apparait 2 fois 130.

131. #include <stdio.h> 132. #include <string.h> 133. #include <stdlib.h>


134.

135. int compter_occurrences(char car, int taille, char *mot)


136. {

137.
138.

int compteur = 0, indice; for(indice=0; indice < taille; indice++) if(mot[indice] == car) compteur++;

139. 140. 141.


142.

143.

return compteur; 144. } 145. 146. int main(void) 147. { 148. int taille; // taille du mot 149. int i; 150. int nboccur; // nb d'occurrences de la lettre 151. char texte[125]; 152. 153. printf("entrez un mot : "); 154. scanf("%s", texte); 155. 156. taille = strlen(texte); 157. 158. for(i = 0; i < taille; i++){ 159. nboccur = compter_occurrences(texte[i], taille, texte); 160. printf("%c apparait %d fois\n", texte[i], nboccur); 161. } 162. 163. return 0; 164. } 165.

puis essayez de l'utiliser lorsque le mot est entr sur la ligne de commandes.
// idem avec la ligne de commande #include <stdio.h> #include <string.h> #include <stdlib.h> int compter_occurrences(char car, int taille, char *mot) { int compteur = 0, indice; for(indice=0; indice < taille; indice++) if(mot[indice] == car) compteur++; return compteur; } // version qui utilise la ligne de commande

int main(int argc, char *argv[]) { int taille; // taille du mot int i; int nboccur; // nb d'occurrences de la lettre if(argc != 2){ printf("usage compter mot\n"); exit(1); } taille = strlen(argv[1]); for(i = 0; i < taille; i++){ nboccur = compter_occurrences(argv[1][i], taille, argv[1]); printf("%c apparait %d fois\n",argv[1][i], nboccur); } return 0; }

166.
167.

crivez une fonction int compter_voyelles(int taille, char *mot) qui retourne le nombre de voyelles dans la chane mot de taille taille.

168. #include <stdio.h> 169. #include <string.h> 170. #include <stdlib.h>


171.

172. int compter_occurrences(char car, int taille, char *mot)


173. {

174.
175.

int compteur = 0, indice; for(indice=0; indice < taille; indice++) if(mot[indice] == car) compteur++;

176. 177. 178.


179.

180.

return compteur; 181. } 182. 183. int compter_voyelles(int taille, char *texte) 184. { 185. int i; 186. int compteur = 0; 187. char voyelles[14] = "aeiouyAEIOUY"; 188. 189. for(i = 0; i < 14 ; i++){ 190. compteur += compter_occurrences(voyelles[i], taille, texte); 191. } 192. 193. return compteur; 194. } 195. 196. int main(void) 197. { 198. int taille; // taille du mot 199. char txt[125];

200.

201. 202.
203. 205. 207.

printf("entrez un mot : "); scanf("%s", txt); taille = strlen(txt); printf("%d voyelles\n", compter_voyelles(taille, txt)); return 0;

204. 206. 208.


209. } 210.

211.

212. 213. // compte les occurrences d'un caractere dans un mot. 214. 215. #include <stdio.h> 216. #include <string.h> 217. #include <stdlib.h> 218. 219. char texte[125]; // mot 220. int taille; // taille du mot 221. 222. int compter_occurrences(char car) 223. { 224. int compteur = 0, indice; 225. 226. for(indice=0; indice < taille; indice++) 227. if(texte[indice] == car) 228. compteur++; 229. 230. return compteur; 231. } 232. 233. int main(void) 234. { 235. int i; 236. int nboccur; // nb d'occurrences de la lettre 237. 238. printf("entrez un mot : "); 239. scanf("%s", texte); 240. 241. taille = strlen(texte); 242. 243. for(i = 0; i < taille; i++){ 244. nboccur = compter_occurrences(texte[i]); 245. printf("%c apparait %d fois\n", texte[i], nboccur); 246. } 247. 248. return 0; 249. } 250.

Rcrivez la fonction compter_occurrences avec la taille de la chane et le mot qui sont des variables globales.

Vous aimerez peut-être aussi