Problème fonction
Résolu/Fermé
A voir également:
- Problème fonction
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction trier excel - Guide
- Fonction couleur excel - Guide
14 réponses
Annhydrium
Messages postés
1768
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
3 mars 2011
257
31 juil. 2009 à 02:49
31 juil. 2009 à 02:49
a quel moment fai tu une fonction ... il me semble qu'un fontion s'écrit
funtion tonnom{
ta fonction
}
funtion tonnom{
ta fonction
}
DrNitro
Messages postés
681
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
5 janvier 2015
99
31 juil. 2009 à 03:40
31 juil. 2009 à 03:40
en fait tu apple 2 fois la meme foncion
if(menu() == 1) //affiche le 1er menu
(...) //et le prog s'arret ici
//si non
else if(menu() == 2) //affiche 2eme menu et attend une reponse
tu devrait utiliser un ' case switch ' ou d'introduire une variable
x=menu();//affiche un seul menu pour tout le prog
if(x== 1)
(...)
else if(x== 2)
(...)
if(menu() == 1) //affiche le 1er menu
(...) //et le prog s'arret ici
//si non
else if(menu() == 2) //affiche 2eme menu et attend une reponse
tu devrait utiliser un ' case switch ' ou d'introduire une variable
x=menu();//affiche un seul menu pour tout le prog
if(x== 1)
(...)
else if(x== 2)
(...)
désoler j'ai pas trop compris ton explication voici comment je vois les chose
tout d'abord il y a la fonction menu() de type int elle prend aucun paramettre en entrer puis après dans la fonction on lui demande d'afficher le menu et on demande de faire un choix d'ou ce choix va être stocké dans la variable choix ce choix va etre retrouné en sortie puis après il y a la fonction main avec des confition la condition dit que si menu() == 1 alors affiche Vous avez choisi big-mac sinon si menu() est égale a 2 affiche Vous avez choisi poisson sinon si aucun des 2 choix est choisi affiche le message d'erreure Désolez vous avez tapez une mauvaise commande puis le programme s'arrete donc je ne vois pas ou est le problème dans ce code
Je croit que c'est a partir d'ici dans ton explication que je n'ai pas compris:
//si non
else if(menu() == 2) //affiche 2eme menu et attend une reponse
tu devrait utiliser un ' case switch ' ou d'introduire une variable
x=menu();//affiche un seul menu pour tout le prog
pourquoi affiche un 2eme menu et attend un reponse ??
#include <stdlib.h> #include <math.h> #include <time.h> int menu() { int choix = 0; printf("===MENU===\n"); printf("1. big-mac\n"); printf("2. poisson\n"); scanf("%d", &choix); return choix; } int main() { if(menu() == 1) { printf("Vous avez choisi big-mac\n"); } else if(menu() == 2) { printf("Vous avez choisi poisson\n"); } else { printf("Désolez vous avez tapez une mauvaise commande\n"); } return 0; }
tout d'abord il y a la fonction menu() de type int elle prend aucun paramettre en entrer puis après dans la fonction on lui demande d'afficher le menu et on demande de faire un choix d'ou ce choix va être stocké dans la variable choix ce choix va etre retrouné en sortie puis après il y a la fonction main avec des confition la condition dit que si menu() == 1 alors affiche Vous avez choisi big-mac sinon si menu() est égale a 2 affiche Vous avez choisi poisson sinon si aucun des 2 choix est choisi affiche le message d'erreure Désolez vous avez tapez une mauvaise commande puis le programme s'arrete donc je ne vois pas ou est le problème dans ce code
Je croit que c'est a partir d'ici dans ton explication que je n'ai pas compris:
//si non
else if(menu() == 2) //affiche 2eme menu et attend une reponse
tu devrait utiliser un ' case switch ' ou d'introduire une variable
x=menu();//affiche un seul menu pour tout le prog
pourquoi affiche un 2eme menu et attend un reponse ??
jjsteing
Messages postés
1669
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
31 juil. 2009 à 18:27
31 juil. 2009 à 18:27
Bonsoir, voici ton code corrigé :
int main()
{
Choix=menu()
if( Choix== 1)
{
printf("Vous avez choisi big-mac\n");
}
else{
if(Choix == 2)
{
printf("Vous avez choisi poisson\n");
}
else
{
printf("Désolez vous avez tapez une mauvaise commande\n");
}
}
return 0;
}
Mais le mieux est de passer par un select case :
int main()
{
Choix=menu()
select case Choix:
Case 1:
{
printf("Vous avez choisi big-mac\n");
break;
}
Case 2:
{
printf("Vous avez choisi poisson\n");
break;
}
Case else:
{
printf("Désolez vous avez tapez une mauvaise commande\n");
}
return 0;
}
:)
int main()
{
Choix=menu()
if( Choix== 1)
{
printf("Vous avez choisi big-mac\n");
}
else{
if(Choix == 2)
{
printf("Vous avez choisi poisson\n");
}
else
{
printf("Désolez vous avez tapez une mauvaise commande\n");
}
}
return 0;
}
Mais le mieux est de passer par un select case :
int main()
{
Choix=menu()
select case Choix:
Case 1:
{
printf("Vous avez choisi big-mac\n");
break;
}
Case 2:
{
printf("Vous avez choisi poisson\n");
break;
}
Case else:
{
printf("Désolez vous avez tapez une mauvaise commande\n");
}
return 0;
}
:)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ah ben oui ton code marche parfaitement mais pourrait tu m'expliquer pourquoi avoir stocker menu() dans la varibale choix. pourquoi ne pas directement mettre menu() dans la condition comme j'ai fait ??
voici un code que j'ai pris dan sle site du zero :
tu vois dans switch il a directement ajouter menu() a la place de le mettre dans une variable choix
voici un code que j'ai pris dan sle site du zero :
switch (menu()) { case 1: printf("Vous avez pris le poulet\n"); break; case 2: printf("Vous avez pris les concombres\n"); break; case 3: printf("Vous avez pris l'escalope\n"); break; case 4: printf("Vous avez pris la surprise du Chef. Vous etes un sacre aventurier dites donc !\n"); break; }
tu vois dans switch il a directement ajouter menu() a la place de le mettre dans une variable choix
jjsteing
Messages postés
1669
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
31 juil. 2009 à 18:59
31 juil. 2009 à 18:59
:)
Ah oui, c'est pas select case mais switch.. desolé, mais a force de pratiquer plusieurs langages, j en pert mon latin ;)
Bon, pourque passer par une variable Choix.. ben pour éviter de raffaichir le menu d une part (ca c'etait ta requete, sinon, pour chaque if il te l affiche ;) ).. et en regle générale, si tu veux utiliser plusieurs fois le meme résultat d une fonction, il vaut mieux stocker ce résultat que de rappeler la fonction.. c'est plus rapide ;).. bon ok, c'est quelques nanoseconde pour ton ptit code.. mais ca peut etre tres long suivant ce que la dite fonction doit traitée ;)
Ah oui, c'est pas select case mais switch.. desolé, mais a force de pratiquer plusieurs langages, j en pert mon latin ;)
Bon, pourque passer par une variable Choix.. ben pour éviter de raffaichir le menu d une part (ca c'etait ta requete, sinon, pour chaque if il te l affiche ;) ).. et en regle générale, si tu veux utiliser plusieurs fois le meme résultat d une fonction, il vaut mieux stocker ce résultat que de rappeler la fonction.. c'est plus rapide ;).. bon ok, c'est quelques nanoseconde pour ton ptit code.. mais ca peut etre tres long suivant ce que la dite fonction doit traitée ;)
jjsteing
Messages postés
1669
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
31 juil. 2009 à 20:58
31 juil. 2009 à 20:58
int main()
{
if(menu() == 1) => là il te l'affiche.. si l utilisateur choisi 2 ou autre.. il passe
{
printf("Vous avez choisi big-mac\n");
}
else if(menu() == 2) =>là il te l'affiche.. si l utilisateur choisi autre.. il passe
{
printf("Vous avez choisi poisson\n");
}
else
{
printf("Désolez vous avez tapez une mauvaise commande\n");
}
return 0;
}
{
if(menu() == 1) => là il te l'affiche.. si l utilisateur choisi 2 ou autre.. il passe
{
printf("Vous avez choisi big-mac\n");
}
else if(menu() == 2) =>là il te l'affiche.. si l utilisateur choisi autre.. il passe
{
printf("Vous avez choisi poisson\n");
}
else
{
printf("Désolez vous avez tapez une mauvaise commande\n");
}
return 0;
}
int main() { if(menu() == 1) => là il te l'affiche.. si l utilisateur choisi 2 ou autre.. il passe { printf("Vous avez choisi big-mac\n"); } else if(menu() == 2) =>là il te l'affiche.. si l utilisateur choisi autre.. il passe { printf("Vous avez choisi poisson\n"); } else { printf("Désolez vous avez tapez une mauvaise commande\n"); } return 0; }
j'ai pas trop compris l'ordinateur quand il lit le programme il va lire les condition qui sont dans la fonction main et dans les condition je fait apelle a la fonction menu() il va lire la fonction menu() puis il va afficher les printf donc en gros il commence a afficher le menu puis si la valeur de la variable choix est 1 il affiche Vous avez choisi big-mac mais si la valeur de choix n'est pas 1 mais 2 il va afficher le printf qui dans la condition else if ou sinon si la valeur n'est pas 1 ni 2 il va afficher le printf ou il affiche le message d'erreure donc pourquoi il affiche le menu 2 fois
est comme tu dit si je choisi 1 il me l'affiche et le programme s'arrete mais si je choisi 2 il me l'affiche 1 fois le menu et la commande et le programme s'arrete
jjsteing
Messages postés
1669
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
31 juil. 2009 à 22:52
31 juil. 2009 à 22:52
Car tu reteste menu() si c'est pas 1.. et donc il te raffiche le menu.. c'est logique pourtant !!
ah ok je vient de comprendre lol il reteste le menu() car si c'est pas 1 l'ordinateur va lire la suite de la condition c'est a dire le else if et comme dans le else if je fait appelle a la fonction menu() il va la retester ?? est ce exacte ??
jjsteing
Messages postés
1669
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
31 juil. 2009 à 23:35
31 juil. 2009 à 23:35
Et oui ;)
D'où l interet de l apelé au début et de mettre le résultat dans une variable.. pour apres n avoir a tester que la variable ;)
Probleme résolu donc ?
D'où l interet de l apelé au début et de mettre le résultat dans une variable.. pour apres n avoir a tester que la variable ;)
Probleme résolu donc ?