Gestion des tableaux statiques
Objectifs:
- Initialiser des variables en C++
- Utiliser les constantes
- Recherche, suppression et ajout dans un tableau statique
- Surcharge des fonctions
- Passer des paramètres par référence
Énoncé:
Créer un programme en C++ qui permet de gérer un tableau de taille fixe. Le programme doit utiliser les fonctions suivantes :
- une fonction remplir qui remplit un tableau avec des entiers.
- une fonction afficher qui affiche les éléments d’un tableau.
- une fonction somme qui retourne la somme des éléments du tableau.
- une fonction max qui renvoie le max de deux entiers
- en utilisant la fonction précédente, écrire une fonction max qui renvoie le max des éléments du tableau.
- une fonction recherche qui permet de chercher un élément dans le tableau en affichant le message « Elément trouvé » si l’élément existe ou « Elément non trouvé » sinon.
- une fonction recherche qui permet de déterminer si un élément existe dans le tableau en revoyant une valeur booléenne.
- une fonction recherche qui permet de renvoyer la position d’un élément passé en paramètre.
- une fonction qui permet d’ajouter un élément à la fin du tableau.
- une fonction qui permet d’ajouter un élément dans une position donnée.
- une fonction qui permet de supprimer un élément du tableau.
- une fonction qui permet de supprimer un élément donné par sa position.
Ecrire un programme qui test ces différentes fonctions.
Donner la taille du tableau: 6
Donner l'element 1: 2
Donner l'element 2: 3
Donner l'element 3: 6
Donner l'element 4: 8
Donner l'element 5: 10
Donner l'element 6: 3
Affichage du tableau:
2 3 6 8 10 3
--------------------------
La somme des elements : 32
Le max des elements: 10
Le nombre 5 n'existe pas dans le tableau
Le nombre 8 existe dans le tableau
Le nombre 10 existe dans la position 4 du tableau
Affichage du tableau:
2 3 6 8 10 3
--------------------------
Apres ajout de la valeur 3 a la fin du tableau:
Affichage du tableau:
2 3 6 8 10 3 3
--------------------------
Apres ajout de la valeur 15 dans la position 2 du tableau:
Affichage du tableau:
2 3 15 6 8 10 3 3
--------------------------
Apres suppression de l'element dans la position 1 du tableau:
Affichage du tableau:
2 15 6 8 10 3 3
--------------------------
Apres suppression de l'element 3 du tableau:
Affichage du tableau:
2 15 6 8 10
--------------------------
//Programme : Gestion des tableaux statiques //Auteur : IDMANSOUR //Copyright : Exelib.net #include <iostream> using namespace std; void remplir (int *T, int n){ for(int i=0;i<n;i++){ cout<<"Donner l'element "<<i+1<<": "; cin>>T[i]; } } void afficher( int *T, int n){ cout<<"Affichage du tableau: "<<endl; for(int i=0;i<n;i++){ cout<<T[i]<< "\t"; } cout<<endl<<"--------------------------"<<endl; } int somme(int *T, int n){ int s(0); for(int i=0;i<n;i++) s = s + T[i]; return s; } int max(int a, int b){ if(a >= b){ return a; } return b; //Ou return (a > b); } int max(int *T, int n){ int m = T[0]; for(int i=1; i<n; i++){ m = max(m, T[i]); } return m; } void rechercheAff(int *T, int n, int x){ bool f = false; for(int i=0;i<n;i++){ if(T[i]==x) f = true; } if(f) cout<<"Le nombre " << x << " existe dans le tableau" << endl; else cout<<"Le nombre " << x << " n'existe pas dans le tableau" << endl; } bool rechercheBool(int *T, int n, int x){ for(int i=0;i<n;i++){ if(T[i] == x) return true; } return false; } int recherchePos(int *T, int n, int x){ for(int i=0; i<n; i++){ if(T[i]==x) return i; } return -1; } void ajouter(int *T, int &n, int x){ T[n] = x; n++; } void ajouter(int *T, int &n, int p, int x){ if(p < 0 && p > n) return ; for(int i = n; i > p; i--){ T[i]=T[i-1]; } T[p] = x; n++; } void supprimerPos(int *T, int &n, int p){ if(p < 0 && p >= n) return ; for(int i = p; i < n-1; i++){ T[i]=T[i+1]; } n--; } void supprimerElt(int *T, int &n, int x){ for(int i=0;i<n;i++){ if (T[i]==x){ for(int j=i;j<n-1;j++){ T[j] = T[j+1]; } n--; i--; //pour le cas des memes nombres adjacents } } } int main(){ int const taille(20); int n, T[taille]; cout<<"Donner la taille du tableau: "; cin>>n; remplir(T,n); afficher(T,n); int s = somme(T,n); cout << "La somme des elements : " << s << endl; int m = max(T,n); cout << "Le max des elements: " << m << endl; if(rechercheBool(T, n, 5)) cout << "Le nombre 5 existe dans le tableau" << endl; else cout << "Le nombre 5 n'existe pas dans le tableau" << endl; rechercheAff(T, n, 8); int p = recherchePos(T, n, 10); if(p != -1) cout << "Le nombre 10 existe dans la position " << p << " du tableau" << endl; else cout << "Le nombre 10 n'existe pas dans le tableau" << endl; afficher(T, n); ajouter(T, n, 3); cout << "Apres ajout de la valeur 3 a la fin du tableau:"<<endl; afficher(T, n); ajouter(T, n, 2, 15); cout << "Apres ajout de la valeur 15 dans la position 2 du tableau:"<<endl; afficher(T, n); supprimerPos(T, n, 1); cout << "Apres suppression de l'element dans la position 1 du tableau:"<<endl; afficher(T, n); supprimerElt(T, n, 3); cout << "Apres suppression de l'element 3 du tableau:"<<endl; afficher(T, n); return 0; }
- L'instruction int s(0) permet d'initialiser la variable s par 0 (équivalente à int s = 0)
- La fonction max qui détermine le maximum de deux nombres est prédéfinie dans C++, donc on peut l'utiliser sans la définir
- Les fonctions de recherche et de suppression ne peuvent pas avoir le même nom, puisqu'elles ont la même signature (nombre et type de paramètres)
En C++, on peut facilement gérer un tableau en utilisant la classe vector qui fait partie de la bibliothèque STL (Standard Template Library).
Les vectors sont des tableaux avec une gestion de la mémoire et des méthodes de gestion intégrées.
Cette classe sera traitée dans d'autres exercices.