« Programmation C++/Les tableaux/Exercices sur les tableaux statiques » : différence entre les versions

Contenu supprimé Contenu ajouté
indentation
coloration syntaxique / indentation
Ligne 18 :
 
=== Exemple 1 : utilisation d'un tableau ===
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 25 :
{
int t[10], i;
for(i=0; i<10; i++)
{
cout << "Tapez la valeur numero " << i << " : ";
cin >> t[i];
}
for(i=0; i<10; i++) t[i] = t[i]+1;
for(i=0; i<10; i++) cout << "La valeur numero " << i <<" est : "<< t[i] <<endl;
return 0;
}
</presource>
*'''Explications'''
**Dans ce programme, nous allons tout d'abord saisir une à une le contenu des 10 cases d'un tableau t.
Ligne 79 :
 
=== Exemple 2 : un tableau de double ===
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 92 :
return 0;
}
</presource>
 
*'''Explications''' <br/>
Ligne 125 :
=== Exemple 3 : calcul de la moyenne ===
 
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 133 :
int t[4], i;
double s=0;
for(i=0; i<4; i++)
{
cout << "Tapez la valeur numéro " << i << " : ";
cin >> t[i];
}
for(i=0; i<4; i++) s = s + t[i];
s = s/4;
cout << "La moyenne est : " << s << endl;
return 0;
}
</presource>
*'''Explications'''<br/>
**Dans cet exemple, on déclare un tableau t de 4 cases (la première sera t[0], la dernière t[3]).
Ligne 164 :
 
=== Exemple 4 ===
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 171 :
{
int t[4], i, ppt;
for(i=0; i<4; i++)
{
cout << "Tapez la valeur numéro " << i << " : ";
cin >> t[i];
}
ppt = t[0];
for(i=1; i<4; i++) if(ppt>t[i]) ppt=t[i];
cout << "La plus petite valeur est "<< ppt <<endl;
return 0;
}
</presource>
 
*'''Explications'''<br/>
Ligne 197 :
 
=== Exemple 5 : inverser l'ordre des éléments d'un tableau ===
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 207 :
for(i=0; i<6; i++)
{
cout << "Tapez la valeur numéro " << i << " : ";
cin >> t[i];
}
Ligne 213 :
for(i=0; i<3; i++)
{
a = t[i];
t[i] = t[5-i];
t[5-i] = a;
}
 
for(i=0; i<6; i++)
cout << "La valeur numéro " << i << " est " << t[i] << endl;
 
return 0;
}
</presource>
*'''Explications'''
Ligne 233 :
*Chaque étape sera numérotée de i=0 à i=2.
*Attention de ne pas échanger 2 fois le contenu de chaque case en écrivant par erreur : <br/>
for(i=0; i<6; i++){ a=t[i]; t[i]=t[5-i]; t[5-i]=a;}
*'''Exécution''' <br/>
Tapez la valeur numero 0 : '''9''' <br/>
Ligne 256 :
 
=== Exemple 6 : suppression et tassement ===
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 265 :
for (i=0; i<6; i++)
{
cout << "Tapez la valeur numéro " << i << " : ";
cin >> t[i];
}
for(i=0; i<6; i++) if(t[i]!=9) {t[j]=t[i]; j++;}
Ligne 273 :
return 0;
}
</presource>
 
*'''Explications'''<br/>
Ligne 297 :
 
=== Exemple 7 : les constantes ===
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 309 :
return 0;
}
</presource>
*'''Explications'''
**On définit une macro N valant toujours 10.
Ligne 329 :
 
=== Exemple 8 : les constantes ===
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 341 :
return 0;
}
</presource>
*'''Explications'''
**Cet exemple est absolument identique au précédent à la différence que N est cette fois-ci une variable globale constante de type entier valant 10. On préférera utiliser cette solution que d'utiliser #define.
Ligne 354 :
 
=== Exemple 9 : un tableau à 2 dimensions ===
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 380 :
return 0;
}
</presource>
*'''Explications'''
**Dans cet exemple, on déclare un tableau t d'entiers comportant 2 lignes et 3 colonnes.
Ligne 411 :
*Un algorithme simple sur un tableau : recherche du nombre d'éléments vérifiant une propriété.
*Voici le fichier source :
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 426 :
return 0;
}
</presource>
 
}}
Ligne 438 :
**Un algorithme simple sur un tableau : recherche d'un élément dans un tableau.
*Voici le fichier source :
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 462 :
return 0;
}
</presource>
}}
 
Ligne 473 :
**Un algorithme simple sur un tableau : recherche de l'indice du plus grand élément.
*Voici le fichier source :
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 490 :
return 0;
}
</presource>
}}
=== EXERCICE 4 ===
Ligne 500 :
**Un algorithme simple sur un tableau : supression d'un éléments avec décalage des suivants.
*Voici le fichier source :
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 531 :
return 0;
}
</presource>
}}
 
Ligne 542 :
**Un algorithme simple sur un tableau : insertion dans en tableau avec décalage.
*Voici le fichier source :
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 566 :
return 0;
}
</presource>
}}
 
Ligne 576 :
**Un algorithme simple sur un tableau : vérifier si le tableau vérifie une propriété donnée.
*Voici le fichier source :
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 605 :
return 0;
}
</presource>
}}
 
Ligne 621 :
**Un algorithme simple sur un tableau : tri d'un tableau.
*Voici le fichier source :
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 648 :
return 0;
}
</presource>
}}
 
Ligne 664 :
**Un algorithme simple sur un tableau : tri d'un tableau.
*Voici le fichier source :
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 694 :
return 0;
}
</presource>
}}
 
Ligne 705 :
**Un algorithme simple sur un tableau : fusion de 2 tableaux.
*Voici le fichier source :
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
Ligne 728 :
return 0;
}
</presource>
}}
 
Ligne 734 :
Ecrire un programme qui saisit 2 tableaux de 10 entiers a et b qui doivent être triés dans l'ordre croissant. Le programme devra tout d'abord vérifier que les deux tableaux sont triés. Le tableau c est un tableau de 20 entiers. Le programme doit mettre dans c la fusion des tableaux a et b. Le tableau c devra contenir les éléments de a et ceux de b et devra être trié. Le programme affiche ensuite le tableau c.
{{Boîte déroulante|titre=Solution|contenu =
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
 
Ligne 742 :
int main()
{
int a[N],b[N],c[2*N],i,trie,indicea,indiceb;
 
cout<<"SAISIE DU TABLEAU a"<<endl;
for(i=0; i<N; i++) {cout<<"Tapez un entier "; cin>>a[i];}
 
cout<<"SAISIE DU TABLEAU b"<<endl;
for(i=0; i<N; i++) {cout<<"Tapez un entier "; cin>>b[i];}
 
trie = true;
i = 0;
while(trie && i<N-1) if(a[i] > a[i+1]) trie = false; else i++;
 
if(!trie) cout<<"Le tableau a n'est pas trié"<<endl;
else
{
{
trie = true;
i = 0;
while(trie && i<N-1) if(b[i] > b[i+1]) trie = false; else i++;
if(!trie) cout<<"Le tableau b n'est pas trié"<<endl;
else
{
{
indicea = 0; indiceb = 0;
for(i=0; i<2*N; i++)
{
{
if(indicea==N) {c[i]=b[indiceb]; indiceb++;}
else if(indiceb==N) {c[i]=a[indicea]; indicea++;}
else if(a[indicea] < b[indiceb]) {c[i]=a[indicea]; indicea++;}
else {c[i]=b[indiceb]; indiceb++;}
}
}
}
}
}
}
 
cout << "VOICI LE TABLEAU c" << endl;
for(i=0; i<2*N; i++) cout << c[i] <<" ";
cout << endl;
 
return 0;
}
</presource>
}}
 
Ligne 798 :
**Gestion d'une liste simple grâce à un tableau statique.
*Voici le fichier source :
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
 
Ligne 805 :
int main()
{
int t[N], nb=0, choix, e, i;
bool fini = false;
 
while(fini==false)
int t[N],nb=0,choix,e,i;
{
bool fini=false;
cout<<"1. Ajouter un entier"<<endl;
cout<<"2. Afficher la liste des entier"<<endl;
cout<<"3. Supprimer le dernièr entier de la liste"<<endl;
cout<<"4. Afficher le dernier entier de la liste"<<endl;
cout<<"5. Quitter"<<endl;
cout<<"Votre choix : ";cin>>choix;
switch(choix)
{
case 1:
cout<<"Tapez un entier : ";cin>>e;
if(nb<N) {t[nb]=e; nb++; cout<<"ENTIER AJOUTE"<<endl;}
else cout<<"IMPOSSIBLE LE TABLEAU EST PLEIN"<<endl;
break;
 
case 2:
while(fini==false)
if(nb==0) cout<<"LA LISTE EST VIDE"<<endl;
{
else {
cout<<"1. Ajouter un entier"<<endl;
cout<<"2. Afficher la listeVOICI desLA entierLISTE"<<endl;
for(i=0; i<nb; i++) cout << t[i] <<" ";
cout<<"3. Supprimer le dernièr entier de la liste"<<endl;
cout << endl;
cout<<"4. Afficher le dernier entier de la liste"<<endl;
}
cout<<"5. Quitter"<<endl;
break;
cout<<"Votre choix : ";cin>>choix;
switch(choix)
{
case 1 : cout<<"Tapez un entier : ";cin>>e;
if(nb<N){t[nb]=e; nb++; cout<<"ENTIER AJOUTE"<<endl;}
else cout<<"IMPOSSIBLE LE TABLEAU EST PLEIN"<<endl;
break;
 
case 3:
case 2 : if(nb==0)cout<<"LA LISTE EST VIDE"<<endl;
if(nb>0) {nb--; cout<<"ENTIER SUPPRIME"<<endl;}
else {
else cout<<"VOICI LA LISTE EST VIDE"<<endl;
break;
for(i=0;i<nb;i++)cout<<t[i]<<" ";
cout<<endl;
}
break;
 
case 4:
case 3 : if(nb>0){nb--; cout<<"ENTIER SUPPRIME"<<endl;}
else if(nb>0)cout<<"LAlLE LISTEDERNIER ENTIER EST VIDE"<<t[nb-1]<<endl;
else cout<<"LA LISTE EST VIDE"<<endl;
break;
break;
 
case 5:
case 4 : if(nb>0)cout<<"lLE DERNIER ENTIER EST "<<t[nb-1]<<endl;
fini=true;
else cout<<"LA LISTE EST VIDE"<<endl;
break;
}
 
}
case 5 : fini=true;
return 0;
break;
}
 
}
return 0;
}
</presource>
}}
 
Ligne 864 ⟶ 868 :
**Gestion d'une liste triée grâce à un tableau statique.
*Voici le fichier source :
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
 
Ligne 871 ⟶ 875 :
int main()
{
int t[N], nb=0, choix, e, V, i, j;
bool fini=false, trouve;
 
while(fini==false)
int t[N],nb=0,choix,e,V,i,j;
{
bool fini=false,trouve;
cout<<"1. Ajouter un entier"<<endl;
cout<<"2. Afficher la liste des entier"<<endl;
cout<<"3. Supprimer le premier entier ayant une valeur donnée"<<endl;
cout<<"4. Supprimer tous les entiers ayant une valeur donnée"<<endl;
cout<<"5. Quitter"<<endl;
cout<<"Votre choix : ";cin>>choix;
switch(choix)
{
case 1:
if (nb<N)
{
cout<<"Tapez un entier : ";cin>>e;
i=0;
while(i!=nb && t[i]<e) i++;
for (j=nb; j>i; j--) t[j] = t[j-1];
t[i] = e;
nb++;
}
else cout<<"IMPOSSIBLE LE TABLEAU EST PLEIN"<<endl;
break;
 
case 2:
while(fini==false)
if(nb==0) cout<<"LA LISTE EST VIDE"<<endl;
{
else {
cout<<"1. Ajouter un entier"<<endl;
cout<<"2. Afficher la listeVOICI desLA entierLISTE"<<endl;
for(i=0; i<nb; i++) cout << t[i] <<" ";
cout<<"3. Supprimer le premier entier ayant une valeur donnée"<<endl;
cout<<endl;
cout<<"4. Supprimer tous les entiers ayant une valeur donnée"<<endl;
}
cout<<"5. Quitter"<<endl;
break;
cout<<"Votre choix : ";cin>>choix;
switch(choix)
{
case 1 : if(nb<N)
{
cout<<"Tapez un entier : ";cin>>e;
i=0;
while(i!=nb && t[i]<e)i++;
for(j=nb;j>i;j--)t[j]=t[j-1];
t[i]=e;
nb++;
}
else cout<<"IMPOSSIBLE LE TABLEAU EST PLEIN"<<endl;
break;
 
case 3:
case 2 : if(nb==0)cout<<"LA LISTE EST VIDE"<<endl;
cout<<"Tapez la valeur à supprimer :";
else {
cin >> V;
cout<<"VOICI LA LISTE"<<endl;
trouve = false;
for(i=0;i<nb;i++)cout<<t[i]<<" ";
i=0;
cout<<endl;
while(!trouve && i<nb) if(t[i]==V) trouve=true; else i++;
}
if(trouve)
break;
{
for(j=i; j<nb-1; j++) t[j]=t[j+1];
nb--;
}
break;
 
case 4:
case 3 : cout<<"Tapez la valeur à supprimer :";cin>>V;
cout<<"Tapez la valeur à supprimer :";
trouve=false;
cin >> V;
i=0;
j=0;
while(!trouve && i<nb)if(t[i]==V)trouve=true; else i++;
for(i=0; i<nb; i++)
if(trouve)
if(t[i] != V) {t[j] = t[i]; j++;}
{
nb=j;
for(j=i;j<nb-1;j++)t[j]=t[j+1];
break;
nb--;
}
break;
 
case 5: fini=true;
case 4 : cout<<"Tapez la valeur à supprimer :";cin>>V;
break;
j=0;
}
for(i=0;i<nb;i++)
}
if(t[i]!=V){t[j]=t[i];j++;}
return 0;
nb=j;
break;
 
case 5 : fini=true;
break;
}
 
}
return 0;
}
</presource>
}}
 
Ligne 946 ⟶ 954 :
**Gestion d'une liste triée grâce à un tableau statique.
*Voici le fichier source :
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
 
int main()
{
int a[21], i, j, N;
cout << "Veuillez taper N : ";
cin >> N;
for (i=1; i<=N; i++)
{
{
if(i==1) a[0]=1;
a[i]=1;
for (j=i-1; j>=1; j--) a[j] = a[j] + a[j-1];
}
}
for (i=0; i<=N; i++) cout << a[i] <<" ";
cout<<endl;
return 0;
}
</presource>
}}
 
Ligne 971 ⟶ 980 :
 
{{Boîte déroulante|titre=Solution|contenu =
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
 
int main()
{
int a[10], nb[21], i;
 
for(i=0; i<10; i++)
{
{
do {cout<<"Veuillez taper l'entier numero "<<i<<" : "; cin>>a[i];}
while (a[i]>20 || a[i]<0);
}
}
 
for(i=0; i<21; i++) nb[i]=0;
for(i=0; i<10; i++) nb[a[i]]++;
 
for(i=0; i<21; i++) {cout<<"Il y a "<<nb[i]<<" fois l'entier "<<i<<endl;}
return 0;
}
</presource>
}}
 
Ligne 1 001 ⟶ 1 010 :
**Modélisation d'un problème mathématique basique.
*Voici le fichier source :
<source lang="cpp">
<pre>
#include <iostream>
using namespace std;
 
Ligne 1 010 ⟶ 1 019 :
int main()
{
double t[N][M], moyL[N], moyC[M], moy;
int i, j;
 
for(i=0; i<N; i++)
for(j=0;j<M;j++)
{
{
cout<<"Tapez la valeur de la ligne "<<i<<" colonne "<<j<<" : ";
cin >> t[i][j];
}
}
 
for(i=0; i<N; i++) moyL[i]=0;
for(j=0; j<M; j++) moyC[j]=0;
moy=0;
 
for(i=0; i<N; i++)
for(j=0; j<M; j++)
{
{
moyL[i] = moyL[i] + t[i][j];
moyC[j] = moyC[j] + t[i][j];
moy = moy + t[i][j];
}
}
 
for(i=0; i<N; i++) moyL[i] = moyL[i] / M;
for(j=0; j<M; j++) moyC[j] = moyC[j] / N;
moy = moy / (N*M);
 
for(i=0; i<N; i++)
{
{
for(j=0; j<M; j++)
cout << t[i][j] <<" ";
cout << moyL[i] <<endl;
}
}
for(j=0; j<M; j++)
cout << moyC[j] <<" ";
cout<<endl;
 
return 0;
}
</presource>
}}