Tableau de fonctions en C
Résolu/Fermé
UNIX/VI/SHELL
Messages postés
87
Date d'inscription
mercredi 12 juillet 2006
Statut
Membre
Dernière intervention
8 avril 2009
-
22 déc. 2008 à 16:36
UNIX/VI/SHELL Messages postés 87 Date d'inscription mercredi 12 juillet 2006 Statut Membre Dernière intervention 8 avril 2009 - 22 déc. 2008 à 20:47
UNIX/VI/SHELL Messages postés 87 Date d'inscription mercredi 12 juillet 2006 Statut Membre Dernière intervention 8 avril 2009 - 22 déc. 2008 à 20:47
Bonjour,
Je voudrais réaliser un programme; Dans ce programme il faudrait appeler des fonctions en fonction d'une autre variable, en utilisant un tableau de fonctions.
Comment feriez-vous ? Avec un peu de code.
Je voudrais réaliser un programme; Dans ce programme il faudrait appeler des fonctions en fonction d'une autre variable, en utilisant un tableau de fonctions.
Comment feriez-vous ? Avec un peu de code.
A voir également:
- Tableau de fonctions en C
- Tableau word - Guide
- Tableau ascii - Guide
- Tableau croisé dynamique - Guide
- Trier tableau excel - Guide
- Imprimer tableau excel sur une page - Guide
2 réponses
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
5 février 2025
1 526
22 déc. 2008 à 16:45
22 déc. 2008 à 16:45
Salut,
Exemple, on a deux nombres (3 et 5), si l'utilisateur rentre +, on fait l'addition, s'il rentre *, on fait la multiplication:
Exemple, on a deux nombres (3 et 5), si l'utilisateur rentre +, on fait l'addition, s'il rentre *, on fait la multiplication:
#include <stdio.h> typedef int (*op)(int, int); // Type pointeur vers fonction qui prend deux entiers en paramètres et retourne un entier int addition(int a, int b) { return a + b; } int multiplication(int a, int b) { return a * b; } //Tableau de pointeur de fonctions avec nos deux fonctions: op tab_op[] = { addition, multiplication }; int main() { int a = 3, b = 5; char c = getchar(); switch (c) { case '+': printf("%d\n", tab_op[0](a, b)); break; case '*': printf("%d\n", tab_op[1](a, b)); break; default: printf("%c toi même!\n", c); break; } return 0; }
UNIX/VI/SHELL
Messages postés
87
Date d'inscription
mercredi 12 juillet 2006
Statut
Membre
Dernière intervention
8 avril 2009
7
22 déc. 2008 à 16:57
22 déc. 2008 à 16:57
En fait ton programme et code est impecc. Merci !
UNIX/VI/SHELL
Messages postés
87
Date d'inscription
mercredi 12 juillet 2006
Statut
Membre
Dernière intervention
8 avril 2009
7
22 déc. 2008 à 17:02
22 déc. 2008 à 17:02
En fait non. Si je veut appeler une fonction (quelque soit la contenance), comment faire ?
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
5 février 2025
1 526
>
UNIX/VI/SHELL
Messages postés
87
Date d'inscription
mercredi 12 juillet 2006
Statut
Membre
Dernière intervention
8 avril 2009
22 déc. 2008 à 17:03
22 déc. 2008 à 17:03
Comment ça?
UNIX/VI/SHELL
Messages postés
87
Date d'inscription
mercredi 12 juillet 2006
Statut
Membre
Dernière intervention
8 avril 2009
7
>
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
5 février 2025
22 déc. 2008 à 17:21
22 déc. 2008 à 17:21
Si je veut qu'une fonction qui ne contienne que du texte s'affiche, je fais comment, puisque dans ton code, le programme n'affiche que des valeurs numériques.
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
5 février 2025
1 526
>
UNIX/VI/SHELL
Messages postés
87
Date d'inscription
mercredi 12 juillet 2006
Statut
Membre
Dernière intervention
8 avril 2009
22 déc. 2008 à 17:58
22 déc. 2008 à 17:58
En ce tu retournes un char:
(char *)(*op)(void);
UNIX/VI/SHELL
Messages postés
87
Date d'inscription
mercredi 12 juillet 2006
Statut
Membre
Dernière intervention
8 avril 2009
7
>
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
5 février 2025
22 déc. 2008 à 18:32
22 déc. 2008 à 18:32
Ca marche pas avec typedef. je comprend pas.
22 déc. 2008 à 16:47
22 déc. 2008 à 16:49
22 déc. 2008 à 16:50