0% ont trouvé ce document utile (0 vote)
23 vues10 pages

Correction TD4 : Exercices en C sur tableaux

Correction-TP5_2

Transféré par

aziz jeribi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
23 vues10 pages

Correction TD4 : Exercices en C sur tableaux

Correction-TP5_2

Transféré par

aziz jeribi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Correction TD4

Exercice 1 :
#include<stdio.h>
#include<stdlib.h>

int saisirTaille()
{
int N;
do
{
printf("saisir la taille du tableau!\n");
scanf("%d",&N);
}
while(N<10 || N>20);
return N;
}

void remplir(int *tab,int n)


{
int i;
for(i=0;i<n;i++)
scanf("%d",tab+i);
}
void afficher(int *tab, int n)
{
int i;
for(i=0;i<n;i++)
printf("%d \t",*(tab+i));
}
void DiviserTab(int *tab,int *tab1,int* tab2, int n, int *n1, int *n2)
{
int*q,*q1,*q2;
for(q=tab,q1=tab1,q2=tab2;q<tab+n;q++)
{
if(*q%2==0)
{
*q1=*q;
q1++;
(*n1)++;
}
if(*q%2!=0)
{
*q2=*q;
q2++;
(*n2)++;
}
}
}
void main ( )
{
int *tab,*tab1,*tab2,n,n1=0,n2=0;
n=saisirTaille();
tab=(int*)malloc(n*sizeof(int));
tab1=(int*)malloc(n*sizeof(int));
tab2=(int*)malloc(n*sizeof(int));
if(!tab1 || !tab1 || !tab2 ) exit(-1);
remplir(tab,n);
printf("Affichage Tab\n");
afficher(tab,n);
printf("\n");
DiviserTab(tab,tab1,tab2,n,&n1,&n2);
printf("Affichage Tab1\n");
afficher(tab1,n1);
printf("\nAffichage Tab2\n");
afficher(tab2,n2);
}
Exercice 2 :
#include<stdio.h>
#include<stdlib.h>

void SaisirTaille1(int* n)
{
do
{
printf("saisir un entier entre 10 et 50!");
scanf("%d",n);
}
while(*n<10 || *n>20);
}

int SaisirTaille2()
{
int n;
do
{
printf("saisir un entier entre 10 et 50!");
scanf("%d",&n);
}
while(n<10 || n>20);
}

void remplir_Tab(int *tab,int n)


{
int i;
for(i=0;i<n;i++)
{
do
scanf("%d",tab+i);
while(*(tab+i)!=0 && *(tab+i)!=1);
}

}
void afficher_Tab(int *tab, int n)
{
int i;
for(i=0;i<n;i++)
printf("%d \t",*(tab+i));
}
void Compression_Tab(int *tab, int n, int *tab1, int *n1)
{
int *p,*q;
p=tab;
*tab1=*tab;
*n1=1;
for(q=tab1,p=tab+1;p<tab+n;p++)
{
if(*p!=*q)
{
q++;
*q=*p;
(*n1)++;
}
}
}
void main ( )
{
int *tab,*tab1,n,n1=0;
SaisirTaille1(&n);
//n=SaisirTaille2();
tab=(int*)malloc(n*sizeof(int));
tab1=(int*)malloc(n*sizeof(int));
if(tab==NULL||tab1==NULL) exit(-1);
remplir_Tab(tab,n);
afficher_Tab(tab,n);
printf("\nCOMPRESSION TAB\n");
Compression_Tab(tab,n,tab1,&n1);
printf("AFFICHAGE TAB1 COMPRESSE\n");
afficher_Tab(tab1,n1);
}
Exercice 3 :
#include<stdio.h>
#include<stdlib.h>

void remplir(int *tab,int n){


int i;
for(i=0;i<n;i++)
scanf("%d",tab+i);
}
void afficher(int *tab, int n)
{
int i;
for(i=0;i<n;i++)
printf("%d \t",*(tab+i));
}
int max_T(int *tab,int n)
{
int i,max;
max=*tab;
for(i=2;i<n;i++)
{
if(max<*(tab+i))
max=*(tab+i);
}
return max;
}
int min_T(int *tab,int n)
{
int min,i;
min=*tab;
for(i=2;i<n;i++)
{
if(min>*(tab+i))
min=*(tab+i);
}
return min;
}
void inverser(int *tab,int n)
{
int i,inter;
for(i=0;i<n/2;i++)
{
inter = *(tab+i);
*(tab+i)=*(tab+n-1-i);
*(tab+n-1-i)=inter;
}
}
void main ( )
{
int *tab,n;
do
{
printf("saisir un entier entre 10 et 50!");
scanf("%d",&n);
}
while(n<10 || n>50);
tab=(int*)malloc(n*sizeof(int));
if(tab==NULL) exit(-1);
remplir(tab,n);
afficher(tab,n);
printf("\nle max du tab est %d, le min du tab est %d\n",max_T(tab,n),min_T(tab,n));
inverser(tab,n);
printf("tab inversé \n");
afficher(tab,n);
}

Exercice 4 :
#include<stdio.h>
#include<stdlib.h>

void remplir(int *tab,int n)


{
int i;
for(i=0;i<n;i++)
scanf("%d",tab+i);
}
void afficher(int *tab, int n)
{
int i;
for(i=0;i<n;i++)
printf("%d \t",*(tab+i));
}
int* fusion(int *tab1,int *tab2,int n1, int n2)
{
int *tabf,i,j;
tabf=(int*)malloc((n1+n2)*sizeof(int));
if(tabf==NULL) exit(-1);
for(i=0;i<n1;i++)
*(tabf+i)=*(tab1+i);
for(j=0;j<n2;j++)
*(tabf+n1+j)=*(tab2+j);
return tabf;
}
void main ( )
{
int *tab1,*tab2,n1,n2, *tabFusion;
printf("saisir la taille de tab1!");
scanf("%d",&n1);
printf("saisir la taille de tab2!");
scanf("%d",&n2);
tab1=(int*)malloc(n1*sizeof(int));
if(!tab1) exit(-1);
tab2=(int*)malloc(n2*sizeof(int));
if(!tab2) exit(-1);
remplir(tab1,n1);
remplir(tab2,n2);
afficher(tab1,n1);
printf("\n");
afficher(tab2,n2);
tabFusion=fusion(tab1,tab2,n1,n2);
printf("\n");
afficher(tabFusion,n1+n2);
}

Vous aimerez peut-être aussi