Exercice Corrige Langage C : Tableau & Matrice

  1. Comment appelle-t-on les paramètres d’une fonction en C?
  2. Proposez une fonction qui calcule la somme des valeurs des éléments d’un Tableau(Tab2).
  3. Proposez une fonction qui prend un tableau ‘’tdiv’’ et un nombre ‘’nb’’ et qui remplit ce Tableau (Tab3) par les diviseurs du nombre, retourne un Tab3.
  4. Proposez une fonction qui constitue à partir de 02 tableaux pris en paramètre de même longueur un nouveau tableau qui seras la somme des éléments des tableaux de départ.
  5. Proposez une fonction qui renvoie l’indice du plus petit élément d’un tableau (tab5) pris en paramètre.
  6. Proposez une fonction qui renvoie le plus petit élément d’une Matrice(Mat6) prise en paramètre.
  7. Proposez une fonction qui renvoie le nombre de réels positif d’une Matrice (Mat7) prise en paramètre.
  8. Proposez une fonction qui affiche la position du plus petit élément d’une matrice (Mat8) prise en paramètre.
  9. Proposez une fonction qui renvoie plus petit élément d’un tableau (tab9) pris en paramètre.
  10. Proposez une fonction qui génère puis renvoie-la transposé d’une matrice (Mat10) prise en paramètre.
  11. Proposez une fonction qui prends 02 matrices (mat111 et mat112) et calcul le produit (Mat11).
  12. Proposez une fonction qui renvoie le plus Grand élément d’une Matrice(Mat12) prise en paramètre.
  13. Proposez une fonction qui détermine le ‘’Point Col’’ (c’est l’élément de la matrice qui est le minimum de sa ligne et maximum de sa colonne ou inversement puis renvoie-la transposé d’une matrice (Mat1) prise en paramètre.

 

Correction :

//En C, les paramètres d'une fonction sont appelés des "arguments".

 

#include <stdio.h>

// Fonction qui calcule la somme des valeurs d'un tableau
int sommeTableau(int tab[], int taille) {
    int somme = 0;
    for (int i = 0; i < taille; i++) {
        somme += tab[i];
    }
    return somme;
}

// Fonction qui remplit un tableau avec les diviseurs d'un nombre
int* diviseurs(int tdiv[], int nb, int* taille) {
    int i;
    *taille = 0;
    for (i = 1; i <= nb; i++) {
        if (nb % i == 0) {
            tdiv[*taille] = i;
            (*taille)++;
        }
    }
    return tdiv;
}

// Fonction qui calcule la somme de deux tableaux
void sommeTableaux(int tab1[], int tab2[], int taille, int resultat[]) {
    for (int i = 0; i < taille; i++) {
        resultat[i] = tab1[i] + tab2[i];
    }
}

// Fonction qui renvoie l'indice du plus petit élément d'un tableau
int indiceMin(int tab[], int taille) {
    int indice = 0;
    for (int i = 1; i < taille; i++) {
        if (tab[i] < tab[indice]) {
            indice = i;
        }
    }
    return indice;
}

// Fonction qui renvoie le plus petit élément d'une matrice
double plusPetitElement(double matrice[][100], int lignes, int colonnes) {
    double min = matrice[0][0];
    for (int i = 0; i < lignes; i++) {
        for (int j = 0; j < colonnes; j++) {
            if (matrice[i][j] < min) {
                min = matrice[i][j];
            }
        }
    }
    return min;
}

// Fonction qui renvoie le nombre de réels positifs d'une matrice
int nbReelsPositifs(double matrice[][100], int lignes, int colonnes) {
    int nbPositifs = 0;
    for (int i = 0; i < lignes; i++) {
        for (int j = 0; j < colonnes; j++) {
            if (matrice[i][j] > 0) {
                nbPositifs++;
            }
        }
    }
    return nbPositifs;
}

// Fonction qui affiche la position du plus petit élément d'une matrice
void positionPlusPetitElement(double matrice[][100], int lignes, int colonnes, int* ligne, int* colonne) {
    double min = matrice[0][0];
    *ligne = 0;
    *colonne = 0;
    for (int i = 0; i < lignes; i++) {
        for (int j = 0; j < colonnes; j++) {
            if (matrice[i][j] < min) {
                min = matrice[i][j];
                *ligne = i;
                *colonne = j;
            }
        }
    }
}

// Fonction qui renvoie le plus petit élément d'un tableau
double plusPetitElementTab(double tab[], int taille) {
    double min = tab[0];
    for (int i = 1; i < taille; i++)

{
if (tab[i] < min) {
min = tab[i];
}
}
return min;
}

// Fonction qui génère puis renvoie la transposée d'une matrice
void transposerMatrice(double mat[][MAX_COL], int nbLignes, int nbCols, double transposee[][MAX_LIGNE]) {
for (int i = 0; i < nbLignes; i++) {
for (int j = 0; j < nbCols; j++) {
transposee[j][i] = mat[i][j];
}
}
}

// Fonction qui prend 2 matrices (mat111 et mat112) et calcule leur produit
void multiplierMatrices(double mat1[][MAX_COL], int nbLignes1, int nbCols1, double mat2[][MAX_COL], int nbLignes2, int nbCols2, double resultat[][MAX_COL]) {
if (nbCols1 != nbLignes2) {
printf("Erreur : les dimensions des matrices ne sont pas compatibles pour effectuer une multiplication\n");
return;
}
for (int i = 0; i < nbLignes1; i++) {
for (int j = 0; j < nbCols2; j++) {
double sum = 0;
for (int k = 0; k < nbCols1; k++) {
sum += mat1[i][k] * mat2[k][j];
}
resultat[i][j] = sum;
}
}
}

// Fonction qui renvoie le plus grand élément d'une matrice
double plusGrandElementMat(double mat[][MAX_COL], int nbLignes, int nbCols) {
double max = mat[0][0];
for (int i = 0; i < nbLignes; i++) {
for (int j = 0; j < nbCols; j++) {
if (mat[i][j] > max) {
max = mat[i][j];
}
}
}
return max;
}

// Fonction qui détermine le 'Point Col' d'une matrice et renvoie sa transposée
void trouverPointCol(double mat[][MAX_COL], int nbLignes, int nbCols, double transposee[][MAX_LIGNE]) {
int minLigne, maxCol;
double minVal = mat[0][0], maxVal = mat[0][0];
// Recherche du minimum de la ligne 0
for (int j = 1; j < nbCols; j++) {
if (mat[0][j] < minVal) {
minVal = mat[0][j];
minLigne = 0;
maxCol = j;
}
}
// Recherche du maximum de la colonne correspondant au minimum de la ligne 0
for (int i = 1; i < nbLignes; i++) {
if (mat[i][maxCol] > maxVal) {
maxVal = mat[i][maxCol];
minLigne = i;
}
}
// Transposition de la matrice
for (int i = 0; i < nbCols; i++) {
for (int j = 0; j < nbLignes; j++) {
transposee[i][j] = mat[j][i];
}
}
}

Si vous avez trouvé cet exercice corrige en Langage C de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 658395978 | Réaliser Par Joël_Yk

  • Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam