Partage
  • Partager sur Facebook
  • Partager sur Twitter

Polynomes second degré

qu'en pensez vous ?????

    26 janvier 2006 à 23:16:59

    BONSOIR à tous
    je vous propose ici un code qui permet de calculer les racines d'un polynome
    si vous avez des remarques , des felicitations :lol: je suis ouvert à tout .
    J'aurais aussi une question , comment donner une valeur exacte , c'est a dire un resultat sous forme de fraction ??? MERCI d'avance

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    int main(int argc, char *argv[])
    {      double a = 0 , b = 0 , c = 0 , delta = 0 , bCarre = 0 , X0 = 0 , X1 = 0 , X2 = 0 , racineDelta = 0  ;
           
      printf("                         *****POLYNOMES*****\n\n\n ");
      printf(" Soit f(x) = ax (au carre) + bx + c\n\n ");
     
      printf("a = ");
      scanf ("%lf",&a);
     
      printf(" b = ");
      scanf ("%lf",&b);
     
        printf(" c = ");
      scanf ("%lf",&c);
     
      printf ("\n\n");
       
       
        bCarre = pow (b , 2);
        delta = bCarre - 4 * a * c ;
       
        printf ("     Delta = %lf - 4 * %lf * %lf = %lf\n\n", bCarre , a , c , delta);
       
        printf ("\n");
       
        system("PAUSE");
        system("CLS");
       
       
        if ( delta < 0 )
        {
            printf ("\n\n\n      Delta < 0 , pas de solution pour f(x) = 0\n\n");
        }
       
        else if (delta == 0 )
        {
            X0 = - b / (2 * a);
            printf ("\n\n\n      Delta = 0 , une solution pour f(x) = 0 \n\n");
            system("PAUSE");
            printf("\n\n\n    X0 = -%lf / 2 *  %lf = %lf \n\n " , b , a , X0 );
        }
       
       else if ( delta > 0)
       {
            racineDelta = sqrt (delta);
            X1 = ( - b - racineDelta ) / (2 * a) ;
            X2 = ( - b + racineDelta ) / (2 * a) ;
            printf ("\n\n\n      Delta > 0 , 2 solutions pour f(x) = 0\n\n");
            system ("PAUSE");
            printf ("\n\n\n    X1 = ( - %lf - %lf ) / ( 2 * %lf ) = %lf\n\n" ,b ,racineDelta , a , X1);
            printf ("\n\n    X2 = ( - %lf + %lf ) / ( 2 * %lf ) = %lf\n\n" ,b ,racineDelta , a , X2);
       }
             
             

           
           
           
           
       
      system("PAUSE");     
      return 0;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      26 janvier 2006 à 23:54:32

      Pour mettre une valeur exacte, tu n'as pas trop de choix, tu ne calcule pas et tu laisse en forme brute.
      • Partager sur Facebook
      • Partager sur Twitter
        27 janvier 2006 à 0:25:19

        De plus, il y a un problème de représentation des nombres.
        Je ne sais pas en quelle base travaille ton ordi mais des nombres tels que 0,1 sont impossible à stocker en mémoire sans erreur :

        voici un exemple de programme pour t'en persuader :
        #include <stdio.h>
        #include <stdlib.h>

        int main(int argc, char *argv[])
        {
            double variable = 0. ;
            long compteur ;
           
           
            for (compteur = 0 ; compteur < 10000000 ; compteur++)
            {
                variable +=  0.1 ;
            }
                   
            printf("resultat = %lf\n", variable);
         
            system("PAUSE");   
            return 0;
        }

        Il te sortira
        999999,999839 < 1 000 000

        Et si on avait pris 0,001 au lieu de 0,1, on aurait trouvé
        10000,000002 > 10 000.

        Donc tu vois le problème qui se pose, car en fait même si tu rentres "0,1" ton ordi ne stocke pas exactement "0,1" en mémoire mais un peu moins.
        • Partager sur Facebook
        • Partager sur Twitter
        Liste ou site de naissance original à découvrir sur www.o-liste.net

        Polynomes second degré

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown