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

0/5 (3 avis)

Snippet vu 33 056 fois - Téléchargée 34 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
#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;
}
mahfoudh1986 Messages postés 5 Date d'inscription samedi 19 juin 2010 Statut Membre Dernière intervention 1 septembre 2011
20 mai 2011 à 01:53
c est tres bon mes freres en avances
MERY2000 Messages postés 3 Date d'inscription lundi 17 octobre 2005 Statut Membre Dernière intervention 13 juillet 2007
13 juil. 2007 à 02:08
Extra :)!!!merci bcp

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.