Exo 1 ==== Q1. a= 42, x=43, *y=43 a=43, x=42, *p=42, *q=43 a=43, x=44, *p=44, *q=43 a=43, b=45, x=44, *p=44, *q=43 Q2. les variables actives lors de l'exécution sont : - les variables gloables (sur toute la durée fde l'exécution) - les variales locales et paramètres des fonctions, uniquement lorsque ces fonctions sont exécutée. Dans le cas de ce programme : - il y a une seule variable globale - le fonction main est exécutée sur toute la durée du programme - les fonctions f1 et f2 sont exécutées l'une après l'autre (jamais pas en même temps), et la fonction f1 est celle aui contient le plus de variables locales et paramètre La mémoire maximale utilisée est donc obtenu en sommant les tailles de : variable globales + main + max(f1, f2) Soit un total de 8 variables, soit 32 octets. Exo 2 ==== Q1 #define Lmax 256 // longueur maximale des séquences #define M -1 // marque de fin pour SeqImp typedef struct { unsigned int T[Lmax] ; unsigned int L ; } SeqExp ; typedef unsigned int SeqImp[Lmax+1] ; // une case de plus pour la marque de fin Q2 // on pourrait aussi passer un pointeur sur S2 void SeqExp2SeqImp (SeqExp S1, SeqImp S2) { int i ; for (i=0; iT[i] = S1[i] ; i = i+1 ; } ; S2->L=i; } Q3 int SommeBorneImp (SeqImp S, int n) { int i=0; int res=0; while (S[i] != M && i=n) res=-1 ; return res ; } Q4 1. int SommeBorneExp (SeqExp S, int n) { int i=0; int res; if (n>S.L) { res=-1 ; } else { res=0 ; while (i= 'a' && s[i] <= 'z') s[i] = s[i] + 'A' -'a' ; i=i+1; } ; }