Auteur: Mohamed Messabihi
Matière: Programmation et structures de données Date17 Mars 2015
Durée1h30
Université Abou Bakr Belkaïd - Tlemcen Faculté des Sciences 1èreAnnée MI Semestre 2
Contrôle Continu
Aucun document n'est autorisé Les solutions doivent être rédigées en C
Tout appareil électronique doit être éteint (téléphone, ordinateur, tablette,...)
1 Affichage pts. U 30’
Qu’affiche les deux programmes suivants :
1 # include< stdio .h>
2 void Toto(int *i, int *j) 3 { int *k;
4 k=i; 5 i=j; 6 j=k; 7 }
8 void main() 9 { int a, b=0;
10 int *p1, *p2=&b;
11 p1 = p2; 12 a = *p2+2;
13 *p1 = 1;
14 printf("a=%d\n",a); //1pt 15 printf("b=%d\n",b); //1pt 16 Toto(&a,&b);
17 printf("a=%d\n",a); //1pt 18 printf("b=%d\n",b); //1pt 19 }
1 # include< string .h>
2 void main() 3 {
4 int T[8]={0 , 1, 2, 3, 4, 5, 6};
5 int i, *p = T;
6 char c='A', s[8] , *q;
7 printf("*p = %d \n", *p); // 0.5 pt 8 for(i=0;i<7;i++)
9 {
10 (*p)= *(p+1) ; 11 s[i]=c+i;
12 printf("T[%d ]=% d\n",i,T[i]); //2pt
13 p++;
14 }
15 q = strchr(s, c+1) ;
16 printf("s = %s \n" , s); // 0.5 pt 17 printf(" Loulou = %d \n", q-s); // 0.5 pt 18 printf("q = %s \n" , q); // 0.5 pt 19 }
2 Insertion d’un élément dans un tableau pts. U 25’
Écrire une fonctioninsertionqui prend en entrée un tableauTd’entier à une dimension (supposé déjà trié dans l’ordre croissant%), sa tailleL(qui doit être strictement inférieur à 100) et un entierN. Cette fonction permet d’insérer l’élément Ndans le tableauTà la bonne position pour que le tableau reste trié.
Exemple : avecL= 8 aprèsinsertion(T,L,24),Ldevient égale à 9.
T: 3 8 11 17 48 56 61 90 −→ T: 3 8 11 17 24 48 56 61 90
ZRemarque.On ne demande ni la saisie du tableauTni son affichage.
3 Conversion d’une chaîne de caractères en un réel pts. U 35’
On vous demande d’écrire une fonction similaire à la fonction atof()déjà prédéfinie dans la biblio- thèque"stdlib.h". Cette fonction permet de convertir une chaîne de caractères en un réel équivalent. Par exemple atof("12.65") renvoi le réel 12.65. On ne considère ici que les chaînes de caractères qui contiennent un nombre réel sous la forme suivante :"<Partie Entière>.<Partie Décimale>".
Exemple : les chaînes 134.5087 et 24.17963 sont valide, alors que les chaînes 12.498.65, 596e06 et 451,659ne le sont pas.
1. Écrire une fonctionstringToDoublequi prend en entrée une chaine de caractère (on suppose qu’elle respecte le format ci-dessus, pas besoin donc de la vérifier) et qui renvoie un réel équivalent.
ZAttentionBNe pas utiliser la fonctionatof(). Le codeAsciidu caractère ’0’ est 48 s’il en est besoin.
2. Écrire un programme pour tester la fonctionstringToDouble.
Bon Courage !