CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C]appel de fonction

-MasterLink-
-MasterLink-
Niveau 6
18 novembre 2007 à 20:48:51

Salut

Après m´etre débarassé du problème des lignes ( :p) ) je reviens avec une nouvelle question. Enfin c´est plus par curiosité que par besoin.
Donc en fait ma question est : est-il possible d´appeler une fonction selon la valeure d´une variable sans passer par des if.
Par exemple si
bool map=0; , on apelle map0();
si map=1;,on apelle map1().
Donc apeler une fonction selon la valeure d´une variable, sans faire un
if (map=0) map0();
if (map=1)map1();

donc dans ce cas, la question serait s´il est possible de rajouter la valeure de map deriere l´appel map() (map0() ou map1())

Voila j´espere avoir réussi a expliquer correctement (pas évident :p) )

Merci d´avance

guyver2
guyver2
Niveau 10
18 novembre 2007 à 21:20:37

tu peux te servir de l´operateur ´?´
comme ceci :

map?map0():map1();

guyver2
guyver2
Niveau 10
18 novembre 2007 à 21:23:53

oups j´ai inversé l´ordre de tes fonctions dans mon precedent post:

c´est :
map?map1():map0();

map1 est appelé si la condition avant le ´?´ est vraie (ici c´est juste la valeur de map) sinon c´est map0() qui est appelée

saleGauss
saleGauss
Niveau 9
18 novembre 2007 à 23:19:10

oui mais non, d´après ce que j´ai compris lui il veut un truc qui fasse, dans un pseudo code inexistant :

int a; // Une valeur
fontiona() // J´appelle la fonction qui correspond : fonction1(), ou fonction2()... suivant la valeur de a.

Ceci n´est pas possible : le nom d´un appel de fonction doit etre connu lors de la compilation.
Le mieu à ce moment là, je pense, meme si il y a 20.000 manières de gérer le truc, c´est de faire :

fontion(int a)
{
// Si a = 0
{
//code
}
Si a =1
{
//code
}
//... autres valeurs
}

Donc c´est une fonction qui ressoit en paramètre un int et qui execute le morceau de code qui va bien en fonction de la valeur qu´a recu ta fonction.
On dit que le CORPS de ta fonction dépend de ton paramètre.

Ainsi, dans tes appels de fonction, tu n´as plus à te prendre la tete de savoir quelle fonction tu dois appeller.
Tu écris une fois ta fonction avec tes IF et après basta, quand tu l´appelle, tu passe ta valeur et BAM c´est elle qui fera le boulot.

Donc mon idée c´est de déplacer tes tests conditionnels ds ta fonction, pour les ecrire une seule fois.

Voilou !
Je pense que ca doit repondre à ton pb, enfin j´espere.

Lapintade
Lapintade
Niveau 30
18 novembre 2007 à 23:45:07

"la question serait s´il est possible de rajouter la valeure de map deriere l´appel map()"

Non

Un nom de fonction n´est pas parametrable.

dnob700
dnob700
Niveau 10
19 novembre 2007 à 00:27:58

Il y a quand même la méthode qui consiste à passer par un tableau de fonctions. Exactement comme un tableau de nombres, mais il y a des fonctions dans le tableau et tu choisis donc la fonction à appeler à l´aide d´un paramètre entier.
Ça m´a l´air d´être à peu près ce que tu veux.

Un exemple là :
http://repository.sectionpc.info/C/fct_table.c

guyver2
guyver2
Niveau 10
19 novembre 2007 à 12:59:42

oups il semblerais que j´ai lu trop vite son message et effectivement loupé une phrase clé.

Lapintade
Lapintade
Niveau 30
19 novembre 2007 à 13:50:43

dnob700 > Oui il y a ca.
Mais pour un debutant, vaut mieux ecrire trois if.

guyver2
guyver2
Niveau 10
19 novembre 2007 à 17:54:01

et un switch ?
c´est pas mal les switch dans ce cas là, ça reste clair, c´est facile d´en ajouter/enlever un...

switch(map){
case 0: map0(); break;
case 1: map1(); break;
case 2: map2(); break;
....
default : break;
}

dnob700
dnob700
Niveau 10
19 novembre 2007 à 20:28:12

Lapintade : tu as tout à fait raison, mais je voulais quand même que les tableaux de fonctions soient mentionnés sur le sujet, ne serait-ce que pour un usage futur, car c´est quand la solution exacte au problème.

Mais c´est vrai que j´aurais du penser à préciser que c´est un peu complexe.

-MasterLink-
-MasterLink-
Niveau 6
19 novembre 2007 à 20:48:18

J´avais précisé que c´était par curiosité et non par besoin, donc une solution qui me dépasse me convenait aussi :-d

En tout cas la methode du tableau de fonctions me parait assez compréhensible quand meme, donc c´est bon a savoir en tout cas :p)

Merci a tous

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment