Fusion de deux tableaux triés dans un tableau trié également

Soyez le premier à donner votre avis sur cette source.

Snippet vu 27 540 fois - Téléchargée 31 fois

Contenu du snippet

Ce programme permet,pour l'instant de fusionner deux tableaux triés dans l'ordre croissant en un seul tableau, lui aussi trié dans cet ordre.

Source / Exemple :


#include<iostream.h>
#include<conio.h>
int u[10],v[10],w[20];
int i,j,k,n,m,h,t,a;
void main()
{
	cout<<"\n      °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n\n";
	cout<<"\tCE PROGRAMME LIT ET FUSIONNE DEUX LISTES D'ENTIERS TRIES DANS\n\n\t\t\t  UN TABLEAU EGALEMENT TRIE\n\n";
	cout<<"\n\t==============================================================\n";
	cout<<"\n\n\n\tDONNEZ LA TAILLE DE LA PREMIERE LISTE ( entre 1 et 10 ): ";
	cin>>n;
//------------------------| CONTRAINTES SUR LA TAILLE |--------------------------
	while(n<=0)
	{
		cout<<"\n\t CETTE VALEUR RST NEGATIVE. RETAPEZ UNE AUTRE.  Taille = ";
		cin>>n;
	}

//-------------------------|  TAILLE  SUPERIEURES A 10 |-------------------	
	while(n>10)
	{
		cout<<"\n\t TAPEZ UNE VALEUR INFERIEURE A 10.  Taille = ";
		cin>>n;
	}
	
	
//------------------------| REMPLISSAGE DU PREMIER TABLEAU |------------------------------
//             
	cout<<"\n\n\t  \4 ENTREZ LES "<<n<<" NOMBRES DE LA PREMIERE LISTE TRIEE\n";
	for(i=0;i<n;i=i+1)
	{
		cout<<"\n\t\t  Nombre "<<i+1<<": ";
		cin>>u[i];
		cout<<"\n";
		

	}
	

		
//------------------| RREMPLISSAGE DU SECOND TABLEAU  |----------------------------------------
//              
	cout<<"\n\tTAPEZ LA TAILLE DE LA SECONDE LISTE  ( entre 1 et 10 ): ";	
	cin>>m;
	while(m<=0)
	{
		cout<<"\n\t CETTE  VALEUR  EST NEGATIVE.RETAPEZ UNE AUTRE.  Taille = ";
		cin>>m;
	}
	while(m>10)
	{
		cout<<"\n\t TAPEZ UN NOMBRE INFERIEUR OU EGAL A 10.  Taille = ";
		cin>>m;
	}
	cout<<"\n";
	cout<<"\n\t  \4 ENTREZ LES "<<m<<" NOMBRES DE LA LISTE \n\n";
	for(j=0;j<m;j=j+1)
	{
		cout<<"\n\t\t  Nombre "<<j+1<<": ";
		cin>>v[j];
		cout<<"\n";
	}

//---------------------| FUSION PRPREMENT DITE DES  TABEAUX |-------------------------------------------

		i=0;
		j=0;
		k=0;
		h=n+m;
		while((i<n)&&(j<m))
		{
			if(u[i]<v[j])
			{
				w[k]=u[i];
				i=i+1;
			}
			else
			{
				w[k]=v[j];
				j=j+1;
			}
			k=k+1;
		}
//---------------------| CAS D'UN  DES TABLEAUX  QIU EST PLUS LONG |-----------  		
		while(i<n)
		{
			w[k]=u[i];
			i=i+1;
			k=k+1;
		}
		while(j<m)
		{
			w[k]=v[j];
			j=j+1;
			k=k+1;
		}
		
      
		
//-----------------------|  AFFICHAGE  |--------------------------------------                  

		cout<<"\n\tLISTE  1:";
		for(i=0;i<n;i=i+1)
		{
			cout<<"\t"<<u[i];
		}
		cout<<"\n";
		cout<<"\n";
		cout<<"\n\tLISTE  2:";
		for(j=0;j<m;j=j+1)
		{
			cout<<"\t"<<v[j];
		}
		cout<<"\n\n     ET VOICI LA LISTE RESULTANT DE LA FUSION:\n\n";
		
		cout<<"\t";
		for(k=0;k<m+n;k=k+1)
		{
			cout<<"   "<<w[k];
		}
		cout<<"\n\n\n\n";

}

Conclusion :


Je souhaite le rendre capable de trier les nombres de chaque liste au cas où un utilisateur entrerait un tableau non trié.

A voir également

Ajouter un commentaire

Commentaires

MERY2000
Messages postés
3
Date d'inscription
lundi 17 octobre 2005
Statut
Membre
Dernière intervention
13 juillet 2007
-
Extra :)!!!merci bcp
mahfoudh1986
Messages postés
5
Date d'inscription
samedi 19 juin 2010
Statut
Membre
Dernière intervention
1 septembre 2011
-
c est tres bon mes freres en avances
#include <cstdlib>
#include <iostream>

using namespace std;

struct noeud{int v; noeud *next;};
//_______________________________________________________________________
noeud* construit(){
noeud* p=NULL;
noeud* q=NULL;
noeud* l=NULL;
int nb_n,i,x;
i=1;
cout<<"Donnez le nombre des noeud de la liste :"<<endl;
cin>>nb_n;
while(i<=nb_n){
cout<<"Donnez un nombre entie "<<i<<endl;
cin>>x;
if(l == NULL){
l=new(noeud);
l->v=x;
l->next= NULL;
p=l;
}
else{
q=new(noeud);
q->v=x;
q->next= NULL;
p->next=q;
p=q;
}
i++;
}
return l;
}
//_______________________________________________________________________
void afficher(noeud* l){
int x;
noeud* p=l;
while(p!= NULL){
x=p->v;
cout<<x<<",";
p=p->next;
}
}
//_______________________________________________________________________

noeud* fusionner(noeud* p,noeud* q)
{
if (p == NULL)
return q ;
else if (q == NULL)
return p;
else if ((p->v) <= (q->v))
{
p->next = fusionner(p->next,q);
return p;
}
else
{
q->next = fusionner(p,q->next);
return q;
}
}
//_______________________________________________________________________

int main(int argc, char *argv[]){
cout<<"Construction Liste 1 :"<<endl;
noeud* l1=construit();
cout<<"Liste 1 = { ";afficher(l1);cout<<" } ."<<endl; // Liste 1

cout<<"___________________________"<<endl<<endl;

cout<<"Construction Liste 2 :"<<endl;
noeud* l2=construit();
cout<<"Liste 2 = { ";afficher(l2);cout<<" } ."<<endl; // Liste 2

cout<<"___________________________"<<endl<<endl;

noeud* f= fusionner(l1,l2);
cout<<"Liste Fusionne = { ";afficher(f);cout<<" } ."<<endl; // Liste fusionner

system("PAUSE");
return EXIT_SUCCESS;
}

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.