EXERCICE V
Tableaux Multidimensionnels Dynamiques
1.
Ecrire un programme qui lit les dimensions
l
et c
d'un tableau x à deux dimensions du type int . Créer le
tableau dynamique par des valeurs entrées au clavier et afficher le
tableau. Calculer et
afficher les
éléments maximaux par lignes.
#include <stdio.h>
#include
<stdlib.h>
int
**creation(int l,int c);
void affichage(int l, int c, int **a);
void max_ligne(int l, int c, int **a,int *max);
void affichage_v(int l,int *a);
void main()
{ int
**x,*max,l,c;
printf("nombre
de lignes: ");
scanf("%d",&l);
printf("nombre
de colonnes: ");
scanf("%d",&c);
x=creation(l,c);
printf("La matrice
cree.\n");
affichage(l,c,x);
max=(int *)malloc(l*sizeof(int));
max_ligne(l,c,x,max);
printf("Les
maximales par lignes.\n");
affichage_v(l,max);
free(x) ;
free(max) ;
}
int
**creation(int l,int c)
{ int **t,i,j;
t=(int **)malloc(l*sizeof(int *));
for(i=0;i<l;i++)
t[i]=(int
*)malloc(c*sizeof(int));
for(i=0;i<l;i++)
for(j=0;j<c;j++)
{ printf("el[%d][%d]:",i,j);
scanf("%d",(t[i]+j));
}
return t;
}
void
affichage(int l, int c, int **a)
{ int i,j;
for(i=0;i<l;i++)
{ for(j=0;j<c;j++)
printf("%3d",*(a[i]+j));
printf("\n");
}
}
void
max_ligne(int l, int c, int **a,int *max)
{ int
i,j;
for(i=0;i<l;i++,max++)
{ *max=*a[i];
for(j=0;j<c;j++)
if(*(a[i]+j) > *max)*max=*(a[i]+j);
}
}
void affichage_v(int l,int *a)
{ int i;
for(i=0;i<l;i++,a++)
printf("%3d",*a);
printf("\n");
}
2.
Modifier le programme de p.1 en
ajoutant une fonction max_colonne de la recherche d’éléments
maximaux par colonnes.
3.
Modifier le programme de p.2 en
ajoutant une fonction echange à échanger deux lignes avec ses
numéros données dans le tableau.
4.
Modifier le programme de p.3 en ajoutant la possibilité à rechercher les éléments qui sont à la
fois un maximum sur leur ligne et un minimum sur leur colonne. Ces
éléments sont appelés des points-cols. Afficher les
positions et les valeurs de tous les points-cols trouvés.