Pages

samedi 29 mars 2014

Exercices corrigés en langage C++ : Les tableaux (2)

Exercices corrigés en langage C++ : Les tableaux
langage c++
Exercice 1 : 

Ecrire un programme qui saisit 2 tableaux de 10 entiers a et b. c est un tableau de 20 entiers. Le programme doit mettre dans c la fusion des tableaux a et b. On copiera dans les 10 premières cases de c le tableau a, dans les dix dernières le tableau b. Le programme affiche ensuite le tableau c.

Correction exercice 1 :

#include<iostream>
using namespace std;

const int N=10;

int main()
{
int a[N],b[N],c[2*N],i;

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];}

for(i=0;i<2*N;i++)if(i<N)c[i]=a[i];else c[i]=b[i-N];

cout<<"VOICI LE TABLEAU c"<<endl;
for(i=0;i<2*N;i++)cout<<c[i]<<" ";
cout<<endl;
return 0;
}


Exercice 2 : 

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.

Correction exercice 2 :

#include<iostream>
using namespace std;

const int N=10;

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;
}


Exercice 3 : 

Ecrire un programme qui gère une liste d'entiers grâce au menu suivant :
1. Ajouter un entier
2. Afficher la liste des entiers
3. Supprimer dernier entier de la liste.
4. Afficher la dernière note tapée
5. Quitter
Il y aura au maximum 10 entiers. Lorsqu'on rajoute un entier, il sera rajouté à la fin de la liste.


Correction exercice 3 :

#include<iostream>
using namespace std;

const int N=10;
int main()
{

int t[N],nb=0,choix,e,i;
bool fini=false;

while(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 : if(nb==0)cout<<"LA LISTE EST VIDE"<<endl;
                                        else {
                                                cout<<"VOICI LA LISTE"<<endl;
                                                for(i=0;i<nb;i++)cout<<t[i]<<" ";
                                                 cout<<endl;
                                                }
                break;

                case 3 : if(nb>0){nb--; cout<<"ENTIER SUPPRIME"<<endl;}
                                        else cout<<"LA LISTE EST VIDE"<<endl;
                break;

                case 4 : if(nb>0)cout<<"lLE DERNIER ENTIER EST "<<t[nb-1]<<endl;
                                        else cout<<"LA LISTE EST VIDE"<<endl;
                break;

                case 5 : fini=true;
                break;
                }

        }
return 0;
}


Exercice 4 : 

Ecrire un programme qui gère une liste d'entiers grâce au menu suivant :
1. Ajouter un entier
2. Afficher la liste des entiers
3. Supprimer le premier entier ayant une valeur donnée.
4. Supprimer tous les entiers ayant une valeur donnée
5. Quitter
Il y aura au maximum 10 entiers. La liste devra être en permanence triée : lorqu'on rajoute un entier, il sera inséré au bon endroit dans la liste pour que celle-ci reste triée.


Correction exercice 4 :

#include<iostream>
using namespace std;

const int N=10;
int main()
{

int t[N],nb=0,choix,e,V,i,j,trouve;
bool fini=false;

while(fini==false)
        {
        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 : if(nb==0)cout<<"LA LISTE EST VIDE"<<endl;
                                        else {
                                                cout<<"VOICI LA LISTE"<<endl;
                                                for(i=0;i<nb;i++)cout<<t[i]<<" ";
                                                 cout<<endl;
                                                }
                break;

                case 3 : cout<<"Tapez la valeur à supprimer :";cin>>V;
                                 trouve=false;
                                 i=0;
                                 while(!trouve && i<nb)if(t[i]==V)trouve=true; else i++;
                                 if(trouve)
                                        {
                                        for(j=i;j<nb-1;j++)t[j]=t[j+1];
                                        nb--;
                                        }
                break;

                case 4 : cout<<"Tapez la valeur à supprimer :";cin>>V; 
                                 j=0;
                                 for(i=0;i<nb;i++)
                                         if(t[i]!=V){t[j]=t[i];j++;}
                                 nb=j;
                break;

                case 5 : fini=true;
                break;
                }

        }
return 0;
}

Exercice 5 : 

Ecrire un programme qui demande à l'utilisateur de taper un entier N<=20 et qui affiche la N-ième ligne du triangle de pascal.
ligne 1 : 1 1
ligne 2 : 1 2 1
ligne 3 : 1 3 3 1
ligne 4 : 1 4 6 4 1
et ainsi de suite ...


Correction exercice 5 :

#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;
}


Exercice 6 : 

Ecrire un programme qui demande à l'utilisateur de taper 10 entiers compris entre 0 et 20 qui seront stockés dans un tableau et qui affiche le nombre de fois qu'on a tapé un 0, le nombre de 1, le nombre de 2, ..., le nombre de 20.

Correction exercice 6 :

#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;
}

Exercice 7 : 

Ecrire un programme qui demande à l'utilisateur de taper le contenu d'un tableau de réels de 3 lignes et 3 colonnes et qui affiche ce tableau mais en affichant la moyenne des éléments de chaque ligne, de chaque colonne et la moyenne globale.

Correction exercice 7 :

#include<iostream>
using namespace std;

const int N=3;
const int M=3;

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]/N;
for(j=0;j<M;j++)moyC[j]=moyC[j]/M;
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;
} 




Aucun commentaire:

Enregistrer un commentaire

Partenaires

Computers Blogs

Contactez-nous

Nom

E-mail *

Message *

Tous droits resérvés-www.exercices-corriges.com Seo Blogger Templates