Besoin d'un code de programme en c

Bonjour,
salut en faite suis à la recherche d'un programme en c qui permet de:
-Saisir et d'afficher les éléments de A et de B(A et B etant deux matrices).
-Faire une fonction pour calculer leur déterminant <-----
-Faire les fonctions qui permettent de faire le produit et la somme de A et B.
-Faire une fonction qui calcul l'inverse d'une matrice <------
-Faire une fonction qui calcule la transposée d'une matrice <------

les plus urgents sont ceux munis de <-----
merci..
Configuration: Windows Vista
Firefox 3.0.9

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut,

    suis à la recherche d'un
    Ben, tu nous montreras où t'en est avec la recherche, et on t'aidera pour la suite.
    1. Je sens qu'il s'agit d'un exercice qu'on t'a demandé de faire... ;)
      Je vais pas te donner la réponse directement, mais plutôt une aide...

      As-tu pensé à utiliser des tableaux à deux dimensions? (int **tab)
      Pour écrire ou lire dans la case i-j : tab[i][j]

      Je suis pas un pro du C, donc prends mes indications avec des pincettes.

      J'avoue que en C ça doit être assez chiant... En C++ tu l'aurais déjà terminé les doigts dans le nez et les yeux bandés...
      1. Contributeur
        Salut
        J'avoue que en C ça doit être assez chiant... En C++ tu l'aurais déjà terminé les doigts dans le nez et
        les yeux bandés...

        En quoi le faire en C++ serait "beaucoup" plus simple qu'en C ?
      2. @fiddyLa déclaration et l'utilisation d'un tableau en 2D en C est beaucoup plus hasardeuse et "chiante" (excusez moi du mot) qu'en C++...

        Du moins c'est mon avis tout à fait personnel.
      3. Modérateur
        @feadin91Salut,

        On veut voir des exemples.
      4. Contributeur
        @feadin91hasardeuse
        Il n'y a pas de place au hasard dans la déclaration de tableaux en 2D ^^. Soit tu le fais bien, soit tu le fais mal, tout comme en C++.

        "chiante"
        J'imagine que tu parles de tableaux "dynamiques" :
        La syntaxe est légèrement moins lourde en C++ :
        En C      : scanf("%d",&taille); int *tab = malloc( sizeof(*tab) * taille); .... free(tab);
        En C++ : std::cin >> taille; int *tab = new int [taille]; .... delete []tab;


        Mais bon, de là à dire que c'est beaucoup plus pénible, faut pas abuser ^^.
        De plus, en C, tu peux utiliser le VLA apparu avec la norme C99 (en C++, ce n'est pas standard), et utiliser :
        scanf("%d",&taille); int tab[taille];
    2. en faite c'est pas un exercice d'ecole mais un exercice personnel.jai commencé et je n'arrive pas à faire les 3 parties ennoncées..la preuve voici ce que jai fait:

      #include <stdio.h>
      #include <malloc.h>
      #include <stdlib.h>
      void saisie_somme(int *A,int *B,int *C,int n)
      {
      int i,j;
      for(i=0;i<n;i++)
      for(j=0;j<n;j++)
      {
      printf("A[%d,%d] \n",i,j);
      scanf(" \n %d" , &A[i*n+j]);
      }
      for(i=0;i<n;i++)
      for(j=0;j<n;j++)
      {
      printf("B[%d,%d] \n",i,j);
      scanf(" \n %d" , &B[i*n+j]);
      }
      }
      void affichage(int *C,int n)
      {
      int i,j;
      printf("Affichage du tableau \n");
      for(i=0;i<n;i++)
      for(j=0;j<n;j++)
      if(j==0)
      {
      printf("\n %d \t",C[i*n+j]);
      }
      else
      {
      printf("\n %d \t",C[i*n+j]);
      }
      }
      main()
      {
      int n;
      int *A,*B,*C;
      printf("Donner n \n");
      scanf("\n %d",&n);
      A=(int*)malloc(n*n*sizeof(int));
      B=(int*)malloc(n*n*sizeof(int));
      C=(int*)malloc(n*n*sizeof(int));
      saisie_somme(A,B,C,n);
      affichage(C,n);
      }
      #include<stdlib.h>
      #include<stdio.h>
      #define NC 3
      #define NL 3
      void main()
      {
      int i,j,mat1[NL][NC],mat2[NL][NC];
      int mat3[NL][NC],m,l,k,n;
      for(i=0;i<NL;i++)
      {
      for(j=0;j<NC;j++)
      {
      printf("valeur de la ligne %d et de la colonne %d",i,j);
      scanf("\n %d",&mat1[i][j]);
      }
      }
      for(i=0;i<NL;i++)
      {
      for(j=0;j<NC;j++)
      {
      printf("la ligne %d et la colonne %d",i,j);
      scanf("\n %d",&mat2[i][j]);
      }
      }
      l=m=n=k=0;
      for(i=0;i<NL;i++)
      {
      for(j=0;j<NC;j++)
      {
      mat3[n][m]=mat1[i][j]+mat2[k][l];
      k++;
      m++;
      }
      l++;
      n++;
      }
      for(n=0;n<NL;n++)
      {
      for(m=0;m<NC;m++)
      {
      printf("\n %d",&mat3[m][n]);
      }
      }
      }

      voila ce que j'ai fait.
      1. Contributeur
        Salut,
        Créer deux fichiers comme tu as fait, c'est bien. Mais par contre, il ne faut qu'un main, et créer des fichiers headers contenant le prototype des fonctions.
        Le prototype de main sans arguments c'est : int main(void);. N'oublie pas le return 0;

        scanf("\n %d",&n);
        Ne mets pas de \n dans le scanf. Tout simplement : scanf("%d",&n);

        printf("\n %d",&mat3[m][n]);
        Là, tu affiches l'adresse. Pour afficher le contenu : printf("\n %d",mat3[m][n])

        l=m=n=k=0;
        for(i=0;i<NL;i++)
        {
        for(j=0;j<NC;j++)
        {
        mat3[n][m]=mat1[i][j]+mat2[k][l];
        k++;
        m++;
        }
        l++;
        n++;
        }

        Tu souhaites réaliser quelle opération matricielle avec ça ?

        Cdlt
    3. merci pou la modif..
      en faite ces deux programmes differents..jai fait de deux manieres..le premier programme est la saisie et laffichage du reslutat et le deuxieme programme ces la somme..maintenant jai besoin dun programme(fonction qui me permet de calculer la transposée, l'inverse et le determinant d'une matrice...
      merci