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

  • Auteur de la discussion Yllarius
  • Date de début

Yllarius

Nouveau membre
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é.
 

boub popsyteam

Grand Maître
Anubis_: tu donnes des réponses tres inutiles sur tout ce que j'ai pu lire ...

Yllarius: tu dois rajouter les balises
Code:
 et [/ CODE] (sans espace) autour de ton code justement. (utiles l'icone [img]http://img.presence-pc.com/forum/themes_static/images_forum/1/edit.gif[/img] pour ce faire)
 

Anubis_

Expert
si tu cherches bien, il y a quelques réponses utiles perdues au milieu des moins utiles.

Veuillez agréer l'expression de mes sentiments les plus distingués
 

KangOl

Grand Maître
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é ! ...
 

Yllarius

Nouveau membre
voici le code:
main.cpp
Code:
#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
Code:
#include <cstdlib>
#include <iostream>
#include <math.h>
 
using namespace std;
 
 
float fonction2()
{
      float a,b,c;
      cout <<"Le trinome 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 resultat de la derivee au premier ordre pour x="<<val<<"  est"<<endl;
      cout<<result;
      }
       
float fonction5()//dérivée au second ordre
{
      float a;
      cout<<"Le resultat de la derivee 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
Code:
float fonction1();
float fonction2();
float fonction3();
float fonction4();
float fonction5();
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.
 

KangOl

Grand Maître
apprend les différents types de variables et la portée de celle-ci ...
 

Yllarius

Nouveau membre
Parce que a vrai dire je vois que je demande dans menu() un chiffre que je met dans x, mais le problème viens du fait qu'il est par réutilisé dans xmenu mais je vois pas comment.
 

Yllarius

Nouveau membre
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.
 

batchy

Grand Maître
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''
 

Yllarius

Nouveau membre
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
 

batchy

Grand Maître
ç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)
 

Yllarius

Nouveau membre
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:
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é :)
Code:
int main()
{   
           float a=0,b=0,c=0;
           int xmenu;
           do
           {
           xmenu=menu();//fait appel au menu
           switch (xmenu)
    {
           case 1:
                cout<<"Entrez les trois coefficient a,b et c du trinome:"<<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");
                   }while (xmenu<7);
                   return 0;
                   }
 

batchy

Grand Maître
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
Code:
int main(float a,float b,float c)
et on le remplace par
Code:
int main()
, et on déclare les variables locales float a,b,c; dedans, et faut penser à les initialiser
Code:
int main()
 {
float a=0,b=0,c=0;
     do // ça c'est bien placé
 {
     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; // cette ligne fait sortir de la fonction main, donc de ton appli, à t'elle sa place ici ? (1)
 } // ici tu ferme l'accolade d'un do{} mais tu ne met pas de while (2)
}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 ...
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 126
Messages
6 717 807
Membres
1 586 365
Dernier membre
matiOs1
Partager cette page
Haut