Probleme pointeur ;( aidez moi

Résolu/Fermé
rimounatn Messages postés 93 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 7 septembre 2010 - 29 déc. 2009 à 01:16
rimounatn Messages postés 93 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 7 septembre 2010 - 29 déc. 2009 à 12:17
Bonjour,
g un probleme c'est qu'il m'affiche des adresses ;(, le probleme ds la fonction tick
voici mon code:
#include <stdlib.h>
#include <stdio.h>

int afficher_heure(int iH, int iM, int iS)
{

printf("il est %d , %d , %d", iH, iM, iS);
}

int saisir_heure(){
int iH;
int iM;
int iS;
printf("enter l'heure");
scanf ("%d",&iH);
printf("enter le minute");
scanf ("%d",&iM);
printf("enter l'e seconde");
scanf ("%d",&iS);

}

int tick(int *iH, int *iM, int* iS){

*iS=*iS+1;

if(*iS>59){
*iM=*iM+1;
}
if(*iM>59){
*iH=*iH+1;
}
if(*iH==24){
*iH=0;
}
}

int main(){

int iHeure;
int iMinute;
int iSeconde;

saisir_heure();
tick(&iHeure,&iMinute,&iSeconde);
afficher_heure(iHeure,iMinute,iSeconde);
}

aidez moi svp ;((

5 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
29 déc. 2009 à 12:00
Normal, si tu ne tiens en compte que la moitié de mon post...
Je te remets en italique la partie que tu n'as pas prise en compte :
En fait, cela n'affiche pas les adresses mais des valeurs bidons puisque tes variables iHeure, iMinute et iSeconde de ta fonction main ne sont initialisées à aucun moment. Ta fonction saisir_heure ne prend pas en arguments les variables, elle en utilise d'autres et les oublie. Il faut donc faire passer en arguments les adresses de iHeure, iMinute et iSeconde pour pouvoir les modifier par pointeur comme tu as fait dans ta fonction tick.
En gros, ta fonction saisir_heure doit avoir en argument saisir_heure(int *iH,int *iM, int *iS) comme pour la fonction tick. Et tu l'appelles de la même façon que l'appel à tick.
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
29 déc. 2009 à 01:27
Salut,
En fait, cela n'affiche pas les adresses mais des valeurs bidons puisque tes variables iHeure, iMinute et iSeconde de ta fonction main ne sont initialisées à aucun moment. Ta fonction saisir_heure ne prend pas en arguments les variables, elle en utilise d'autres et les oublie. Il faut donc faire passer en arguments les adresses de iHeure, iMinute et iSeconde pour pouvoir les modifier par pointeur comme tu as fait dans ta fonction tick.
Par ailleurs, l'algorithmique de ta fonction tick est à revoir. Tu dois utiliser les diviseurs et les modulo.
Et enfin, une fonction de type int doit posséder au moins un return. Sinon elle doit être de type void.
Dans ton cas, passe plutôt toutes les fonctions en void sauf pour le main. Et pour le main, utilise return 0; avant l'accolade final.

Cdlt,
0
rimounatn Messages postés 93 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 7 septembre 2010 15
29 déc. 2009 à 11:57
Merci bcp fiddy ,mais j'ai encore le mm probleme j'ai changer le type de retour de ma fonction tick en void et com j'ai passé par adresse mes variableiHaure,iMinute .., et j'ai mis return 0; à la fin de ma fonction main (), mais c'est encore le mm probleme,
enfaite le probleme est dans le passage des paramettres pour la fonction tick ;(
voici mon code:
#include <stdlib.h>
#include <stdio.h>

int afficher_heure(int *iH, int *iM, int *iS)
{

printf("il est %d , %d , %d", *iH,* iM,* iS);
}
int saisir_heure(){
int iH;
int iM;
int iS;
printf("enter l'heure");
scanf ("%d",&iH);
printf("enter le minute");
scanf ("%d",&iM);
printf("enter l'e seconde");
scanf ("%d",&iS);

}
void tick(int *iH, int *iM, int* iS)
{

*iS=*iS+1;

if(*iS>59){
*iM=*iM+1;
}
if(*iM>59){
*iH=*iH+1;
}
if(*iH==24){
*iH=0;
}
}

int main(){

int iHeure;
int iMinute;
int iSeconde;

saisir_heure();
tick(&iHeure,&iMinute,&iSeconde);
afficher_heure(&iHeure&,iMinute,&iSeconde);
return 0;
}
0
rimounatn Messages postés 93 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 7 septembre 2010 15
29 déc. 2009 à 12:17
Merci bcp ca march mnt :)
voici mon code:
#include <stdlib.h>
#include <stdio.h>

int afficher_heure(int *iH, int *iM, int* iS)
{

printf("il est %d , %d , %d", *iH,* iM, *iS);
}

int saisir_heure(int *iH, int *iM, int* iS)
{

printf("enter l'heure");
scanf ("%d",iH);
printf("enter le minute");
scanf ("%d",iM);
printf("enter l'e seconde");
scanf ("%d",iS);

}

int tick(int *iH, int *iM, int* iS){

*iS=*iS+1;

if(*iS>59){
*iM=*iM+1;
}
if(*iM>59){
*iH=*iH+1;
}
if(*iH==24){
*iH=0;
}
}

int main(){

int iHeure;
int iMinute;
int iSeconde;

saisir_heure(&iHeure,&iMinute,&iSeconde);
tick(&iHeure,&iMinute,&iSeconde);
afficher_heure((&iHeure,&iMinute,&iSeconde);
}
merci encore une fois :)))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rimounatn Messages postés 93 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 7 septembre 2010 15
29 déc. 2009 à 12:17
Merci bcp ca march mnt :)
voici mon code:
#include <stdlib.h>
#include <stdio.h>

int afficher_heure(int *iH, int *iM, int* iS)
{

printf("il est %d , %d , %d", *iH,* iM, *iS);
}

int saisir_heure(int *iH, int *iM, int* iS)
{

printf("enter l'heure");
scanf ("%d",iH);
printf("enter le minute");
scanf ("%d",iM);
printf("enter l'e seconde");
scanf ("%d",iS);

}

int tick(int *iH, int *iM, int* iS){

*iS=*iS+1;

if(*iS>59){
*iM=*iM+1;
}
if(*iM>59){
*iH=*iH+1;
}
if(*iH==24){
*iH=0;
}
}

int main(){

int iHeure;
int iMinute;
int iSeconde;

saisir_heure(&iHeure,&iMinute,&iSeconde);
tick(&iHeure,&iMinute,&iSeconde);
afficher_heure((&iHeure,&iMinute,&iSeconde);
}
merci encore une fois :)))
0