Home- Exercices - Solutions des exercices

 

Page Précédente - Page Suivante


Solutions des Exercices chapitre 7: Les tableaux

Exercice 7.1

#include <stdio.h>
main()
{
 
 int T[50]; 
 int N;     
 int I;     
 long SOM;  
 
 
 /* Saisie des données du tableau */
 printf("Donnez la dimension du tableau: ");
 scanf("%d", &N );
 for (I=0; I<N; I++)
    {
     printf("Elément %d : ", I);
     scanf("%d", &T[I]);
    }
  /* Affichage du tableau */
 printf("Les elements du Tableau :\n");
 for (I=0; I<N; I++)
     printf("%d ", T[I]);
 printf("\n");
  /* Calculer la somme */
 for (SOM=0, I=0; I<N; I++)
     SOM += T[I];
  /* Edition du résultat */
 printf("Somme de éléments : %ld\n", SOM);
}

Exercice 7.2

#include <stdio.h>
main()
{
 
 int T[50]; 
 int N;     
 int I,J;   
 
 /* on va Saisir les données */
 printf("Dimension du tableau: ");
 scanf("%d", &N );
 for (I=0; I<N; I++)
    {
     printf("Elément %d : ", I);
     scanf("%d", &T[I]);
    }
 /* Affichage des éléments du tableau */
 printf("Tableau: \n");
 for (I=0; I<N; I++)
     printf("%d ", T[I]);
 printf("\n");
  
 for (I=0, J=0 ; I<N ; I++)
     {
      T[J] = T[I];
      if (T[I]) J++;
     }
 /* Nouvelle dimension du tableau ! */
 N = J;
  /* affichage des résultats */
 printf("Tableau résultat :\n");
 for (I=0; I<N; I++)
     printf("%d ", T[I]);
 printf("\n");
}

 

Exercice 7.3

#include <stdio.h>
main()
{
int T[50]; 
 int N;     
 int I,J;   
 int AIDE;  
 
 /* Saisir les données */
 printf("Dimension du tableau: ");
 scanf("%d", &N );
 for (I=0; I<N; I++)
    {
     printf("Elément %d : ", I);
     scanf("%d", &T[I]);
    }
 /* Affichage du tableau */
 printf("Tableau: \n");
 for (I=0; I<N; I++)
     printf("%d ", T[I]);
 printf("\n");
 /* Inverser les élément du tableau */
 for (I=0, J=N-1 ; I<J ; I++,J--)
      /* Echange de T[I] et T[J] */
        {
         AIDE = T[I];
         T[I] = T[J];
         T[J] = AIDE;
        }
  /* affichage des résultats */
 printf("Tableau résultat :\n");
 for (I=0; I<N; I++)
     printf("%d ", T[I]);
 printf("\n");
 
}

Exercice 7.4

#include <stdio.h>
main()
{
 
 int T[50], T2[50], T3[50];
 int N,     NPOS,     NNEG;
 int I; 
 
 /* Saisie des données */
 printf("Dimension du tableau: ");
 scanf("%d", &N );
 for (I=0; I<N; I++)
    {
     printf("Elément %d : ", I);
     scanf("%d", &T[I]);
    }
 /* Affichage du tableau */
 printf("Tableau donné :\n");
 for (I=0; I<N; I++)
     printf("%d ", T[I]);
 printf("\n");
 /* Initialisation des dimensions de T2 et T3 */
 NPOS=0;
 NNEG=0;
 /* Transfer des données */
 for (I=0; I<N; I++)
      { if (T[I]>0) {
                     T2[NPOS]=T[I];
                     NPOS++;
                    }
        if (T[I]<0) {
                     T3[NNEG]=T[I];
                     NNEG++;
                    }
      }
  /* Affichage des résultat */
 printf("Tableau T2 :\n");
 for (I=0; I<NPOS; I++)
     printf("%d ", T2[I]);
 printf("\n");
 printf("Tableau T3 :\n");
 for (I=0; I<NNEG; I++)
     printf("%d ", T3[I]);
 printf("\n");
  
}

 

Exercice 7.5

#include <stdio.h>
main()
{
 int T[50][50]; 
 int L, C;  
 int I, J;  
 long SOM;  
 
printf("Nombre de lignes   : ");
 scanf("%d", &L );
 printf("Nombre de colonnes: ");
 scanf("%d", &C );
 for (I=0; I<L; I++)
    for (J=0; J<C; J++)
        {
         printf("Elément[%d][%d] : ",I,J);
         scanf("%d", &T[I][J]);
        }
  /* Affichage du tableau */
 printf("Tableau donné :\n");
 for (I=0; I<L; I++)
    {
     for (J=0; J<C; J++)
         printf("%7d", T[I][J]);
     printf("\n");
    }
  /* Calcul de la somme  */
 for (SOM=0, I=0; I<L; I++)
     for (J=0; J<C; J++)
         SOM += T[I][J];
  /* Affichage du résultat */
 printf("Somme des éléments : %ld\n", SOM);
}

Exercice 7.6

#include <stdio.h>
main()
{
 int T[50][50]; 
 int L, C;      
 int I, J;      
 long SOM;  
 
printf("Nombre de lignes   : ");
 scanf("%d", &L );
 printf("Nombre de colonnes: ");
 scanf("%d", &C );
 for (I=0; I<L; I++)
    for (J=0; J<C; J++)
        {
         printf("Elément[%d][%d] : ",I,J);

scanf("%d", &T[I][J]);
        }
 /* Affichage du tableau */
 printf("Tableau donné :\n");
 for (I=0; I<L; I++)
    {
     for (J=0; J<C; J++)
          printf("%7d", T[I][J]);
     printf("\n");
    }
 /* Calcul et affichage de la somme des lignes */
 for (I=0; I<L; I++)
     {
      for (SOM=0, J=0; J<C; J++)
             SOM += T[I][J];
      printf("Somme - ligne %d : %ld\n",I,SOM);
     }
 /* Calcul et affichage de la somme des colonnes */
 for (J=0; J<C; J++)
     {
      for (SOM=0, I=0; I<L; I++)
             SOM += T[I][J];
      printf("Somme - colonne %d : %ld\n",J,SOM);
     }
}

Exercice 7.7

#include <stdio.h>
main()
{
 int M[10][10]; 
 int T2[100];    
 int L, C;      
 int I, J ;
 
 
 printf("Nombre de lignes   : ");
 scanf("%d", &L );
 printf("Nombre de colonnes) : ");
 scanf("%d", &C );
 for (I=0; I<L; I++)
    for (J=0; J<C; J++)
        {
         printf("Elément[%d][%d] : ",I,J);
         scanf("%d", &M[I][J]);
        }
 /* Affichage du tableau 2-dim */
 printf("Tableau donné :\n");
 for (I=0; I<L; I++)
    {
     for (J=0; J<C; J++)
          printf("%7d", M[I][J]);
     printf("\n");
    }
 /* Transfer des éléments ligne par ligne */
 for (I=0; I<L; I++)
      for (J=0; J<C; J++)
             T2[I*C+J] = M[I][J];
 
 printf("Tableau résultat : ");
 for (I=0; I<L*C; I++)
     printf("%d ", T2[I]);
 printf("\n");
}

 

Exercice 7.8 Produit scalaire de deux vecteurs

#include <stdio.h>
main()
{
 int T1[50], T2[50]; 
 int N;     
 int I;     
 long PS;   
 
printf("Dimension des tableaux (max.50) : ");
 scanf("%d", &N );
 printf("** Premier tableau **\n");
 for (I=0; I<N; I++)
    {
     printf("Elément %d : ", I);
     scanf("%d", &T1[I]);
    }
 printf("** Deuxième tableau **\n");
 for (I=0; I<N; I++)
    {
     printf("Elément %d : ", I);
     scanf("%d", &T2[I]);
    }
 /* Calcul du produit scalaire */
 for (PS=0, I=0; I<N; I++)
      PS += (long)T1[I]*T2[I];
  /* Edition du résultat */
 printf("Produit scalaire : %ld\n", PS);
}

Exercice 7.9 Calcul d'un polynôme de degré N

#include <stdio.h>
#include <math.h>
main()
{
 float A[20];
 int I;      
 int N;      
 float X;    
 float P;    
 
 /* Saisir le degré N */
 printf("Donnez le degré  N: ");
 scanf("%d", &N);
 printf("Donnez la valeur X: ");
 scanf("%f", &X);
 /* Saisie des coefficients */
 for (I=0 ; I<=N ; I++)
    {
     printf("Entrer le coefficient A%d : ", I);
     scanf("%f", &A[I]);
    }
 
Calcul à l'aide de pow
 for (P=0.0, I=0 ; I<=N ; I++)
       P +=  A[I]*pow(X,I);     
 
 
 
 /* affichage du résultat */
 printf("Valeur du polynôme pour X = %.2f : %.2f\n", X, P);
}

 

Exercice 7.10 Maximum et minimum des valeurs d'un tableau

#include <stdio.h>
main()
{
 /* Déclarations */
 int A[50]; 
 int N;     
int I;     
 int MIN;   
 int MAX;   
 
 /* Saisie des données */
 printf("Dimension du tableau: ");
 scanf("%d", &N );
 for (I=0; I<N; I++)
    {
     printf("Elément %d : ", I);
     scanf("%d", &A[I]);
    }
 /* Affichage du tableau */
 printf("Tableau donné :\n");
 for (I=0; I<N; I++)
     printf("%d ", A[I]);
 printf("\n");
 /* Recherche du maximum et du minimum */
 MIN=0;
 MAX=0;
 for (I=0; I<N; I++)
     {
      if(A[I]>A[MAX]) MAX=I;
      if(A[I]<A[MIN]) MIN=I;
     }
  /* affichage du résultat */
 printf("Position du min : %d\n", MIN);
 printf("Position du max : %d\n", MAX);
 printf("Valeur   du min : %d\n", A[MIN]);
 printf("Valeur   du max : %d\n", A[MAX]);
 
}

Exercice 7.11 Insérer une valeur dans un tableau trié

#include <stdio.h>
main()
{
 int A[50]; 
 int VAL;   
 int N;     
 int I;     
 
 
 printf("Dimension N du tableau initial (max.50) : ");
 scanf("%d", &N );
 for (I=0; I<N; I++)
    {
     printf("Elément %d : ", I);
     scanf("%d", &A[I]);
    }
 printf("Elément à insérer : ");
 scanf("%d", &VAL );
 
 
 /* Affichage du tableau */
 printf("Tableau donné : \n");
 for (I=0; I<N; I++)
    printf("%d ", A[I]);
 printf("\n");
 
 
 for (I=N ; (I>0)&&(A[I-1]>VAL) ; I--)
       A[I]=A[I-1];
 
 A[I]=VAL;
 
 /* Nouvelle dimension du tableau ! */
 N++;
 
  /* Affichage des résultats */
 printf("Tableau résultat :\n");
 for (I=0; I<N; I++)
    printf("%d ", A[I]);
 printf("\n");
}

    

Exercice 7.12 Recherche d'une valeur dans un tableau

a) La recherche séquentielle

#include <stdio.h>
main()
{
 /* Déclarations */
 int A[50]; 
 int VAL;   
 int POS;   
 int N;     
 int I;     
 
 
 printf("Dimension du tableau (max.50) : ");
 scanf("%d", &N );
 for (I=0; I<N; I++)
    {
     printf("Elément %d : ", I);
     scanf("%d", &A[I]);
    }
 printf("Elément à rechercher : ");
 scanf("%d", &VAL );
 
 /* Affichage du tableau */
 printf("Tableau donné : \n");
 for (I=0; I<N; I++)
     printf("%d ", A[I]);
 printf("\n");
 
 /* Recherche de la position de la valeur */
 POS = -1;
 for (I=0 ; (I<N)&&(POS==-1) ; I++)
       if (A[I]==VAL)
           POS=I;
  /* Affichage du résultat */
 if (POS==-1)
     printf("La valeur recherchée ne se trouve pas "
            "dans le tableau.\n");
  else
     printf("La valeur %d se trouve à la position %d. \n",
 VAL, POS);
}

b) La recherche dichotomique (

#include <stdio.h>
main()
{
 int A[50]; 
 int VAL;   
 int POS;   
 int N;     
 int I;     
 int INF, MIL, SUP; 
 
 printf("Dimension du tableau (max.50) : ");
 scanf("%d", &N );
 for (I=0; I<N; I++)
    {
     printf("Elément %d : ", I);
     scanf("%d", &A[I]);
    }
 
 printf("Elément à rechercher : ");
 scanf("%d", &VAL );
 
 /* Affichage du tableau */
 printf("Tableau donné : \n");
 for (I=0; I<N; I++)
    printf("%d ", A[I]);
 printf("\n");
 
 
 /* Initialisation des limites du domaine de recherche */
 INF=0;
 SUP=N-1;
 /* Recherche de la position de la valeur */
 POS=-1;
 while ((INF<=SUP) && (POS==-1))
        {
         MIL=(SUP+INF)/2;
         if (VAL < A[MIL])
               SUP=MIL-1;
         else if (VAL > A[MIL])
               INF=MIL+1;
         else
               POS=MIL;
        }
 
  /* Affichage du résultat */
 if (POS==-1)
     printf("La valeur recherchée ne se trouve pas "
            "dans le tableau.\n");
 else
     printf("La valeur %d se trouve à la position %d. \n",
 VAL, POS);
}

Exercice 7.13 Fusion de deux tableaux triés

#include <stdio.h>
main()
{
 
 int A[50], B[50], FUS[100];
 int N, M;
 int IA, IB, IFUS; 
 
 printf("Dimension du tableau A : ");
 scanf("%d", &N );
 
 printf("Entrer les éléments de A dans l'ordre croissant :\n");
 for (IA=0; IA<N; IA++)
    {
     printf("Elément A[%d] : ", IA);
     scanf("%d", &A[IA]);
    }
 printf("Dimension du tableau B : ");
 scanf("%d", &M );
 printf("Entrer les éléments de B dans l'ordre croissant :\n");
 for (IB=0; IB<M; IB++)
    {
     printf("Elément B[%d] : ", IB);
     scanf("%d", &B[IB]);
    }
 /* Affichage des tableaux A et B */
 printf("Tableau A :\n");
 for (IA=0; IA<N; IA++)
     printf("%d ", A[IA]);
 printf("\n");
 printf("Tableau B :\n");
 for (IB=0; IB<M; IB++)
     printf("%d ", B[IB]);
 printf("\n");
 
 
IA=0; IB=0; IFUS=0;
 while ((IA<N) && (IB<M))
        if(A[IA]<B[IB])
            {
             FUS[IFUS]=A[IA];
             IFUS++;
             IA++;
            }
        else
            {
             FUS[IFUS]=B[IB];
             IFUS++;
             IB++;
            }
  
 while (IA<N)
        {
         FUS[IFUS]=A[IA];
         IFUS++;
         IA++;
        }
 while (IB<M)
        {
         FUS[IFUS]=B[IB];
         IFUS++;
         IB++;
        }
 
 /* Affichage des résultats */
 printf("Tableau FUS :\n");
 for (IFUS=0; IFUS<N+M; IFUS++)
     printf("%d ", FUS[IFUS]);
 printf("\n");
}

 

Exercice 7.14 Tri par sélection du maximum

#include <stdio.h>
main()
{
 int A[50]; 
 int N;     
 int I;     
 int J;     
 int AIDE;  /* pour la permutation */
 int PMAX;  
 
 printf("Dimension du tableau (: ");
 scanf("%d", &N );
 for (J=0; J<N; J++)
    {
     printf("Elément %d : ", J);
     scanf("%d", &A[J]);
    }
 
 
 /* Affichage du tableau */
 printf("Tableau donné :\n");
 for (J=0; J<N; J++)
    printf("%d ", A[J]);
 printf("\n");
 
 
 for (I=0; I<N-1; I++)
     {
      /* Recherche du maximum à droite de A[I] */
      PMAX=I;
      for (J=I+1; J<N; J++)
          if (A[J]>A[PMAX]) PMAX=J;
      /* Echange de A[I] avec le maximum */
      AIDE=A[I];
      A[I]=A[PMAX];
      A[PMAX]=AIDE;
     }
 
  /* Affichage du résultat */
 printf("Tableau trié :\n");
 for (J=0; J<N; J++)
     printf("%d ", A[J]);
 printf("\n");
}

Exercice 7.15 Tri par propagation (bubble sort)

#include <stdio.h>
main()
{
 int A[50]; 
 int N;     
 int I;     
 int J;     
 int AIDE;  
 int FIN;   
 
  printf("Dimension du tableau (max.50) : ");
 scanf("%d", &N );
 for (J=0; J<N; J++)
    {
     printf("Elément %d : ", J);
     scanf("%d", &A[J]);
    }
 
 
 /* Affichage du tableau */
 printf("Tableau donné :\n");
 for (J=0; J<N; J++)
    printf("%d ", A[J]);
 printf("\n");
 
 /* Tri du tableau par propagation de l'élément maximal. */
 for (I=N-1 ; I>0 ; I=FIN)
     {
      FIN=0;
      for (J=0; J<I; J++)
            if (A[J]>A[J+1])
            {
             FIN=J;
             AIDE=A[J];
             A[J]=A[J+1];
             A[J+1]=AIDE;
            }
     }
 
  /* Affichage du résultat */
 printf("Tableau trié :\n");
 for (J=0; J<N; J++)
     printf("%d ", A[J]);
 printf("\n");
}

Exercice 7.16 Statistique des notes

#include <stdio.h>
main()
{
 int POINTS[50];  
 int NOTES[4];    
 int N;           
 int I, IN;       
 int SOM;         
 int MAX, MIN;    
 int MAXN;        
 
 
 printf("Entrez le nombre d'élèves: ");
 scanf("%d", &N);
 
 printf("Entrez les points des élèves:\n");
 for (I=0; I<N; I++)
    {printf("Elève %d:", I+1);
     scanf("%d", &POINTS[I]);
    }
 printf("\n");
 
 
 for (MAX=0, MIN=60, I=0; I<N; I++)
    {if (POINTS[I] > MAX) MAX=POINTS[I];
     if (POINTS[I] < MIN) MIN=POINTS[I];
    }
 
 printf("La note maximale est %d \n", MAX);
 printf("La note minimale est %d \n", MIN);
 
 
 for (SOM=0,I=0 ; I<N ; I++)
      SOM += POINTS[I];
 printf("La moyenne des notes est %f \n", (float)SOM/N);
 
 /* construire le tableau NOTES */
 for (IN=0 ; IN<7 ; IN++)
      NOTES[IN] = 0;
 for (I=0; I<N; I++) 
      NOTES[POINTS[I]/10]++;
 
 /* Recherche du maximum MAXN dans NOTES */
 for (MAXN=0,IN=0 ; IN<4 ; IN++)
      if (NOTES[IN] > MAXN)
          MAXN = NOTES[IN];
 
  for (I=MAXN; I>0; I--)
    {
     printf("\n %2d  >", I);
     for (IN=0; IN<4; IN++)
          {
           if (NOTES[IN]>=I)
               printf(" #######");
           else
               printf("        ");
          }
    }
 
 /* Affichage du domaine des notes */
 printf("\n      +");
 for (IN=0; IN<4; IN++)
      printf("-------+");
 printf("\n      I 0 - 9 I 10-12 I 13-16 "
        "I 16-20 I\n");
}

 

Exercice 7.17 Mise à zéro de la diagonale principale d'une matrice

#include <stdio.h>
main()
{
 int A[50][50]; 
 int N;         
int I, J;      
 
printf("Dimension de la matrice carrée: ");
 scanf("%d", &N);
 for (I=0; I<N; I++)
    for (J=0; J<N; J++)
        {
         printf("Elément[%d][%d] : ",I,J);
         scanf("%d", &A[I][J]);
        }
 /* Affichage de la matrice */
 printf("Matrice donnée :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<N; J++)
          printf("%7d", A[I][J]);
     printf("\n");
    }
 
 
 for (I=0; I<N; I++)
      A[I][I]=0;
 
 /* Edition du résultat */
 printf("Matrice résultat :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<N; J++)
          printf("%7d", A[I][J]);
     printf("\n");
    }
}

Exercice 7.18 Matrice unitaire

#include <stdio.h>
main()
{
 int U[50][50]; 
 int N;         
 int I, J;      
 
 
 printf("Dimension de la matrice carrée: ");
 scanf("%d", &N);
 
 
 for (I=0; I<N; I++)
     for (J=0; J<N; J++)
         if (I==J)
             U[I][J]=1;
         else
             U[I][J]=0;
 
 printf("Matrice de dimension %d :\n", N);
 for (I=0; I<N; I++)
    {
     for (J=0; J<N; J++)
          printf("%7d", U[I][J]);
     printf("\n");
    }
}

 

Exercice 7.19 Transposition d'une matrice

a)

#include <stdio.h>
main()
{
 
 int A[50][50];  
 int B[50][50];  
 int N, M;       
 int I, J;       
 
 
 printf("Nombre de lignes: ");
 scanf("%d", &N );
 printf("Nombre de colonnes: ");
 scanf("%d", &M );
 for (I=0; I<N; I++)
    for (J=0; J<M; J++)
        {
         printf("Elément[%d][%d] : ",I,J);
         scanf("%d", &A[I][J]);
        }
 
 printf("Matrice donnée :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<M; J++)
          printf("%7d", A[I][J]);
     printf("\n");
    }
 
 for (I=0; I<N; I++)
     for (J=0; J<M; J++)
          B[J][I]=A[I][J];
 
 
 
  printf("Matrice résultat :\n");
 for (I=0; I<M; I++)
    {
     for (J=0; J<N; J++)
          printf("%7d", B[I][J]);
     printf("\n");
    }
} 

b)

#include <stdio.h>
main()
{
 
 int A[50][50];  
 int N, M;       
 int I, J;       
 int AIDE;       
 int DMAX;       
 
 
 printf("Nombre de lignes   : ");
 scanf("%d", &N );
 printf("Nombre de colonnes: ");
 scanf("%d", &M );
 for (I=0; I<N; I++)
    for (J=0; J<M; J++)
        {
         printf("Elément[%d][%d] : ",I,J);
         scanf("%d", &A[I][J]);
        }
 
 
 printf("Matrice donnée :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<M; J++)
          printf("%7d", A[I][J]);
     printf("\n");
    }
  
 
DMAX = (N>M) ? N : M;
 for (I=0; I<DMAX; I++)
     for (J=0; J<I; J++)
         {
AIDE = A[I][J];
          A[I][J] = A[J][I];
          A[J][I] = AIDE;
         }
 
  printf("Matrice résultat :\n");
 for (I=0; I<M; I++)
    {
     for (J=0; J<N; J++)
          printf("%7d", A[I][J]);
     printf("\n");
    }
}

Exercice 7.20 Produit d'une matrice par un réel

a) 

#include <stdio.h>
main()
{
 
 float A[50][50]; 
 float B[50][50]; 
 int N, M;        
 int I, J;        
 float X;         
 
 printf("Nombre de lignes   : ");
 scanf("%d", &N );
 printf("Nombre de colonnes: ");
 scanf("%d", &M );
 for (I=0; I<N; I++)
    for (J=0; J<M; J++)
        {
         printf("Elément[%d][%d] : ",I,J);
         scanf("%f", &A[I][J]);
        }
 printf("Multiplicateur X : ");
 scanf("%f", &X );
 
 
 printf("Matrice donnée :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<M; J++)
          printf("%10.2f", A[I][J]);
     printf("\n");
    }
 
 
 for (I=0; I<N; I++)
     for (J=0; J<M; J++)
          B[I][J] = X*A[I][J];
 
 
 printf("Matrice résultat :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<M; J++)
          printf("%10.2f", B[I][J]);
     printf("\n");
    }
} 

b)

#include <stdio.h>
main()
{
 
 float A[50][50]; 
 int N, M;        
 int I, J;        
 float X;         
 
 /* Saisie des données */
 printf("Nombre de lignes    : ");
 scanf("%d", &N );
 printf("Nombre de colonnes: ");
 scanf("%d", &M );
 for (I=0; I<N; I++)
    for (J=0; J<M; J++)
        {
         printf("Elément[%d][%d] : ",I,J);
         scanf("%f", &A[I][J]);
        }
 printf("Multiplicateur X : ");
 scanf("%f", &X);
 
 
 printf("Matrice donnée :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<M; J++)
          printf("%10.2f", A[I][J]);
     printf("\n");
    }
 
 
 for (I=0; I<N; I++)
     for (J=0; J<M; J++)
          A[I][J] *= X;
 
 
 printf("Matrice résultat :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<M; J++)
          printf("%10.2f", A[I][J]);
     printf("\n");
    }
}

Exercice 7.21 Somme de deux matrices

a)

#include <stdio.h>
main()
{
 
 int A[50][50]; 
 int B[50][50]; 
 int C[50][50]; 
 int N, M;      
 int I, J;      
 
 /* Saisie des données */
 printf("Nombre de lignes   : ");
 scanf("%d", &N );
 printf("Nombre de colonnes: ");
 scanf("%d", &M );
 printf("*** Matrice A ***\n");
 for (I=0; I<N; I++)
    for (J=0; J<M; J++)
        {
         printf("Elément[%d][%d] : ",I,J);
         scanf("%d", &A[I][J]);
        }
 printf("*** Matrice B ***\n");
 for (I=0; I<N; I++)
    for (J=0; J<M; J++)
        {
         printf("Elément[%d][%d] : ",I,J);
         scanf("%d", &B[I][J]);
        }
 
 printf("Matrice donnée A :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<M; J++)
          printf("%7d", A[I][J]);
     printf("\n");
    }
 printf("Matrice donnée B :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<M; J++)
          printf("%7d", B[I][J]);
     printf("\n");
    }
 
 
 for (I=0; I<N; I++)
     for (J=0; J<M; J++)
           C[I][J] = A[I][J]+B[I][J];
 
 printf("Matrice résultat C :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<M; J++)
          printf("%7d", C[I][J]);
     printf("\n");
    }
 
}

b) La matrice B est ajoutée à A.

#include <stdio.h>
main()
{
 
 int A[50][50]; 
 int B[50][50]; 
 int N, M;      
 int I, J;      
 
 /* Saisie des données */
 printf("Nombre de lignes   : ");
 scanf("%d", &N );
 printf("Nombre de colonnes: ");
 scanf("%d", &M );
 printf("*** Matrice A ***\n");
 for (I=0; I<N; I++)
    for (J=0; J<M; J++)
        {
         printf("Elément[%d][%d] : ",I,J);
         scanf("%d", &A[I][J]);
        }
 printf("*** Matrice B ***\n");
 for (I=0; I<N; I++)
    for (J=0; J<M; J++)
        {
         printf("Elément[%d][%d] : ",I,J);
         scanf("%d", &B[I][J]);
        }
 
 printf("Matrice donnée A :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<M; J++)
          printf("%7d", A[I][J]);
     printf("\n");
    }
 
 printf("Matrice donnée B :\n");
 for (I=0; I<N; I++)
    {
for (J=0; J<M; J++)
          printf("%7d", B[I][J]);
     printf("\n");
    }
 
 for (I=0; I<N; I++)
     for (J=0; J<M; J++)
          A[I][J] += B[I][J];
 
 printf("Matrice résultat A :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<M; J++)
          printf("%7d", A[I][J]);
     printf("\n");
    }
}

Exercice 7.22 Produit de deux matrices

#include <stdio.h>
main()
{
 
 
 int A[50][50]; 
 int B[50][50]; 
 int C[50][50]; 
 int N, M, P;   
 int I, J, K;   
 
 
 printf("*** Matrice A ***\n");
 printf("Nombre de lignes de   A: ");
 scanf("%d", &N );
 printf("Nombre de colonnes de A: ");
 scanf("%d", &M );
 for (I=0; I<N; I++)
    for (J=0; J<M; J++)
        {
         printf("Elément[%d][%d] : ",I,J);
         scanf("%d", &A[I][J]);
        }
 
 
 printf("Nombre de lignes de   B : %d\n", M);
 printf("Nombre de colonnes de B: ");
 scanf("%d", &P );
 for (I=0; I<M; I++)
    for (J=0; J<P; J++)
        {
         printf("Elément[%d][%d] : ",I,J);
         scanf("%d", &B[I][J]);
        }
 
 printf("Matrice donnée A :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<M; J++)
          printf("%7d", A[I][J]);
     printf("\n");
    }
 printf("Matrice donnée B :\n");
 for (I=0; I<M; I++)
    {
     for (J=0; J<P; J++)
          printf("%7d", B[I][J]);
     printf("\n");
    }
 
 for (I=0; I<N; I++)
     for (J=0; J<P; J++)
         {
          C[I][J]=0;
          for (K=0; K<M; K++)
               C[I][J] += A[I][K]*B[K][J];
         }
 
 printf("Matrice résultat C :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<P; J++)
          printf("%7d", C[I][J]);
     printf("\n");
    }
 
}

 

Exercice 7.23 Triangle de Pascal

#include <stdio.h>
main()
{
 
 int P[14][14]; 
 int N;         
 int I, J;      
 
 
 do {
      printf("Entrez le degré N du triangle (max.13) : ");
     scanf("%d", &N);
 } while (N>13||N<0);
  
 
 for (I=0; I<=N; I++)
     {
      P[I][I]=1;
      P[I][0]=1;
      for (J=1; J<I; J++)
            P[I][J] = P[I-1][J] + P[I-1][J-1];
     }
 
 printf("Triangle de Pascal de degré %d :\n", N);
 for (I=0; I<=N; I++)
    {
     printf(" N=%2d", I);
     for (J=0; J<=I; J++)
          if (P[I][J])
                printf("%5d", P[I][J]);
     printf("\n");
    }
 
}

Exercice 7.24 Recherche de 'points-cols'

#include <stdio.h>
main()
{
 
 
 int A[50][50];  
 int MAX[50][50];
 int MIN[50][50];
 int N, M;    
 int I, J;    
 int AIDE;    
 int C;       
 
 /* Saisie des données */
 printf("Nombre de lignes   (max.50) : ");
 scanf("%d", &N );
 printf("Nombre de colonnes (max.50) : ");
 scanf("%d", &M );
 for (I=0; I<N; I++)
    for (J=0; J<M; J++)
        {
         printf("Elément[%d][%d] : ",I,J);
         scanf("%d", &A[I][J]);
        }
 /* Affichage de la matrice */
 printf("Matrice donnée :\n");
 for (I=0; I<N; I++)
    {
     for (J=0; J<M; J++)
          printf("%7d", A[I][J]);
     printf("\n");
    }
 
 
 for (I=0; I<N; I++)
     {
      /* Recherche du maximum sur la ligne I */
      AIDE=A[I][0];
      for (J=1; J<M; J++)
           if (A[I][J]>AIDE) AIDE=A[I][J];
      /* Marquage de tous les maxima sur la ligne */
      for (J=0; J<M; J++)
           if (A[I][J]==AIDE)  /* ou bien :                   */
                MAX[I][J]=1;   /* MAX[I][J] = (A[I][J]==AIDE) */
           else
                MAX[I][J]=0;
     }
 
 for (J=0; J<M; J++)
     {
      /* Recherche du minimum sur la colonne J */
      AIDE=A[0][J];
      for (I=1; I<N; I++)
           if (A[I][J]<AIDE) AIDE=A[I][J];
      /* Marquage de tous les minima sur la colonne J */
      for (I=0; I<N; I++)
           if (A[I][J]==AIDE)  /* ou bien :                   */
                MIN[I][J]=1;   /* MIN[I][J] = (A[I][J]==AIDE) */
           else
                MIN[I][J]=0;
     }
 
 
 printf("Points - cols :\n");
 for (C=0, I=0; I<N; I++)
      for (J=0; J<M; J++)
           if (MAX[I][J]&&MIN[I][J])
              {
               C++;
               printf("L'élément %d\test un maximum "
                      "sur la ligne %d\n"
                      "             \t et un minimum "
                      "sur la colonne %d\n", A[I][J], I, J);
              }
 if (C==0)
     printf("Le tableau ne contient pas de points-cols.\n");
}

 

 

 

 


 


Home- Exercices - Solutions des exercices
Copyright © 2019