Une condition dans une condition (C++)
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

Une condition dans une condition (C++)



  1. #1
    Leviss

    Une condition dans une condition (C++)


    ------

    Bonjour à tous,

    Je suis totalement débutant en programmation et lors de notre premier cours d'introduction à la programmation,
    on nous demande de réaliser un programme capable de résoudre une équation du second degré
    Or, en réalisant le code source, je m'aperçois que j'ai énormément de condition pour une équation : aX^2+bX+C

    première condition : si a = 0 et b = 0
    deuxième condition : si a = 0 et b différent de 0
    troisième condition : si a et b différent de 0

    jusque là, je n'ai pas rencontré de problème

    donc si a et b sont différent de 0, nous pouvons donc calculer le delta

    alors, nous retrouvons de nouveau des conditions qui sont donc à l'intérieur de la troisième condition

    delta =0
    delta > 0
    delta < 0

    et donc je ne sais pas comment je peux introduire ces trois condition de delta dans la troisième condition de a et b...

    Voici ce que j'ai tenté de faire :

    Code PHP:
    #include <stdio.h>          // librairie de fonctions utiles dont printf() et scanf()
    #include <math.h>           // librairie de fonctions pour les racines carrée



    int main()                  // le programme principal, celui qui sera execute
    {
        
    // declaration des variables reelles


        
    float a=0;              // terme du second degre
        
    float b=0;              // terme du premier degre
        
    float c=0;              // terme independant
        
    float delta=0;          // delta de l equation du second degre
        
    float solunique=0;      // cas si le delta est nul
        
    float x=0;              // cas si a est nul
        
    float x1=0;             // solution 1 si delta > 0
        
    float x2=0;             // solution 2 si delta > 0
        
    float r=0;              // partie reelle si le delta est negatif
        
    float i=0;              // partie imaginaire si le delta est negatif





        
    printf("Resolution d un polynome du second degre de type : ax^2+bx+c=0 \n\n\n"); // explication du but du programme


        
    printf("le terme du second degre (a): ");        // demande a l utilisateur
        
    scanf("%f", &);                                // saisir sur le clavier par l utilisateur
        
    printf("le terme premier degre (b): ");          // demande a l utilisateur
        
    scanf("%f", &b);                                 // saisir sur le clavier par l utilisateur
        
    printf("le terme independant (c):  ");           // demande a l utilisateur
        
    scanf("%f", &c);                                 // saisir sur le clavier par l utilisateur


        
    printf("\n\nVous cherchez les solutions de l'equation : \n\n");  // récapitulatif de l equation du second degre
        
    printf("%f x^2 + %f x + %f = 0\n\n"abc);  // mise en forme de l équation avec les donnees introduites

        
    if (== && == )           // condition : si  a = b = 0
        
    {
            
    printf("l equation est donc reduite a : \n\n");
            
    printf("%f = 0 \n\n"c);
            
    printf("l egalite est fausse \n");
        }

        if (
    == && != 0)   // condition : si a = 0 et b est different de 0
        
    {
            
    = -b;
            
    printf("l equation est donc reduite a : \n\n");
            
    printf("%f x + %f = 0 \n\n"b);
            
    printf("la solution de l'equation est donc : %f \n\n " x);

        }

        if (
    != && != )  // condition : si a et b sont différent de 0

        
    {

        
    delta = (b*b) - (4*a*c);
            
    printf("le delta de l'equation suivant est : %f "delta);



             if (
    delta >0)  // condition : si le delta est positif, alors nous avons deux solutions dans les réels
                
    {
                    
    printf("nous avons deux solutions : \n\n");
                    
    x1 = (-b+sqrt(delta))/(2*a);
                    
    x2 = (-b-sqrt(delta))/(2*a);
                    
    printf(" x1 : %f \n"x1);
                    
    printf(" x2 : %f \n"x2);
                }

              if (
    delta =0)  // condition : si le delta est nul, alors nous avons une solution dans les réels
                
    {
                    
    printf("nous avons une solution unique : \n\n");
                    
    solunique = (-b)/(2*a);
                    
    printf(" x : %f \n"solunique);

                }

             if (
    delta <0)  // condition : si le delta est negatif, alors nous n'avons pas de solution dans les reels mais nous en avons dans les complexes
                
    {
                    
    printf("Nous avons un delta négatif, \n");
                    
    printf("Cela signifie que nous n'avons donc pas de solution dans les reels \n");
                    
    printf("Nous pouvons cependant calculer la solution dans les complexes \n\n\n");

                    
    r=(-b)/(2*a);
                    
    printf("Partie réelle : %f \n " r);

                    
    i=(sqrt(-delta))/(2*a);
                    
    printf("Partie imaginaire : %f \n"i);

                }


         }


        return 
    0;           // pour respecter la syntaxe de la fonction int main()


    Merci de votre aide


    Cordialement,
    Leviss

    -----

  2. #2
    Jack
    Modérateur

    Re : Une condition dans une condition (C++)

    Je ne comprends pas la question et je ne vois pas ce que tu attends de nous. Tu veux savoir si c'est syntaxiquement possible? Dans ce cas, tu compiles et tu sauras. Si tout se passe bien, tu exécutes et tu verras si ton code était correct.

  3. #3
    Leviss

    Re : Une condition dans une condition (C++)

    Bonsoir et merci de ta réponse,

    Le soucis se trouve au niveau de la condition

    Code PHP:
     if (!= && != )  // condition : si a et b sont différent de 0 
    Lorsque j'écris cela, il faut que j'ajoute trois nouvelles conditions dans celle-ci

    il faut donc que j'ajoute :

    si delta est négatif
    si delta est positif
    si delta est nul

    Or ce que j'ai fais, a savoir :

    Code PHP:
        if (!= && != )  // condition : si a et b sont différent de 0

        
    {

        
    delta = (b*b) - (4*a*c);
            
    printf("le delta de l'equation suivant est : %f "delta);



             if (
    delta >0)  // condition : si le delta est positif, alors nous avons deux solutions dans les réels
                
    {
                    
    printf("nous avons deux solutions : \n\n");
                    
    x1 = (-b+sqrt(delta))/(2*a);
                    
    x2 = (-b-sqrt(delta))/(2*a);
                    
    printf(" x1 : %f \n"x1);
                    
    printf(" x2 : %f \n"x2);
                }

              if (
    delta =0)  // condition : si le delta est nul, alors nous avons une solution dans les réels
                
    {
                    
    printf("nous avons une solution unique : \n\n");
                    
    solunique = (-b)/(2*a);
                    
    printf(" x : %f \n"solunique);

                }

             if (
    delta <0)  // condition : si le delta est negatif, alors nous n'avons pas de solution dans les reels mais nous en avons dans les complexes
                
    {
                    
    printf("Nous avons un delta négatif, \n");
                    
    printf("Cela signifie que nous n'avons donc pas de solution dans les reels \n");
                    
    printf("Nous pouvons cependant calculer la solution dans les complexes \n\n\n");

                    
    r=(-b)/(2*a);
                    
    printf("Partie réelle : %f \n " r);

                    
    i=(sqrt(-delta))/(2*a);
                    
    printf("Partie imaginaire : %f \n"i);

                }


         } 
    Est correcte lorsque je recherche des erreurs mais lorsque que je compile, cela s'arrete seulement a la valeur du delta donc cela ne lit pas les 3 conditions et je me demande comment est ce que je peux faire pour faire rentrer les 3 conditions de delta dans la condition de départ a savoir : a et b différent de 0 afin qu'une fois le delta calculé, le programme passe aux condition de la valeur du delta


    Désolé d'être si brouillon dans mon explication mais je suis en terre inconnue pour le moment
    Merci d'avance

  4. #4
    Leviss

    Re : Une condition dans une condition (C++)

    je viens de trouver l'erreur...

    J'avais pas d'erreur mais juste un avertissement concernant
    Code PHP:
    if (delta =0
    Je l'ai modifier

    Code PHP:
    if (delta ==0
    et à présent, il complile le tout donc mon soucis est réglé.
    Merci à vous et bonne soirée

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : Une condition dans une condition (C++)

    Ok, je n'avais pas compris ton problème. Le principal, c'est que tu aies trouvé. Un bon dénugger peut aider pour trouver ce genre d'erreur.

    PS: tu confonds "compiler" et "exécuter" ton code. La compilation est la phase de traduction du code source en code machine.

  7. #6
    Leviss

    Re : Une condition dans une condition (C++)

    merci de cette remarque


    J'utilise chez moi code::blocks et au cours, visualstudio 13 qui sont, d'après les commentaires, assez bon pour la programmation à mon niveau (débutant de chez débutant).

    lors du cours, le professeur nous avait dit que lorsqu'il y a avait des erreurs après le débug, on devait les rechercher directement mais lorsqu'il y avait des avertissements,
    nous pouvions exécuter le programme

    Je n'ai donc pas chercher plus loin et me suis dit que les avertissements n'affectait pas l'exécution du code

    et donc le problème venait pour moi de la mise en place des conditions (j'ignorais comment l'on pouvait mettre plusieurs condition dans une condition de départ)

    en tout cas, j'ai apris pas mal de chose juste avec ce simple programme

    Ps: j'ai une petite question,
    est il possible de créer un jeu 2D style mario avec code::blocks ?

  8. #7
    Jack
    Modérateur

    Re : Une condition dans une condition (C++)

    lors du cours, le professeur nous avait dit que lorsqu'il y a avait des erreurs après le débug, on devait les rechercher directement mais lorsqu'il y avait des avertissements,
    nous pouvions exécuter le programme
    Décidément, tu as des problèmes de terminologie. Des erreurs sont affichée après la compilation ou l'edition de liens. En principe, il ne faudrait jamais avoir de warning après compilation, mais si on s'amuse à mettre toutes les options de génération de ces warning, difficile d'y échapper.
    En tout cas, ne jamais négliger de lire les warnings.
    est il possible de créer un jeu 2D style mario avec code::blocks ?
    Code::blocks est un IDE, donc un environnement de développement. Comme Visual studio (que je préfère largement à Code::Blocks).
    Il faudra utiliser une librairie 2D telle que la SDL ou SFML en C++

  9. #8
    Chanur

    Re : Une condition dans une condition (C++)

    Citation Envoyé par Leviss Voir le message
    J'utilise chez moi code::blocks et au cours, visualstudio 13 qui sont, d'après les commentaires, assez bon pour la programmation à mon niveau (débutant de chez débutant).
    Tout aussi bons, d'ailleurs, pour une programmation de niveau professionnel, tu sais ...

    Sinon, quand aux warnings, ils signalent une situation où le code est syntaxiquement correct, mais suffisamment bizarre pour être peut-être une erreur. Donc c'est vrai qu'on peut l'exécuter, mais il faut, au minimum, regarder pourquoi le compilateur trouve ça bizarre. Personnellement, je traite les warnings comme des erreurs. Dans le cas ou ce n'est pas une erreur, je le reformule pour que ça ne donne pas de warning.

    Dans ton exemple, "if (delta=0)" est tout-à-fait correct syntaxiquement et en même temps tout-à-fait absurde.
    Si c'était vraiment ce que tu voulais faire, tu aurais pu le récrire :
    delta = 0;
    if (delta == 0) // on voit bien que ce sera toujours faux !
    ...
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  10. #9
    Bluedeep

    Re : Une condition dans une condition (C++)

    Citation Envoyé par Chanur Voir le message
    Si c'était vraiment ce que tu voulais faire, tu aurais pu le récrire :
    delta = 0;
    if (delta == 0) // on voit bien que ce sera toujours faux !
    ...
    Non, toujours vrai.

  11. #10
    iKss

    Re : Une condition dans une condition (C++)

    Bonjours, il y a une petite erreur ici :
    Code:
     if (a == 0 && b == 0 )           // condition : si  a = b = 0 
     { 
            printf("l equation est donc reduite a : \n\n"); 
            printf("%f = 0 \n\n", c); 
            printf("l egalite est fausse \n"); 
     }
    En effet si l'utilisateur rentre 0 pour la valeur de A, de B et de C, le programme afficheras :
    "l equation est donc reduite a :
    0=0
    l egalite est fausse"
    Or elle est juste pour x=0.
    Le code exact serai :
    Code:
    if (a == 0 && b == 0 )           // condition : si  a = b = 0 
     {
        if(c!=0) {
            printf("l equation est donc reduite a : \n\n"); 
            printf("%f = 0 \n\n", c); 
            printf("l egalite est fausse \n"); 
        }else{
            printf("l equation donne \n\n"); 
            printf("x= 0 \n"); 
        }
     }

  12. #11
    Chanur

    Re : Une condition dans une condition (C++)

    Citation Envoyé par Bluedeep Voir le message
    Non, toujours vrai.
    Evidemment.
    Et je m'étonne qu'il y ait des bugs dans mes programmes ...
    Et bien sûr, ma traduction était mauvaise : ç'aurait du être "if (delta != 0)"
    Dernière modification par Chanur ; 11/02/2015 à 03h33.
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  13. #12
    CM63

    Re : Une condition dans une condition (C++)

    Bonjour,
    Citation Envoyé par iKss Voir le message
    En effet si l'utilisateur rentre 0 pour la valeur de A, de B et de C, le programme afficheras :
    "l equation est donc reduite a :
    0=0
    l egalite est fausse"
    Or elle est juste pour x=0.
    Pas seulement. Si les 3 coefficients sont nuls, n'importe quelle valeur de x convient, le problème est indéterminé.

    A plus

  14. #13
    iKss

    Re : Une condition dans une condition (C++)

    Ce que je veut dire c'est que l'égalité n'est pas "fausse"

Discussions similaires

  1. condition de decollage d'une bille dans un ascenseur
    Par invitea033dfeb dans le forum Physique
    Réponses: 7
    Dernier message: 17/09/2012, 22h06
  2. Réponses: 1
    Dernier message: 05/12/2010, 16h07
  3. Condition de vie dans l'Univers
    Par invitec875f1c4 dans le forum Planètes et Exobiologie
    Réponses: 2
    Dernier message: 15/11/2010, 13h51
  4. Condition d'adiabaticité pour une onde sonore dans un fluide
    Par invite9b5977b4 dans le forum Physique
    Réponses: 4
    Dernier message: 05/07/2009, 10h54
  5. [Aide SVT] condition de la fusion des péridotites dans une zone de subduction
    Par invite69cad21c dans le forum Géologie et Catastrophes naturelles
    Réponses: 4
    Dernier message: 30/06/2009, 18h10