Besoin d'un code de programme en c

justelefils Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
justelefils Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -
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..
A voir également:

4 réponses

lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
feadin91 Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   89
 
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...
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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 ?
0
feadin91 Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   89 > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
La 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.
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > feadin91 Messages postés 257 Date d'inscription   Statut Membre Dernière intervention  
 
Salut,

On veut voir des exemples.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > feadin91 Messages postés 257 Date d'inscription   Statut Membre Dernière intervention  
 
hasardeuse
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];
0
justelefils Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
0
justelefils Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
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
0