Exercice langage C : Tableaux

Travail à Faire:

Recopiez le début de programme suivant:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include 
#include 

using namespace std;

int main(int argc, char ** argv)
{
  const int nb_elements = 10;

  int T[nb_elements];

  for(int i = 0; i < nb_elements; i++)
    T[i] = rand() % 100 + 1;

  return 0;
}
  1. Ajoutez le code qui affiche le tableau en colonne, puis changez votre code pour qu'il affiche le tableau en ligne.
  2. Ajoutez le code qui calcule et affiche la somme, le produit, le plus petit et le plus grand des éléments de T. Attention: le produit peut devenir très grand et sortir de l'intervalle de représentation des int. Vous pouvez le déclarer en float pour éviter les problèmes.

    Utilisez une boucle pour l'initialisation, une autre pour l'affichage, une troisième pour le calcul de la somme, du produit, du minimum et du maximum.

  3. Ajoutez la déclaration de 2 tableaux supplémentaires Tpairs et Timpairs. Ajoutez le code qui copie les éléments pairs de T dans Tpairs, et les éléments impairs dans Timpairs, puis qui affiche ces 2 tableaux. Pour déterminer si une valeur est paire, il suffit de tester si le reste de la division par 2 vaut 0.

    Utilisez une quatrième boucle pour la construction des tableaux Tpairs et Timpairs.


  1. Pour afficher un tableau en colonne, il faut afficher un retour de ligne (endl) après chaque élément du tableau. endl représente un caractère spécial qui fait passer l'affichage à la ligne suivante. Il ne peut s'utiliser qu'à l'intérieur d'une instruction cout.
  2. Notez que lorsqu'on déclare un tableau (exemple: int tableau[20];), ses éléments ne sont pas initialisés. Cela signifie que la valeur contenue dans les éléments du tableau est (plus ou moins) aléatoire. Comme pour les variables, il n'est pas conseillé de lire le contenu d'un tableau avant son initialisation, vu qu'on ne sait jamais ce qu'on va y trouver.

    En particulier, - contrairement à ce qui est proposé dans ce corrigé - il est possible de calculer le maximum et le minimum en affectant la valeur du premier élément du tableau aux variables minet max, et en parcourant ensuite le reste du tableau. Dans ce cas, il faut prendre soin de n'affecter leur valeur initiale à min et max qu'après avoir initialisé le tableau!

  3. Comme les éléments de T sont générés aléatoirement, il est impossible de connaître à l'avance la taille des tableaux Tpairs et Timpairs. Tout ce que nous savons, c'est qu'ils auront au plusnb_elements éléments. La solution consiste donc à déclarer 2 tableaux de taille nb_elements.

    Pour peupler Tpairs et Timpairs, on parcourt T et on ajoute ses éléments à Tpairs et Timpairs en fonction de leur parité. Il faut maintenir un indice séparé pour chacun des deux tableauxTpairs et Timpairs.

    Finalement, pour leur affichage, il faut prendre soin d'afficher le bon nombre d'éléments qui ont effectivement été insérés dans ces tableaux.

 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include 

using namespace std;

int main(int argc, char **argv)
{
  const int nb_elements = 10;

  int T[nb_elements];
  int Tpairs[nb_elements];
  int Timpairs[nb_elements];
  int somme = 0;
  float produit = 1; // int est trop petit pour le produit
  int nb_pairs = 0, nb_impairs = 0;
  int min = 100;  // on sait que les nombres seront
  int max = 0;    // compris entre 0 et 100

  // initialisation
  for(int i = 0; i < nb_elements; i++)
    T[i] = rand() % 100 + 1;

  // affichage du tableau en colonne
  for (int i=0; i<nb_elements; i++)
    cout << T[i] << endl;

  // affichage du tableau en ligne
  for (int i=0; i< nb_elements; i++)
    cout << T[i] << " ";
  cout << endl;

  // calcul du produit, de la somme, etc.
  for (int i=0; i<nb_elements; i++)
    {
      somme += T[i];
      produit *= T[i];
      if (T[i] < min) min = T[i];
      if (T[i] > max) max = T[i];

    }

  cout << "La somme de tous les elements de T est " << somme << endl;
  cout << "Le produit de tous les elements de T est " << produit << endl;
  cout << "Le plus petit element de T est " << min << endl;
  cout << "Le plus grand element de T est " << max << endl;

  // construction de Tpairs et Timpairs
  for (int i=0; i<nb_elements; i++)
    {
      if ((T[i] % 2) == 0)
        {
          Tpairs[nb_pairs] = T[i];
          nb_pairs++;
        }
      else
        {
          Timpairs[nb_impairs] = T[i];
          nb_impairs++;
        }
    }

  cout << "Les nombres pairs de T sont: " << endl;
  for (int i = 0; i < nb_pairs; i++)
    cout << "Tpairs[" << i << "] = " << Tpairs[i] << endl;

  cout << "Les nombres impairs de T sont: " << endl;
  for (int i = 0; i < nb_impairs; i++)
    cout << "Timpairs[" << i << "] = " << Timpairs[i] << endl;

  return 0;
}