TD 4 Corrige
TD 4 Corrige
TD 4 Corrige
Solution :
a. int table[ arraySize ][ arraySize ];
b. 9 éléments.
c. for ( i = 0; i < arraySize; i++ )
for ( j = 0; j < arraySize; j++ )
table[ i ][ j ] = i + j;
2. Trouver l'erreur dans chacun des segments de programme suivants et corriger l'erreur:
a. #include <iostream>;
b. arraySize = 10; // arraySize est declaree const
c. Supposer que int b[ 10 ] = {0,0,0,0,0,0,0,0,0,0};
for (int i = 0; i <= 10; i++ )
b[i] = 1;
d. Supposer que int a[2][2] = { { 1, 2 }, { 3, 4 } };
a[1,1] = 5;
Solution
a. Erreur : Point-virgule à la fin de la directive #include.
Correction : Éliminer le point-virgule.
b. Erreur : Attribution d'une valeur à une variable constante en utilisant une instruction
d'affectation.
Correction : Initialiser la variable constante dans la déclaration const int arraySize.
c. Erreur : Mise en référence d’un élément du tableau en dehors des limites de ce tableau (b
[10]).
Correction : Changer la valeur finale de la variable de contrôle en 9.
d. Erreur : Syntaxe d'accès à un élément erronée.
Correction : Changer l’instruction par a [1] [1] = 5 ;
1
3. Écrire une expression qui accède à l'élément 4 de la ligne 2 d’un un tableau à deux dimensions appelé
twoD.
twoD[2][4]
4. Pour un tableau à deux dimensions de type float, appelé flarr, écrire une instruction qui déclare le
tableau et initialise la première ligne à 52, 27, 83 ; la seconde à 94, 73, 49 ; et la troisième à 3, 6, 1.
5 Écrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau. Le
programme doit afficher le nombre d'entiers supérieurs ou égaux à 10.
#include<iostream.h>
int main()
{
int t[10],i,nb=0;
for(i=0;i<N;i++){
cout<<"Tapez un entier ";
cin>>t[i];
}
for(i=0;i<N;i++)
if(t[i]>=10)
nb++;
cout<<"Le nombre d'entiers supérieurs ou égaux à 10 est : "<<nb<<endl;
return 0;
}
6 Écrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau ainsi qu'un
entier V. Le programme doit rechercher si V se trouve dans le tableau et doit supprimer la première
occurrence de V en décalant d'une case vers la gauche les éléments suivants et en rajoutant un 0 à la fin
du tableau. Le programme doit ensuite afficher le tableau final.
#include<iostream.h>
int main()
{
int t[10],i,j,V;
for(i=0;i<10;i++){
cout<<"Tapez un entier ";
cin>>t[i];
}
cout<<"Tapez la valeur de V : ";
cin>>V;
i=0;
while(i<10 && t[i]!=V)
i++;
if (i<10) {
for (j=i;j<N-1;j++)
t[j] = t[j+1];
t[N-1]=0;
}
for(i=0;i<N;i++)
cout<<t[i]<<”\t”;
return 0;
}
}
2
7. Écrire un programme qui demande à l’utilisateur de taper 10 entiers qui seront stockés dans un tableau.
Le programme doit trier le tableau par ordre croissant et doit afficher le tableau.
Algorithme suggéré :
On cherche l'indice du plus petit élément parmi les indices de 0 à 9 et on échange cet élément avec t[0].
On cherche l'indice du plus petit élément parmi les indices de 1 à 9 et on échange cet élément avec t[1].
On cherche l'indice du plus petit élément parmi les indices de 2 à 9 et on échange cet élément avec t[2].
... On cherche l'indice du plus petit élément parmi les indices de 8 à 9 et on échange cet élément avec t[8].
#include<iostream.h>
const int N=10;
int main() {
int a[N],i,j,min,imin,tmp;
for(i=0;i<N;i++) {
cin>>a[i];
}
for(i=0;i<N-1;i++) {
imin=i;
min=a[i];
for(j=i+1;j<N;j++)
if(a[j]<min){
min=a[j];
imin=j;
}
tmp=a[imin];
a[imin]=a[i];
a[i]=tmp;
}
cout<<"Tableau trié :"<<endl;
for(i=0;i<N;i++)
cout<<a[i]<<”\t”;
return 0;
}
8. Écrire un programme qui saisit une chaîne de 50 caractères pouvant contenir des espaces et qui affiche
chaque mot de la chaîne, le séparateur étant l'espace. Exemple, on tape : je pense donc je suis
Le programme affiche :
je
pense
donc
je
suis
#include<iostream.h>
int main() {
char t[50];
cin.getline(t,50);
for (int i=0;i<50;i++)
if (t[i]=='\0') {
cout << endl;
break;
} else if (t[i]==' ')
cout << endl;
else
cout << t[i];
}
3