M2 CCI - DS Octobre 2017 - Indications de corrections Exercice 1 ========== Valeurs des variables a, b et c en (1): 2 2 0 en (2): 2 3 0 en (3): 3 7 0 en (4): 2 0 0 Exercice 2 =========== x et y doivent etre declares comme pointeurs sur entiers car ils vont etre modifies par l'action Echanger : void Echanger (int *x, int *y) { int tmp ; tmp=*x ; *x=*y ; *y=tmp ; } Traduction du lexique : typedef int Tab[11] ; Tab T ; int a,b ; Exemples d'appels a Echanger : Echanger (&a, &b) ; Echanger (&T[3], &T[5]) ; Exercice 3 =========== Q1. --- int isalpha (int c) { return (c>=65 && c<=90) || (c>=97 && c<=122) ; } Q2. --- #include #define L 256 int main() { char s[L] ; int i ; int nb ; scanf ("%s", s) ; i=0 ; nb = 0 ; while (s[i] != '\0') { if (isalpha (s[i])) { nb = nb + 1 ; } ; i = i+1 ; } ; printf("Le nbre de lettres est : %d\n", nb) ; } Q3. --- int main() { char s[L], r1[L], r2[L] ; int i, i1, i2 ; scanf ("%s", s) ; i1 = 0 ; r1[i1] = '\0' ; i2 = 0 ; r2[i2] = '\0' ; i=0 ; while (s[i] != '\0') { if (isalpha (s[i])) { r1[i1] = s[i] ; i1 = i1+1 ; } else { r2[i2] = s[i] ; i2 = i2+1 ; } ; i = i+1 ; } ; /* on n'oublie pas de terminer r1 et r2 par '\0' */ r1[i1] = '\0' ; r2[i2] = '\0' ; printf("r1=%s et r2=%s\n", r1, r2) ; return 0 ; }