Programme en C
Résolu
adama36
Messages postés
12
Statut
Membre
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
Bonjour,
j'ai le projet suivant:
soit une matrice carre d'organisation 3X3, ecrire les sous programmes suivantes.
Saisie: Permettant de saisir les element de la matrice.
Afficher: Fournissant une vue matricielle de la matrice a l'ecran.
Somme: Effectue la somme des element situe sur la diagonal principale
Maximum: Affichant le maximum de chaque ligne de la matrice
j'ai taper le programme suivant mais il bug et je voudrais savoir ou se situe ce bug.
voici le programme
#include <stdio.h>
#include <stdlib.h>
#define nl 3
#define nc 3
void saisi(int mat[nl][nc])
{
int i,j;
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
{
printf("Entrer l\'element en indice %d et %d \n",i,j);
scanf("%d",&mat[i][j]);
}
}
}
void affiche(int mat[nl][nc])
{
int i,j;
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
{
printf(" %d",mat[i][j]);
}
printf("\n");
}
}
int somme(int mat[nl][nc])
{
int i,j,s=0;
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
{
if(i==j)
s=+mat[i][j];
}
}
return s;
}
void maximum(int mat[nl][nc],int *max)
{
int i,j;
for(i=0;i<nl;i++)
{
max=mat[i][0];
for(j=0;j<nc;j++)
{
if(mat[i][j]>max)
max=mat[i][j];
}
printf("le maximum sur la ligne %d est %d",i,max);
}
}
int main()
{
int mat[nl][nc];
int i,j,s,*max;
puts("Saisi des donnee");
saisi(mat[nl][nc]);
puts("Affichage de la matrice");
affiche(mat[nl][nc]);
s=somme(mat[nl][nc]);
printf("Somme des elements de la diagonal principal est %d\n",s);
puts("Le maximum de chaque ligne");
maximum(mat[nl][nc],&max);
return 0;
}
merci d'avance !
j'ai le projet suivant:
soit une matrice carre d'organisation 3X3, ecrire les sous programmes suivantes.
Saisie: Permettant de saisir les element de la matrice.
Afficher: Fournissant une vue matricielle de la matrice a l'ecran.
Somme: Effectue la somme des element situe sur la diagonal principale
Maximum: Affichant le maximum de chaque ligne de la matrice
j'ai taper le programme suivant mais il bug et je voudrais savoir ou se situe ce bug.
voici le programme
#include <stdio.h>
#include <stdlib.h>
#define nl 3
#define nc 3
void saisi(int mat[nl][nc])
{
int i,j;
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
{
printf("Entrer l\'element en indice %d et %d \n",i,j);
scanf("%d",&mat[i][j]);
}
}
}
void affiche(int mat[nl][nc])
{
int i,j;
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
{
printf(" %d",mat[i][j]);
}
printf("\n");
}
}
int somme(int mat[nl][nc])
{
int i,j,s=0;
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
{
if(i==j)
s=+mat[i][j];
}
}
return s;
}
void maximum(int mat[nl][nc],int *max)
{
int i,j;
for(i=0;i<nl;i++)
{
max=mat[i][0];
for(j=0;j<nc;j++)
{
if(mat[i][j]>max)
max=mat[i][j];
}
printf("le maximum sur la ligne %d est %d",i,max);
}
}
int main()
{
int mat[nl][nc];
int i,j,s,*max;
puts("Saisi des donnee");
saisi(mat[nl][nc]);
puts("Affichage de la matrice");
affiche(mat[nl][nc]);
s=somme(mat[nl][nc]);
printf("Somme des elements de la diagonal principal est %d\n",s);
puts("Le maximum de chaque ligne");
maximum(mat[nl][nc],&max);
return 0;
}
merci d'avance !
A voir également:
- Programme en C
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Programme word gratuit - Guide
- Message programmé iphone - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
3 réponses
salut,
essyes avec ce pgm:
cordialement
essyes avec ce pgm:
#include <stdio.h>
#include <stdlib.h>
#define nl 3
#define nc 3
void saisi(int mat[nl][nc])
{
int i,j;
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
{
printf("Entrer l\'element en indice %d et %d \n",i,j);
scanf("%d",&mat[i][j]);
}
}
}
void affiche(int mat[nl][nc])
{
int i,j;
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
{
printf(" %d",mat[i][j]);
}
printf("\n");
}
}
int somme(int mat[nl][nc])
{
int i,j,s=0;
for(i=0;i<nl;i++)
{
s=s+mat[i][i];
}
return s;
}
void maximum(int mat[nl][nc],int max)
{
int i,j;
for(i=0;i<nl;i++)
{
max=mat[i][0];
for(j=0;j<nc;j++)
{
if(mat[i][j]>max)
max=mat[i][j];
}
printf("le maximum sur la ligne %d est %d\n",i,max);
}
}
int main()
{
int i,j,s,max;
int mat[nl][nc];
puts("Saisi des donnee");
saisi(mat);
puts("Affichage de la matrice");
affiche(mat);
printf("Somme des elements de la diagonal principal est %d\n",somme(mat));
puts("Le maximum de chaque ligne");
maximum(mat,max);
return 0;
}
cordialement
Salut,
T'as plusieurs erreurs. Lorsque tu envoies un tableau, il ne faut pas envoyer la dimension (puisque c'est un pointeur que tu envoies).
Et tu as fait s=+tab[i][j] au lieu de s+=tab[i][j].
Je t'ai également simplifié la méthode somme. Tu n'as pas besoin de parcourir tout le tableau pour faire les sommes de la diagonale.
Cdlt
T'as plusieurs erreurs. Lorsque tu envoies un tableau, il ne faut pas envoyer la dimension (puisque c'est un pointeur que tu envoies).
Et tu as fait s=+tab[i][j] au lieu de s+=tab[i][j].
Je t'ai également simplifié la méthode somme. Tu n'as pas besoin de parcourir tout le tableau pour faire les sommes de la diagonale.
#include <stdio.h>
#define nl 3
#define nc 3
void saisi(int mat[nl][nc])
{
int i,j;
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
{
printf("Entrer l\'element en indice %d et %d \n",i,j);
scanf("%d",&mat[i][j]);
}
}
}
void affiche(int mat[nl][nc])
{
int i,j;
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
{
printf("%d ",mat[i][j]);
}
putchar('\n');
}
}
int somme(int mat[nl][nc])
{
int i,s=0;
for(i=0;i<(nl<nc?nl:nc);i++)
s+=mat[i][i];
return s;
}
void maximum(int mat[nl][nc],int *max)
{
int i,j;
for(i=0;i<nl;i++)
{
*max=mat[i][0];
for(j=0;j<nc;j++)
{
if(mat[i][j]>*max)
*max=mat[i][j];
}
printf("le maximum sur la ligne %d est %d\n",i,*max);
}
}
int main(void)
{
int mat[nl][nc];
int s,max;
puts("Saisi des donnee");
saisi(mat);
puts("Affichage de la matrice");
affiche(mat);
s=somme(mat);
printf("Somme des elements de la diagonal principal est %d\n",s);
puts("Le maximum de chaque ligne");
maximum(mat,&max);
return 0;
}
Cdlt
on peut ne pas passer le parametre max par valeur puisque l'affichage est dans la procedure elle même .n'est ce pas?
Oui. Il faut passer l'adresse pour pouvoir modifier la variable max se situant dans la fonction appelante (ici main).
Soit par : int *max; maximum(mat,max); soit par int max; maximum(mat,&max);
Oui. Il faut passer l'adresse pour pouvoir modifier la variable max se situant dans la fonction appelante (ici main).
Soit par : int *max; maximum(mat,max); soit par int max; maximum(mat,&max);