A voir également:
- Langage C, pointeur en parametre
- Langage ascii - Guide
- Netflix paramètre compte - Guide
- Remettre parametre usine pc - Guide
- Changer parametre dns - Guide
- Parametre windows - Guide
7 réponses
Le problème c'est que tu ne nous dis pas comment est déclaré 'horaire'.
D'autre part:
#define NBHORAIRES 10
const horaire Horaires[nbHoraires]={ ...
pose problème, ce doit être: 'const horaire Horaires[NBHORAIRES]'.
A suivre.
D'autre part:
#define NBHORAIRES 10
const horaire Horaires[nbHoraires]={ ...
pose problème, ce doit être: 'const horaire Horaires[NBHORAIRES]'.
A suivre.
merci pour ta réponse. La déclaration de la taille du tableau en minuscule n'est pas le probleme (je l'ai juste mal tapé sur le forum).
horaire est une structure definie de la maniere suivante:
typedef struct{
int8 heures;
int8 minutes;
} horaire;
Merci de m'éclairer
horaire est une structure definie de la maniere suivante:
typedef struct{
int8 heures;
int8 minutes;
} horaire;
Merci de m'éclairer
Après avoir déclaré:
const horaire Horaires[NBHORAIRES] =
et lancé la fonction:
horaire prochainHoraire = nextHoraire (heure_reelle, Horaires, NBHORAIRES);
il est nécessaire de déclarer ainsi la fonction:
horaire nextHoraire (horaire hr, const horaire h[] , int nbHoraires)
et de modifier la ligne:
while ( (hr.heures > h[i].heures) && (i< nbHoraires) )
ainsi que les suivantes.
AInsi, la compilation ne devrait être qu'un long fleuve tranquille.
Bonne continuation.
const horaire Horaires[NBHORAIRES] =
et lancé la fonction:
horaire prochainHoraire = nextHoraire (heure_reelle, Horaires, NBHORAIRES);
il est nécessaire de déclarer ainsi la fonction:
horaire nextHoraire (horaire hr, const horaire h[] , int nbHoraires)
et de modifier la ligne:
while ( (hr.heures > h[i].heures) && (i< nbHoraires) )
ainsi que les suivantes.
AInsi, la compilation ne devrait être qu'un long fleuve tranquille.
Bonne continuation.
Merci, j'avais déjà essayé en ecrivant ma foonction de la maniere suivante:
horaire nextHoraire(horaire hr, const horaire h [] )
{
int nbHor;
nbHor = sizeof(h);
int i=0;
while ((hr.heures > h[i].heures) && (i<nbHor ) )
i++;
if(i== sizeof(h) )
return *h[0];
while(( hr.minutes > h[i].minutes) && i< nbHor )
if (h[i].heures > hr.heures)
return *h[i];
else
i++;
if( (i== nbHor) || ( (hr.heures >= h[nbHor-1].heures) && ( hr.minutes >= h[nbHor-1].minutes) ) )
return h[0];
else
return h[i];
}
mais cette fois ci la compilateur m'indique l'erreur suivante (toujours sur la ligne de la déclaration):
*** Error 32 "ex_rfid_projet.c" Line 142(47,54): Expecting a , or )
NB: j'appelle la fonction de la maniere suivante:
prochainHoraire=nextHoraire(heure_reelle,Horaire);
Merci
horaire nextHoraire(horaire hr, const horaire h [] )
{
int nbHor;
nbHor = sizeof(h);
int i=0;
while ((hr.heures > h[i].heures) && (i<nbHor ) )
i++;
if(i== sizeof(h) )
return *h[0];
while(( hr.minutes > h[i].minutes) && i< nbHor )
if (h[i].heures > hr.heures)
return *h[i];
else
i++;
if( (i== nbHor) || ( (hr.heures >= h[nbHor-1].heures) && ( hr.minutes >= h[nbHor-1].minutes) ) )
return h[0];
else
return h[i];
}
mais cette fois ci la compilateur m'indique l'erreur suivante (toujours sur la ligne de la déclaration):
*** Error 32 "ex_rfid_projet.c" Line 142(47,54): Expecting a , or )
NB: j'appelle la fonction de la maniere suivante:
prochainHoraire=nextHoraire(heure_reelle,Horaire);
Merci
Cette écriture n'a aucun sens:
horaire nextHoraire(horaire hr, const horaire h [] )
{
int nbHor;
nbHor = sizeof(h);
Il est impossible de déterminer la taille du tableau !
Il est nécessaire de passer la taille; une alternative est de marquer la fin du tableau par une séquence particulière (par exemple: {25,0} qui est un horaire absurde) que l'on pourra tester.
Il ne faut pas écrire:
return *h[0];
mais
return h[0];
horaire nextHoraire(horaire hr, const horaire h [] )
{
int nbHor;
nbHor = sizeof(h);
Il est impossible de déterminer la taille du tableau !
Il est nécessaire de passer la taille; une alternative est de marquer la fin du tableau par une séquence particulière (par exemple: {25,0} qui est un horaire absurde) que l'on pourra tester.
Il ne faut pas écrire:
return *h[0];
mais
return h[0];
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ok, j'ai remis la taille du tableau en parametre.
Mais il me ressort toujours la même erreur qui semble venir du const devant horaire h[].
(NB: l'erreur est *** Error 32 "ex_rfid_projet.c" Line 142(47,54): Expecting a , or ). )
j'enlève le const pour voir ce que le compilateur me dit... et il m'indique une nouvelle erreur quand j'appelle la fonction:
prochainHoraire=nextHoraire(heure_reelle , Horaire,NBHORAIRES);
=> *** Error 54 "ex_rfid_projet.c" Line 270(44,51): Expecting a variable
voilà la fonction :
horaire nextHoraire(horaire hr,const horaire h[],int nbHor )
{
int i=0;
while ((hr.heures > h[i].heures) && (i<nbHor ) )
i++;
if(i== sizeof(h) )
return h[0];
while(( hr.minutes > h[i].minutes) && i< nbHor )
if (h[i].heures > hr.heures)
return *h[i];
else
i++;
if( (i== nbHor) || ( (hr.heures >= h[nbHor-1].heures) && ( hr.minutes >= h[nbHor-1].minutes) ) )
return h[0];
else
return h[i];
}
Mais il me ressort toujours la même erreur qui semble venir du const devant horaire h[].
(NB: l'erreur est *** Error 32 "ex_rfid_projet.c" Line 142(47,54): Expecting a , or ). )
j'enlève le const pour voir ce que le compilateur me dit... et il m'indique une nouvelle erreur quand j'appelle la fonction:
prochainHoraire=nextHoraire(heure_reelle , Horaire,NBHORAIRES);
=> *** Error 54 "ex_rfid_projet.c" Line 270(44,51): Expecting a variable
voilà la fonction :
horaire nextHoraire(horaire hr,const horaire h[],int nbHor )
{
int i=0;
while ((hr.heures > h[i].heures) && (i<nbHor ) )
i++;
if(i== sizeof(h) )
return h[0];
while(( hr.minutes > h[i].minutes) && i< nbHor )
if (h[i].heures > hr.heures)
return *h[i];
else
i++;
if( (i== nbHor) || ( (hr.heures >= h[nbHor-1].heures) && ( hr.minutes >= h[nbHor-1].minutes) ) )
return h[0];
else
return h[i];
}
Bon, on va pas tourner autour du pot pendant 8 jours; voici un code qui se compile bien:
#include<stdio.h> #define NBHORAIRES 10 typedef struct { int heures; int minutes; } horaire; const horaire Horaires[NBHORAIRES] = { {6, 0},{ 6,30},{ 7, 0},{ 7,30},{ 8,10}, {8,45},{10,15},{12,10},{14,25},{14,45} }; horaire nextHoraire (horaire hr, const horaire h[], int nbHor) { int i = 0; while ((hr.heures > h[i].heures) && (i<nbHor)) i++; if (i == nbHor) return h[0]; while ((hr.minutes > h[i].minutes) && (i< nbHor)) if (h[i].heures > hr.heures) return h[i]; else i++; if ( (i != nbHor) && ((hr.heures < h[nbHor-1].heures) || (hr.minutes < h[nbHor-1].minutes)) ) return h[i]; return h[0]; } int main() { horaire heure_reelle = {18,44}; horaire prochainHoraire = nextHoraire (heure_reelle, Horaires, NBHORAIRES); printf ("Prochain horaire: %d h %d mn\n", prochainHoraire.heures, prochainHoraire.minutes); return (0); }Bonne continuation.
Merci c'est exactement ce que je voulais faire. Malheureusement cele m'affiche toujours les mêmes erreurs sous l'envirronement avec lequel je tavail (MPLAB, c'est pour telecharger sur un microcontroleur PIC).
Mais votre solution marche parfaitement.
Merci beaucoup du temps que tu y a consacré
Mais votre solution marche parfaitement.
Merci beaucoup du temps que tu y a consacré