Prob fonction d'affichage en C
Résolu
kent
-
kent -
kent -
Bonjour,
J'ai un soucis ac ma fonction d'affichage es ce que qque peu me dire le soucis?
}
J'ai un soucis ac ma fonction d'affichage es ce que qque peu me dire le soucis?
#include<stdio.h> #include<windows.h> #define max 50 void encodage(int *,int); void affichage(int*,int); void tri(int*,int); void main() { int Date[max][3],ndate; do { printf("Saisir le nombre de dates a saisir:"); fflush(stdin); scanf("%d",&ndate); }while(ndate<=0 || ndate>max); //Fonction encodage encodage(&Date[0][0],ndate); affichage(&Date[0][0],ndate); } /********************************************************** /* */ /* input: ndate: nombre d'élément dans le tableau */ /* pt: Adresse du tableau */ /* */ /* process:lit les dates et les places dans le tableau */ /* dont l'adresse est donnée */ /* */ /* output:/ */ /**********************************************************/ void encodage (int *Date,int ndate) { int mois,jours,annee,i; do{ i=0; do { printf("Encoder le jour de la %d date:",i+1); fflush(stdin); scanf("%d",&jours); *Date=jours; printf("Encoder le mois de la %d date:",i+1); fflush(stdin); scanf("%d",&mois); *(Date+1)=mois; printf("Encoder le annee de la %d date:",i+1); fflush(stdin); scanf("%d",&annee); *(Date+2)=annee; i++; Date++; system("cls"); } while(i<ndate); }while(ndate<=0 || ndate>max); } /********************************************************** /* */ /* input: ndate: nombre d'élément dans le tableau */ /* pt: Adresse du tableau */ /* */ /* process:Affiche les dates encodées */ /* */ /* output:/ */ /**********************************************************/ void affichage (int *Date,int ndate) { int i=0; printf("Les Dates sont donc:\n"); printf("_____________________\n\n"); do { printf("%d / %d / %d \n\n",*Date,*(Date+1),*(Date+2)); Date=Date+3; i++; }while(i<ndate) ;
}
A voir également:
- Prob fonction d'affichage en C
- Fonction si et - Guide
- Affichage double ecran - Guide
- Windows 11 affichage classique - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
3 réponses
Il me semble que tu modifies les valeurs de tes dates localement à ta fonction encodage, du coup tu perds tes valeurs en sortant de la fonction.
edit : c'est bien ça
edit : c'est bien ça
Tout est dans le type du premier argument de ta fonction encodage.
Je n'ai jamais fait comme tu l'as fait donc je ne sais pas vraiment trop te dire ce que ça fait très exactement, mais en tout cas l'erreur vient bien de là.
Je l'aurais fait comme ça :
Je ne supporte pas les while() quand une for() suffit mais ça ne change rien ça.
Je n'ai jamais fait comme tu l'as fait donc je ne sais pas vraiment trop te dire ce que ça fait très exactement, mais en tout cas l'erreur vient bien de là.
Je l'aurais fait comme ça :
#include<stdio.h> #include<windows.h> #define MAX 50 void encodage (int Date[MAX][3], int ndate); void affichage (int Date[MAX][3], int ndate); int main() { int Date[MAX][3],ndate; do { printf("Saisir le nombre de dates a saisir:"); fflush(stdin); scanf("%d",&ndate); }while(ndate<=0 || ndate>MAX); //Fonction encodage encodage(Date,ndate); affichage(Date,ndate); return 0; } /********************************************************** /* */ /* input: ndate: nombre d'élément dans le tableau */ /* pt: Adresse du tableau */ /* */ /* process:lit les dates et les places dans le tableau */ /* dont l'adresse est donnée */ /* */ /* output:/ */ /**********************************************************/ void encodage (int Date[MAX][3], int ndate) { int mois, jours, annee, i; for(i = 0 ; i < ndate ; i++) { printf("Encoder le jour de la %de%ce date:", i+1, (i == 0) ? 'r' : 'm'); fflush(stdin); scanf("%d", &jours); Date[i][0] = jours; printf("Encoder le jour de la %de%ce date:", i+1, (i == 0) ? 'r' : 'm'); fflush(stdin); scanf("%d", &mois); Date[i][1] = mois; printf("Encoder le jour de la %de%ce date:", i+1, (i == 0) ? 'r' : 'm'); fflush(stdin); scanf("%d", &annee); Date[i][2] = annee; } } /********************************************************** /* */ /* input: ndate: nombre d'élément dans le tableau */ /* pt: Adresse du tableau */ /* */ /* process:Affiche les dates encodées */ /* */ /* output:/ */ /**********************************************************/ void affichage (int Date[MAX][3], int ndate) { int i; printf("Les Dates sont donc:\n"); printf("_____________________\n\n"); for(i = 0 ; i < ndate ; i++) { printf("%d / %d / %d \n\n", Date[i][0], Date[i][1], Date[i][2]); } }
Je ne supporte pas les while() quand une for() suffit mais ça ne change rien ça.