[Langage C]
Résolu/Fermé
jamsss
-
5 sept. 2009 à 11:32
tatou_38 Messages postés 1928 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 5 août 2015 - 6 sept. 2009 à 16:39
tatou_38 Messages postés 1928 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 5 août 2015 - 6 sept. 2009 à 16:39
A voir également:
- [Langage C]
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage pascal - Télécharger - Édition & Programmation
- Débuter langage batch windows - Guide
8 réponses
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
50
5 sept. 2009 à 11:41
5 sept. 2009 à 11:41
Bonjour,
as tu pensé à caster tes prototypes de fonction :
void sortie(t.heure,t.minute,t.seconde)
{
printf("%i h %i mn %i sec",t.heure,t.minute,t.seconde);
}
?
as tu pensé à caster tes prototypes de fonction :
void sortie(t.heure,t.minute,t.seconde)
{
printf("%i h %i mn %i sec",t.heure,t.minute,t.seconde);
}
?
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
50
5 sept. 2009 à 12:17
5 sept. 2009 à 12:17
En fait c'est ton passage de paramètres dans tes prototypes qui n'est pas correcte. Tu utilises des éléments de structure comme définition de paramètres et là gcc yen a pas vouloir comprendre ce que sait.
Essaye ceci :
entree(heure,minute,seconde)
{
printf("Entrez un temps : ");
scanf("%i h %i mn %i sec",heure,minute,seconde);
while (heure<0 || heure>23 || minute<0 || minute>59 || seconde<0 || seconde>59)
{
printf("Temps invalide...Veuillez recommencer...");
scanf("%i h %i mn %i sec",heure,minute,seconde);
}
}
Essaye ceci :
entree(heure,minute,seconde)
{
printf("Entrez un temps : ");
scanf("%i h %i mn %i sec",heure,minute,seconde);
while (heure<0 || heure>23 || minute<0 || minute>59 || seconde<0 || seconde>59)
{
printf("Temps invalide...Veuillez recommencer...");
scanf("%i h %i mn %i sec",heure,minute,seconde);
}
}
tatou_38
Messages postés
1928
Date d'inscription
vendredi 21 avril 2006
Statut
Membre
Dernière intervention
5 août 2015
121
5 sept. 2009 à 12:30
5 sept. 2009 à 12:30
entree(t.heure,t.minute,t.seconde) ==> il faut passer tes paramètres par adresse et non par valeur et en passant la structure et non ses membres (le jour où tu auras des structures avec 100 membres tu aprécieras !) . En tous ta syntaxe est incorrecte.
Déclaration de ta structure :
struct {
int heure;
int minute;
int seconde;
} tTemps;
int entree( tTemps *T) {
T->heure = 12;
T->minute = 45;
T->seconde = 36
}
Tu déclare un objet de type tTemps :
tTemps MonTemps;
et tu appèle la fonction par :
rc = entree( &MonTemps )
printf( "MonTemps est : %02d:%02d:%02d\n" , MonTemps.heure , MonTemps.minute , MonTemps.seconde );
Voilà !
PS : je crains que tu doives ignorer les autres réponses qui ont l'air fantaisistes !
Déclaration de ta structure :
struct {
int heure;
int minute;
int seconde;
} tTemps;
int entree( tTemps *T) {
T->heure = 12;
T->minute = 45;
T->seconde = 36
}
Tu déclare un objet de type tTemps :
tTemps MonTemps;
et tu appèle la fonction par :
rc = entree( &MonTemps )
printf( "MonTemps est : %02d:%02d:%02d\n" , MonTemps.heure , MonTemps.minute , MonTemps.seconde );
Voilà !
PS : je crains que tu doives ignorer les autres réponses qui ont l'air fantaisistes !
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
50
5 sept. 2009 à 13:33
5 sept. 2009 à 13:33
oO
amha ce qui peut paraître fantaisiste c'est de donner une ferrari à quelqu'un qui n'as pas encore son permis de conduire ...
Un petit manque d'humilité ???
amha ce qui peut paraître fantaisiste c'est de donner une ferrari à quelqu'un qui n'as pas encore son permis de conduire ...
Un petit manque d'humilité ???
tatou_38
Messages postés
1928
Date d'inscription
vendredi 21 avril 2006
Statut
Membre
Dernière intervention
5 août 2015
121
>
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
6 sept. 2009 à 16:39
6 sept. 2009 à 16:39
Il vaut mieux présenter une ferrari en état de marche qu'une deudeuche pourrave.
Je pense que pour l'internaute qui veux apprendre, autant qu'il voie les bonnes techniques plutôt que de lui faire corriger une structure de programme qui ne tient pas la route.
Enseigner c'est tirer les élèves vers le haut !
Je pense que pour l'internaute qui veux apprendre, autant qu'il voie les bonnes techniques plutôt que de lui faire corriger une structure de programme qui ne tient pas la route.
Enseigner c'est tirer les élèves vers le haut !
Shaboo, ça ne marche pas ta solution, si je fais ce que tu dis les variables heure, minute et seconde ne sont pas déclarés dans mes fonctions entree() et sortie()
Merci tatoo_38 ça fonctionne j'ai fait ça:
#include <stdio.h>
struct temps
{
int heure;
int minute;
int seconde;
};
main()
{
struct temps t;
entree(&t);
sortie(&t);
}
entree(struct temps *t)
{
printf("Entrez un temps : ");
scanf("%i h %i mn %i sec",&(t->heure),&(t->minute),&(t->seconde));
while (t->heure<0 || t->heure>23 || t->minute<0 || t->minute>59 || t->seconde<0 || t->seconde>59)
{
printf("Temps invalide...Veuillez recommencer...");
scanf("%i h %i mn %i sec",t->heure,t->minute,t->seconde);
}
}
sortie(struct temps *t)
{
printf("%i h %i mn %i sec",t->heure,t->minute,t->seconde);
}
Par contre maintenant j'ai une erreur de segmentation, si je rentre 2 temps invalides à la suite, le premier c'est bon , le deuxième non...
Merci tatoo_38 ça fonctionne j'ai fait ça:
#include <stdio.h>
struct temps
{
int heure;
int minute;
int seconde;
};
main()
{
struct temps t;
entree(&t);
sortie(&t);
}
entree(struct temps *t)
{
printf("Entrez un temps : ");
scanf("%i h %i mn %i sec",&(t->heure),&(t->minute),&(t->seconde));
while (t->heure<0 || t->heure>23 || t->minute<0 || t->minute>59 || t->seconde<0 || t->seconde>59)
{
printf("Temps invalide...Veuillez recommencer...");
scanf("%i h %i mn %i sec",t->heure,t->minute,t->seconde);
}
}
sortie(struct temps *t)
{
printf("%i h %i mn %i sec",t->heure,t->minute,t->seconde);
}
Par contre maintenant j'ai une erreur de segmentation, si je rentre 2 temps invalides à la suite, le premier c'est bon , le deuxième non...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
theRedCat
Messages postés
31
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
23 janvier 2010
61
5 sept. 2009 à 15:25
5 sept. 2009 à 15:25
Dans ce cas, regarde bien la différence entre ton premier scanf et le second, qui est dans la boucle... ^^
arffff, oui en effet c'est quelque chose que j'oublie très souvent les "&" j'avoue que j'avais pas trop cherché sur le coup, merci à toi !
theRedCat
Messages postés
31
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
23 janvier 2010
61
5 sept. 2009 à 19:00
5 sept. 2009 à 19:00
Mais de rien, ça me fait plaisir! ^^
PS: met ton sujet en "résolu". ;)
PS: met ton sujet en "résolu". ;)