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.