Enoncé exercice 1
Ecrire un programme C qui lit un entier n, puis n autres entiers positifs dans un tableau, l’affiche puis calcul la somme, le max, et le min de ses éléments.
Correction exercice 1
On commence par la déclaration du tableau en précisant une taille suffisante, ici 100 (ligne 5). Puis on demande à l’utilisateur d’entrer le nombre n d’éléments avec lesquels il souhaite travailler. Bien évidement cette valeur ne doit pas dépasser la taille du tableau.
On rappelle ici pour la suite, que la manipulation des tableaux et similaire à celle des variables. Puisque chaque élément t[i] d’un tableau t est considéré comme une variable dont le type est celui du tableau.
Dans cet exercice, on va se servir d’un tableau t de type int. Pour laa lecture du tableau, on aura à lire n variables: t[0], t[1], …, t[n-1] (l’indexage des tableaux en C commence par 0). Pour cet effet, on utilisera une boucle for, puisqu’elle est la plus adaptée à cette tâche (lignes 9-13).
Après la lecture du tableau t on procédera à l’affichage du tableau et le calcul des quantités demandées. Pour ce faire, et après l’initialisation des trois variables som, max et min (lignes 14-16), on se servira d’une autre boucle for pour parcourir le tableau t (ligne 17).
A chaque itération de cette boucle on affiche l’élément courant t[i] (ligne 19), on l’ajoute à la variable som (ligne 20) et on actualise le max et le min s’il est nécessaire (lignes 21-22).
Directement après la sortie de cette dernière boucle, on affiche les quantités demandées (lignes 25-27).
Solution exercice 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int t[100];
int i,n,som,max,min;
printf("Donnez le nombre des elements du tableau:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Donnez l'element %d:\n",i+1);
scanf("%d",&t[i]);
}
som=0;
min=t[0];
max=t[0];
for(i=0;i<n;i++)
{
printf("%d ",t[i]);
som+=t[i];
if(t[i]>max) max=t[i];
if(t[i]<min) min=t[i];
}
printf("\n");
printf("La somme est: %d\n",som);
printf("Le max est: %d\n",max);
printf("Le min est: %d\n",min);
system("pause");
return 0;
}
Enoncé exercice 2
Ecrire un programme C qui lit un entier n, puis n autres éléments dans un tableau. Et, affiche ce dernier avant et après la suppression de toutes les occurrences d’un nombre entré par l’utilisateur.
Correction exercice 2
On demande à l’utilisateur d’entrer le nombre des éléments du tableau, qu’on va lire dans la variable n (lignes 7-8). Puis on lit les n éléments dans un tableau t à l’aide d’une boucle for (lignes 9-13). Une fois le tableau lu, on va procéder à son affichage en utilisant une deuxième boucle for (ligne 14). On rappelle à cette occasion que lorsqu’on utilise une boucle sans accolades, seule l’instruction qui la suit directement est prise en compte par la boucle.
On demande ensuite l’entrée de la valeur à supprimer du tableau qu’on va mettre dans la variable a. On parcourt ensuite le tableau t, par une première boucle for (ligne 19). Et, à chaque fois qu’on rencontre un élément du tableau d’indice i qui est égale à a, on décale les éléments du tableau dont l’indice est supérieur à i d’une seule case dans le sens des indices décroissants (lignes 23-24). Et de cette façon, on va écraser l’élément qui se trouvait à la case i.
Cette suppression va entraîner la diminution du nombre des éléments du tableau par un, il faudra donc décrémenter la valeur de n par 1 (ligne 25).
Le nouvel élément qui occupe la position i n’est pas encore examiné. Et si on laisse les choses comme elles le sont, il ne sera jamais traité, puisque le compteur i sera incrémenté pour passer à l’itération suivante. Pour régler ce problème, il suffira juste de décrémenter le i (ligne 26). Cette décrémentation en plus de l’incrémentation automatique vont ne permettre de ne laisser aucun élément du tableau sans examen.
On termine on réaffichant le tableau (lignes 29-30).
Solution exercice 2
#include<stdio.h>
#include<stdlib.h>
int main()
{
int t[100];
int i,j,n,a;
printf("Donnez le nombre des elements du tableau:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Donnez l'element %d:\t",i+1);
scanf("%d",&t[i]);
}
for(i=0;i<n;i++)
printf("%d ",t[i]);
printf("\n");
printf("Donnez l'element a supprimer du tableau:\n");
scanf("%d",&a);
for(i=0;i<n;i++)
{
if(t[i]==a)
{
for(j=i;j<n-1;j++)
t[j]=t[j+1];
n--;
i--;
}
}
for(i=0;i<n;i++)
printf("%d ",t[i]);
printf("\n");
system("pause");
return 0;
}