Programme en C
Résolu
adama36
Messages postés
12
Statut
Membre
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
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 !
Configuration: Windows Vista Safari 525.19
A voir également:
- Programme en C
- Programme demarrage windows - Guide
- Message programmé - Guide
- Programme word gratuit - Guide
- Télécharger le programme de pmu - Télécharger - Médias et Actualité
- Mettre en veille un 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);