Se connecter avec
S'enregistrer | Connectez-vous

Demande d'aide pour un programme sur dev c++

Dernière réponse : dans Programmation

Bonjour j'ai un problème avec un projet qui ne fonctionne pas, il a pour but de créer un menu qui ensuite permet de rentrer un polynome puis diverses actions mais il y a des erreurs et je ne les trouve pas pouvez vous m'aidez s'il vous plait .merci d'avance.
main.cpp
#include <cstdlib>
#include <iostream>
#include <math.h>
#include "fichiers.h"

using namespace std;

int menu()
{
cout<<"Saisissez votre choix de 1 a 6"<<endl;
cout<<"Entrez les trois coefficients a, b et c: TAPER 1"<<endl;
cout<<"Afficher les trois coefficients a,b et c du trinome: TAPER 2"<<endl;
cout<<"Evaluez le trinome pour une valeur donnee: TAPER 3"<<endl;
cout<<"Evaluer la derivee au premier ordre pour une valeur donnee: TAPER 4"<<endl;
cout<<"Evaluer la derivee au second ordre pour une valeur donnee: TAPER 5"<<endl;
cout<<"Resoudre le trinome: 6"<<endl;
int x;
cin>>x;
return x;
}

int main(float a,float b,float c)
{
int xmenu=menu();//fait appel au menu
switch (xmenu)
{
case '1':
cout<<"Entrez les trois coefficient a,b et c du trinôme:"<<endl;
cin>>a>>b>>c;
break;
case '2':
fonction2();
break;
case '3':
fonction3();
break;
case '4':
fonction4();
break;
case '5':
fonction5();
break;
case '6':
fonction6();
break;
default:
cout<<"Choix non valide choisir un chiffre entre 1 et 6"<<endl;
}
system("PAUSE");
return 0;
}
fonctions.cpp
#include <cstdlib>
#include <iostream>
#include <math.h>

using namespace std;


float fonction2()
{
float a,b,c;
cout <<"Le trinôme est donc : "<<a<<"x²+"<<b<<"x+"<<c<<endl;
}

float fonction3()
{
float result,val,a,b,c;
cout<<"Entrez une valeur pour x";
cin>>val;
result= (a*val*val+b*val+c);
cout<<"Le résultat pour x="<<val<<" est:"<<endl;
cout<<result;
}

float fonction4()//dérivée au 1er ordre
{
float val,result,a,b;
cout<<"Entrez une valeur de x"<<endl;
cin>>val;
result=2*a*val+b;
cout<<"Le résultat de la dérivée au premier ordre pour x="<<val<<" est"<<endl;
cout<<result;
}

float fonction5()//dérivée au second ordre
{
float a;
cout<<"Le résultat de la dérivée au second ordre est"<<(2*a)<<endl;
}

float fonction6()//résolution du trinôme
{
float delta,b,a,c;
delta=b*b-4*a*c;
if(delta==0)
{
cout <<"La solution est:"<<((-b)/(2*a))<<endl;
}
if(delta >0)
{
cout<<"Les solutions sont "<<((-b+ sqrt(delta))/(2*a))<<"et"<<((-b- sqrt(delta))/(2*a))<<endl;
}
if(delta <0)
{
delta=-delta;
cout<<"Les solutions sont "<<(-b)/(2*a)<<"+i*"<<sqrt(delta)/(2*a)<<"et "<<(-b)/(2*a)<<"-i*"<<sqrt(delta)/(2*a)<<endl;
}
}
fichiers.h
float fonction1();
float fonction2();
float fonction3();
float fonction4();
float fonction5();
float fonction6();


je suis débutant donc les erreurs doivent certainement être grossiére à vos yeux désolé.

Autres pages sur : demande aide programme dev

Lassé par la pub ? Créez un compte

alors, tu vas me faire le plaisir d'editer ton message et de mettre ton code entre les balises [code] comme déjà demandé.
ensuite, tu vas nous dire ce qui ne va pas parce que "ya des bugs", ca au s'en serait douté ! ...

voici le code:
main.cpp
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <math.h>
  4. #include "fichiers.h"
  5.  
  6. using namespace std;
  7.  
  8. int menu()
  9. {
  10. cout<<"Saisissez votre choix de 1 a 6"<<endl;
  11. cout<<"Entrez les trois coefficients a, b et c: TAPER 1"<<endl;
  12. cout<<"Afficher les trois coefficients a,b et c du trinome: TAPER 2"<<endl;
  13. cout<<"Evaluez le trinome pour une valeur donnee: TAPER 3"<<endl;
  14. cout<<"Evaluer la derivee au premier ordre pour une valeur donnee: TAPER 4"<<endl;
  15. cout<<"Evaluer la derivee au second ordre pour une valeur donnee: TAPER 5"<<endl;
  16. cout<<"Resoudre le trinome: 6"<<endl;
  17. int x;
  18. cin>>x;
  19. return x;
  20. }
  21.  
  22. int main(float a,float b,float c)
  23. {
  24. int xmenu=menu();//fait appel au menu
  25. switch (xmenu)
  26. {
  27. case 1:
  28. cout<<"Entrez les trois coefficient a,b et c du trinôme:"<<endl;
  29. cin>>a>>b>>c;
  30. break;
  31. case 2:
  32. fonction2();
  33. break;
  34. case 3:
  35. fonction3();
  36. break;
  37. case 4:
  38. fonction4();
  39. break;
  40. case 5:
  41. fonction5();
  42. break;
  43. case 6:
  44. fonction6();
  45. break;
  46. default:
  47. cout<<"Choix non valide choisir un chiffre entre 1 et 6"<<endl;
  48. }
  49. system("PAUSE");
  50. return 0;
  51. }

fonctions.cpp
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <math.h>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. float fonction2()
  9. {
  10. float a,b,c;
  11. cout <<"Le trinome est donc : "<<a<<"x²+"<<b<<"x+"<<c<<endl;
  12. }
  13.  
  14. float fonction3()
  15. {
  16. float result,val,a,b,c;
  17. cout<<"Entrez une valeur pour x";
  18. cin>>val;
  19. result= (a*val*val+b*val+c);
  20. cout<<"Le résultat pour x="<<val<<" est:"<<endl;
  21. cout<<result;
  22. }
  23.  
  24. float fonction4()//dérivée au 1er ordre
  25. {
  26. float val,result,a,b;
  27. cout<<"Entrez une valeur de x"<<endl;
  28. cin>>val;
  29. result=2*a*val+b;
  30. cout<<"Le resultat de la derivee au premier ordre pour x="<<val<<" est"<<endl;
  31. cout<<result;
  32. }
  33.  
  34. float fonction5()//dérivée au second ordre
  35. {
  36. float a;
  37. cout<<"Le resultat de la derivee au second ordre est"<<(2*a)<<endl;
  38. }
  39.  
  40. float fonction6()//résolution du trinôme
  41. {
  42. float delta,b,a,c;
  43. delta=b*b-4*a*c;
  44. if(delta==0)
  45. {
  46. cout <<"La solution est:"<<((-b)/(2*a))<<endl;
  47. }
  48. if(delta >0)
  49. {
  50. cout<<"Les solutions sont "<<((-b+ sqrt(delta))/(2*a))<<"et"<<((-b- sqrt(delta))/(2*a))<<endl;
  51. }
  52. if(delta <0)
  53. {
  54. delta=-delta;
  55. cout<<"Les solutions sont "<<(-b)/(2*a)<<"+i*"<<sqrt(delta)/(2*a)<<"et "<<(-b)/(2*a)<<"-i*"<<sqrt(delta)/(2*a)<<endl;
  56. }
  57. }

fichiers.h
  1. float fonction1();
  2. float fonction2();
  3. float fonction3();
  4. float fonction4();
  5. float fonction5();
  6. float fonction6();


alors ce projet ce veut fragmenter en trois fichiers. Le problème que j'ai maintenant c'est tout d'abord que mon programme se compile et s'execute, le menu s'affiche mais quand je rentre une valeur qui est comprise entre 1 et 6 , il me renvoi automatiquement au défaut à savoir la phrase "Choix non valide choisir un chiffre entre 1 et 6" et je n'arrives pas à trouver se qui cloche. Encore désolé pour n'avoir pas mis les bornes dés le depart.

c bon j'ai réglé mon probléme et en fait ça n'avais pas avoir avec d variables locale KangOl , j'avais mal utilisé le protocole switch case
Mais apparement ma compétence de corection c'est achevé là , car maintenant je peux rentré lé coefficients du trinôme mais une fois ceci effectué, le programme ce termine comment faire pour que je puisse retouner au menu du début avec les valeurs a,b et c précédement entrée, s'il vous plait.
Expert Programmation

nulle part dans ton menu il est possible de quitter ...

pour faire ce que tu veux, il faut mettre le code que tu veux répeter (pour qu'il réaffiche le menu et qu'il fasse les traitements) dans une boucle do while, la condition sera ''l'utilisateur n'a pas demandé de quitter''

A oui je n'y avais pas penser, merci bien Batchy. Mais sachant que je veux montrer tout d'abord le menu avec les 6 choix, puis on doit taper 1 pour entrer les coeffcients a,b et c de: ax²+bx+c. Puis je voudrais revenir au menu avec les valeurs de a, b et c que je viens de rentrer. Afin d'effectuer l'une des autres actions.
Ou devrais-je mettre le do{...}while() , et dans while quel variable je dois mettre inférieur à 7 étant donné que avant j'ai des cases et que mon x n'est qu'une variable locale de menu() donc elle ne fonctionne pas dans main (enfin je crois :)  ).
Merci
Expert Programmation

nexo59 a dit :
pour a valant zéro, le programme est sur orbite
ça dépend ... :p 

Yllaruis : avec ton code on peut déjà avoir tes coefs depuis main() par contre il faudrai virer ces variables des arguments de main et les mettres en tant que variable locale à main)

pour pouvoir les passer a tes fonctions il suffit juste de les faire passer en argument ...

il faut mettre ton do{}while() dans ton main(), elle doit tester la valeur de xmenu (vu que c'est bien elle que l'on utilise dans main)

Désolé Batchy je vais être aussi lourd que incompétent apparement :pt1cable:  .
Mais tes instruction je dois avouer que j'ai compris leurs intérêt mais je ne sais pas exactement comment les appliquer. Par exemple quand tu dis:
Citation :
par contre il faudrai virer ces variables des arguments de main et les mettres en tant que variable locale à main)

en les rentrant dans main avant mon int xmenu il en veux pas la. et le do while si je le met comme en bas il en veut pas aussi :??:  . Merci pour ton aide passé et merci d'avance. Et aussi merci de ta compréhension envers un débutant pas trés doué :) 
  1. int main()
  2. {
  3. float a=0,b=0,c=0;
  4. int xmenu;
  5. do
  6. {
  7. xmenu=menu();//fait appel au menu
  8. switch (xmenu)
  9. {
  10. case 1:
  11. cout<<"Entrez les trois coefficient a,b et c du trinome:"<<endl;
  12. cin>>a>>b>>c;
  13. break;
  14. case 2:
  15. fonction2();
  16. break;
  17. case 3:
  18. fonction3();
  19. break;
  20. case 4:
  21. fonction4();
  22. break;
  23. case 5:
  24. fonction5();
  25. break;
  26. case 6:
  27. fonction6();
  28. break;
  29. default:
  30. cout<<"Choix non valide choisir un chiffre entre 1 et 6"<<endl;
  31. }
  32. system("PAUSE");
  33. }while (xmenu<7);
  34. return 0;
  35. }
Expert Programmation

0559501741 a dit :
Désolé Batchy je vais être aussi lourd que incompétent apparement :pt1cable:  .
Mais tes instruction je dois avouer que j'ai compris leurs intérêt mais je ne sais pas exactement comment les appliquer. Par exemple quand tu dis:
Citation :
par contre il faudrai virer ces variables des arguments de main et les mettres en tant que variable locale à main)

en les rentrant dans main avant mon int xmenu il en veux pas la. et le do while si je le met comme en bas il en veut pas aussi :??:  . Merci pour ton aide passé et merci d'avance. Et aussi merci de ta compréhension envers un débutant pas trés doué :) 
lorsque je disait ça je parlait des coeffiscients a,b et c, dans ton code ils sont dans les arguments de main, or d'une part main est une fonction spéciale qui attend des arguments précis, de l'autre a,b et c sont utilisés comme des variables locales
donc en gros exit le
  1. int main(float a,float b,float c)
et on le remplace par
  1. int main()
, et on déclare les variables locales float a,b,c; dedans, et faut penser à les initialiser
  1. int main()
  2. {
  3. float a=0,b=0,c=0;
  4. do // ça c'est bien placé
  5. {
  6. int xmenu=menu();//fait appel au menu
  7. switch (xmenu)
  8. {
  9. case 1:
  10. cout<<"Entrez les trois coefficient a,b et c du trinôme:"<<endl;
  11. cin>>a>>b>>c;
  12. break;
  13. case 2:
  14. fonction2();
  15. break;
  16. case 3:
  17. fonction3();
  18. break;
  19. case 4:
  20. fonction4();
  21. break;
  22. case 5:
  23. fonction5();
  24. break;
  25. case 6:
  26. fonction6();
  27. break;
  28. default:
  29. cout<<"Choix non valide choisir un chiffre entre 1 et 6"<<endl;
  30. }
  31. system("PAUSE");
  32. return 0; // cette ligne fait sortir de la fonction main, donc de ton appli, à t'elle sa place ici ? (1)
  33. } // ici tu ferme l'accolade d'un do{} mais tu ne met pas de while (2)
  34. }while (xmenu<7); // ici tu ferme l'accolade de la fonction main et tu met un while() (3)
les lignes (1),(2) et (3) ne sont dans le désordre, saura tu les remettre dans le bon ? (aller courage il n'y a qu'une réponse bonne sur les 5 possibilitées ...

:lol:  Merci bien Batchy, j'ai reussi a résoudre l'énigme regarde j'ai modifier le dernier message ke j'avais avec le code de main :) 
Cependant parce que mon programme est gorgé de faute, il subsiste un problème, le menu reviens mais si je fais le choix 2 qui doit me montrer le trinôme: ax²+bX+c avec les a,b,et c que je suis sencé avoir rentré tout de suite et bien il me donne des valeur immense qui ne sont pas celle entré donc je vois pas le pb :whistle:  comme d'habitude .
Car les valeurs de a b et c étant dans main devrais être prise en compte dans fonction.cpp et donc dans fonction2 et les autres , non?

Ps : si tu avais des sites bien pour le C++ type type dev c++.merci . désolé je t'en demande vraiment beaucoup.
Expert Programmation

Citation :
Ps : si tu avais des sites bien pour le C++ type type dev c++.merci . désolé je t'en demande vraiment beaucoup.
pour apprendre le C++, rien de mieux qu'un bon livre, il existe surement des bon sites mais je ne les connait pas ...

sinon pour ton problème : a,b,c sont à la fois des variables locales dans ta fonction main, et de tes fonctions fonction2-6

pour ''passer'' des nombresà des fonctions, il faut utiliser les arguments :
en gros un exemple :
[code]void afficher(float a); // prototype

void afficher(float a) { // corps de la fonction
cout << "on m\'a passe :"<<a<<" en argument"<<endl;
}

int main() {
float a=0; // la variable peut avoir ou non le même nom, ça ne change rien, les deux sont dans deux mondes parallèles :p 
cin >> a;
afficher(a);

return 0;
}
Lassé par la pub ? Créez un compte