Youtube

Exercice 1

Ecrire un programme C qui trie un tableau d’entiers selon les étapes suivantes:

Q1. Lire le nombre d’éléments du tableau vers une variable entière n.

Q2. Lire les n entiers vers un tableau d’entiers t.

Q3. A partir du tableau t, créer un tableau pairs qui contient les nombres pairs du tableau t, et un autre qui s’appelle impairs contenant les nombres impairs du tableau t.

Par exemple si t contient les nombres :

Alors le tableau pairs contiendera :

Et le tableau impairs :

Q4. Afficher les trois tableaux, chacun sur une ligne.

Q5. Trier les deux tableaux pairs et impairs dans un ordre croissant et réafficher-les.

Pour l’exemple ci-dessus, on doit avoir pour le tableau pairs :

Et pour le tableau impairs :

Q6. Fusionner les deux tableaux pairs et impairs vers le tableau t puis réafficher-le.

Toujours pour le même exemple et après fusion, le tableau t devient :

#include<stdio.h>
int main()
{
	int n,i,j,k,np,ni,tmp;
	int t[100],pairs[100],impairs[100];
	printf("Entrez le nombre d'elements du tableau: ");
	scanf("%d",&n);
	printf("La valeur de n est: %d\n",n);
	printf("Entrez les elements du tableau:\n");
	for(i=0;i<n;i++)
	{
		printf("Entrez t[%d]: ",i);
		scanf("%d",&t[i]);
	}
	printf("Tableau t: ");
	for(i=0;i<n;i++)
	{
		printf("%d ",t[i]);
	}
	printf("\n");
	j=0;
	k=0;
	for(i=0;i<n;i++)
	{
		if(t[i]%2==0)
		{
			pairs[j]=t[i];
			j++;
		}
		else{
			impairs[k]=t[i];
			k++;
		}
	}
	printf("Tableau pairs: ");
	for(i=0;i<j;i++)
		printf("%d ",pairs[i]);
	printf("\n");
	printf("Tableau impairs: ");
	for(i=0;i<k;i++)
		printf("%d ",impairs[i]);
	printf("\n");
	np = j;
	ni = k;
	for(i=np-1;i>0;i--)
		for(j=0;j<i;j++)
			if(pairs[j]>pairs[j+1])
			{
				tmp = pairs[j];
				pairs[j] = pairs[j+1];
				pairs[j+1] = tmp;
			}
	for(i=ni-1;i>0;i--)
		for(j=0;j<i;j++)
			if(impairs[j]>impairs[j+1])
			{
				tmp = impairs[j];
				impairs[j] = impairs[j+1];
				impairs[j+1] = tmp;
			}
	printf("Tableau pairs trie: ");
	for(i=0;i<np;i++)
		printf("%d ",pairs[i]);
	printf("\n");
	printf("Tableau impairs trie: ");
	for(i=0;i<ni;i++)
		printf("%d ",impairs[i]);
	printf("\n");
	j=0;
	k=0;
	for(i=0;i<n;i++)
	{
		if(j<np && k<ni)
		{
			if(pairs[j]<impairs[k])
			{
				t[i]=pairs[j];
				j++;
			}
			else
			{
				t[i]=impairs[k];
				k++;
			}
		}
		else
			break;
	}
	for(;j<np;j++,i++)
		t[i] = pairs[j];
	for(;k<ni;k++,i++)
		t[i] = impairs[k];
	printf("Tableau t: ");
	for(i=0;i<n;i++)
	{
		printf("%d ",t[i]);
	}
	printf("\n");
	return 0;
}

Exercice 2