[fonction en langageC]
Fermé
lehbib
Messages postés
4
Date d'inscription
jeudi 29 juin 2006
Statut
Membre
Dernière intervention
30 juin 2006
-
30 juin 2006 à 00:49
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 30 juin 2006 à 17:21
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 30 juin 2006 à 17:21
A voir également:
- [fonction en langageC]
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Excel renvoyer la valeur d'une cellule en fonction d'une autre - Forum Logiciels
- Comment colorer une cellule excel en fonction du contenu d'une autre cellule ✓ - Forum Excel
3 réponses
Slt,
Pour que ton petit code marche, il faut déja savoir que pour faire passer des valeurs à une fonction donnée, on a deux facons :
la premiére, c'est de faire un passage par valeur, c'est a dire que tu va passer à la fonction, que les valeurs dont elle aura besoin
alors, que le deuxiéme choix, c'est de lui passer les adresses de ces valeurs que la fonction veut exploiter par la suite.
voici un petit code, pour illustrer les deux méthodes
/* Passage par valeurs */
#include<stdio.h>
#include<conio.h>
/* Fonction qui calcule le carré d'un entier */
int car_val(int x) /* On a déclaré un entier qui va contenir la valeur qu'on veut calculer */
{return (x*x);} /* On retourne le résultat */
main()
{int y;
clrscr();
printf("Donner une valeur \n");
scanf("%d",&y);
printf("La carré de %d, est : \n",y,car_val(y)); /* On affiche directement le resultat en affectant à la fct la velur qu'on veut calculer */
getch();
return 0;}
/* Passage par adresse */
#include<stdio.h>
#include<conio.h>
/* Fonction qui calcule le carré d'un entier */
int car_adr(int *x) /* On déclare un pointeur sur un entier, qui va contenir l'adresse de la valeur qu'on veut calculer */
{return ((*x)*(*x));} /* On retourne le résultat */
main()
{int y;
clrscr();
printf("Donner une valeur \n");
scanf("%d",&y);
printf("La carré de %d, est : \n",y,car_adr(&y)); /* On affiche directement, en affectant à la fct l'adresse de la valeur qu'on veut calculer */
getch();
return 0;}
enjoy it man, ++
Pour que ton petit code marche, il faut déja savoir que pour faire passer des valeurs à une fonction donnée, on a deux facons :
la premiére, c'est de faire un passage par valeur, c'est a dire que tu va passer à la fonction, que les valeurs dont elle aura besoin
alors, que le deuxiéme choix, c'est de lui passer les adresses de ces valeurs que la fonction veut exploiter par la suite.
voici un petit code, pour illustrer les deux méthodes
/* Passage par valeurs */
#include<stdio.h>
#include<conio.h>
/* Fonction qui calcule le carré d'un entier */
int car_val(int x) /* On a déclaré un entier qui va contenir la valeur qu'on veut calculer */
{return (x*x);} /* On retourne le résultat */
main()
{int y;
clrscr();
printf("Donner une valeur \n");
scanf("%d",&y);
printf("La carré de %d, est : \n",y,car_val(y)); /* On affiche directement le resultat en affectant à la fct la velur qu'on veut calculer */
getch();
return 0;}
/* Passage par adresse */
#include<stdio.h>
#include<conio.h>
/* Fonction qui calcule le carré d'un entier */
int car_adr(int *x) /* On déclare un pointeur sur un entier, qui va contenir l'adresse de la valeur qu'on veut calculer */
{return ((*x)*(*x));} /* On retourne le résultat */
main()
{int y;
clrscr();
printf("Donner une valeur \n");
scanf("%d",&y);
printf("La carré de %d, est : \n",y,car_adr(&y)); /* On affiche directement, en affectant à la fct l'adresse de la valeur qu'on veut calculer */
getch();
return 0;}
enjoy it man, ++
lehbib
Messages postés
4
Date d'inscription
jeudi 29 juin 2006
Statut
Membre
Dernière intervention
30 juin 2006
1
30 juin 2006 à 16:16
30 juin 2006 à 16:16
Slt,
Meci pour ...mais ma fonction est un peu différente.voici mon code et a vous de le tester.
----------------------------------------------------------------
#include<stdio.h>
struct temps{
int heures;
int minutes;
int secondes;
};
struct temps t1,t2;
void entree(struct temps x);
main()
{
entree(t1);
entree(t2);
void entree(struct temps x)
{
printf("\nEntrez le temps separé par des espaces: ");
scanf("%d%d%d",&x.heures,&x.minutes,&x.secondes);
}
}
----------------------------------------------------------------------------
si vous consultez les valeus saisis,vous trouverez comme pour les heures,les minutes,et les secondes, la meme valeur 0.
Meci pour ...mais ma fonction est un peu différente.voici mon code et a vous de le tester.
----------------------------------------------------------------
#include<stdio.h>
struct temps{
int heures;
int minutes;
int secondes;
};
struct temps t1,t2;
void entree(struct temps x);
main()
{
entree(t1);
entree(t2);
void entree(struct temps x)
{
printf("\nEntrez le temps separé par des espaces: ");
scanf("%d%d%d",&x.heures,&x.minutes,&x.secondes);
}
}
----------------------------------------------------------------------------
si vous consultez les valeus saisis,vous trouverez comme pour les heures,les minutes,et les secondes, la meme valeur 0.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
30 juin 2006 à 17:21
30 juin 2006 à 17:21
Salut.
Tu n'a pas intégrer, ou compris le message. Tu fait un passage par valeur, il est donc normal que tu ne modifie pas t1 et t2 !
il faut modifier ta fonction entrée. Deux solution :
·recommander : void entree(temps*)
et pour l'apperl : entree(&t1);
·peu recommander, voire déconseiller : void entree(temps& x)
que tu apel : entree(t1)
Les deux fonctionne mais la deuxième a quelques réserve car il n'est pas explicite que ta variable puisse être modifié.
Pour finir, à ta place, je ferai un constructeur dans ta struct :
struct temps{
// tes variable
temps temps(){printf...//reste de la fonctione entree
}
ou une méthode.
comme ça, tu fait dans le main : t1.entree() et tu n'a pas de souci de passage de variable !
Tu n'a pas intégrer, ou compris le message. Tu fait un passage par valeur, il est donc normal que tu ne modifie pas t1 et t2 !
il faut modifier ta fonction entrée. Deux solution :
·recommander : void entree(temps*)
et pour l'apperl : entree(&t1);
·peu recommander, voire déconseiller : void entree(temps& x)
que tu apel : entree(t1)
Les deux fonctionne mais la deuxième a quelques réserve car il n'est pas explicite que ta variable puisse être modifié.
Pour finir, à ta place, je ferai un constructeur dans ta struct :
struct temps{
// tes variable
temps temps(){printf...//reste de la fonctione entree
}
ou une méthode.
comme ça, tu fait dans le main : t1.entree() et tu n'a pas de souci de passage de variable !