Programme en C
Résolu/Fermé
adama36
Messages postés
12
Date d'inscription
vendredi 23 novembre 2007
Statut
Membre
Dernière intervention
20 octobre 2011
-
6 janv. 2009 à 21:35
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 6 janv. 2009 à 22:46
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 6 janv. 2009 à 22:46
A voir également:
- Programme en C
- Programme demarrage windows 10 - Guide
- Désinstaller programme windows 10 - Guide
- Mettre en veille un programme - Guide
- Forcer la fermeture d'un programme - 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
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
6 janv. 2009 à 22:12
6 janv. 2009 à 22:12
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
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
>
amie_ccm
6 janv. 2009 à 22:26
6 janv. 2009 à 22:26
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);
amie_ccm
>
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
6 janv. 2009 à 22:38
6 janv. 2009 à 22:38
t'as raison ;
mais ce que je veux dire c qu'on a pas besoin de la valeur de max modifiée dans la procedure appellée dans ce programme en précise
cdlt
mais ce que je veux dire c qu'on a pas besoin de la valeur de max modifiée dans la procedure appellée dans ce programme en précise
cdlt
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
>
amie_ccm
6 janv. 2009 à 22:46
6 janv. 2009 à 22:46
Ah, je comprends ta question.
En fait, j'ai gardé l'utilisation du pointeur qu'il avait utilisé.
Mais, t'as tout à fait raison, on aurait pu tout simplement faire :
void max(int tab[][nl) ;) comme dans ta version.
En fait, j'ai gardé l'utilisation du pointeur qu'il avait utilisé.
Mais, t'as tout à fait raison, on aurait pu tout simplement faire :
void max(int tab[][nl) ;) comme dans ta version.
adama36
Messages postés
12
Date d'inscription
vendredi 23 novembre 2007
Statut
Membre
Dernière intervention
20 octobre 2011
6 janv. 2009 à 22:17
6 janv. 2009 à 22:17
merci vous etes tres gentil ;-)