Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1468 connectés 

  FORUM HardWare.fr
  Programmation
  C

  probleme de dichotomie sur visual C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme de dichotomie sur visual C++

n°1628869
snake0312
Posté le 22-10-2007 à 20:00:54  profilanswer
 

Bonjour,  
 
j'ai un problème je dois écrire la résolution d'un système d'équation du second degré et je dois utilisé la dichotomie, je ne suis pas très expérimentée en langage C donc j'aurais vraiment besoin d'aide, j'ai les variables x1,x2 qui doivent etre relles ainsi que delta mais je dois aussi définir une variable PRECISION valant 0,005 et tant que (borne_sup - borne_inf>=PRECISION), r2= (borne_sup + borne_inf)/2 et en comparant r3(donc sensé être la carré de r2)à delta, je dois modifier la borne adéquate? Moi, j'ai écrit ce programme déjà, je ne sais même pas si c'est juste et en plus, il me met comme erreur:  
C:\Program Files\Microsoft Visual Studio\MyProjects\stephanieentrainement\entrainement\steph.c(69) : error C2059: syntax error : 'return'
pouvez vous m'aidez svp, je dois rendre ce devoir demain, si quelqu'un pouvait m'aider à voir si je ne fais pas fausse route et ou sont mes erreurs voilà bien deux jours que j'essaie de trouver la réponse au problème et ou sont mes erreurs mais je ne trouve pas  
.Merci d'avance de vos aides.  
 
# include <stdio.h>  
# include <stdlib.h>  
# include <math.h>  
# include <float.h>  
# include <string.h>  
# define PRECISION 0.005  
 
float main ()  
 
 
{  
   float a,b,c,delta,u,borne_inf,borne_sup,r3,r2;  
   double x1,x2;  
   borne_inf = 0;  
   borne_sup = FLT_MAX;  
 
 
   printf("resolution d'un systeme d'equation du second degre\n" );  
   printf("ax^2+ bx + c = 0\n" );  
 
    printf("saisie du coefficient a\n" );  
    scanf("%f", &a);  
    printf("saisie du coefficient b\n" );  
    scanf("%f", & b);  
    printf("saisie du coefficient c\n" );  
    scanf("%f", &c);  
    printf("%.2f est le discriminant de cette equation\n", delta);  
    delta = (b*b) - (4*a*c);
 
      if (delta<0)  
   {  
       printf("pas de solution reelle possible\n" );  
   }  
 
      if (delta==0)  
   {  
       printf("une seule solution reelle possible, u\n" );  
       u=(-b)/(2*a);  
       printf("%.2d\n", u);  
   }  
 
      do  
  {  
          while (borne_sup - borne_inf>=PRECISION);  
    {  
            r2=(borne_sup + borne_inf)/2;  
            r3 = r2*r2;  
 
              if (r3<delta)  
     {  
               borne_sup = (float)r2;  
 
     }  
              else  
     {  
      borne_inf = (float)r2;  
     }  
           }
   
          if (delta > 0)  
    {  
           printf("deux solutions reelles possibles,x1 et x2\n" );  
              x1=(float)((-b - (r2))/(2*a));  
              x2=(float)((-b + (r2))/(2*a));  
              printf("%.2f\n", x1);  
              printf("%.2f\n", x2);  
    }
  }
 return 0;  
}


---------------
ce qui fait monter le serpent à l'arbre, c'est l'orgueil
mood
Publicité
Posté le 22-10-2007 à 20:00:54  profilanswer
 

n°1628891
Elmoricq
Modérateur
Posté le 22-10-2007 à 20:38:11  profilanswer
 

Beaucoup d'erreurs.
 
Je me permets tout d'abord de poster une version indentée de ton code, dans les balises du forum qui-vont-bien [:dawa]
 

Code :
  1. # include <stdio.h>
  2. # include <stdlib.h>
  3. # include <math.h>
  4. # include <float.h>
  5. # include <string.h>
  6. # define PRECISION 0.005
  7.  
  8. float main ()
  9. {
  10.    float a,b,c,delta,u,borne_inf,borne_sup,r3,r2;
  11.    double x1,x2;
  12.    borne_inf = 0;
  13.    borne_sup = FLT_MAX;
  14.  
  15.  
  16.    printf("resolution d'un systeme d'equation du second degre\n" );
  17.    printf("ax^2+ bx + c = 0\n" );
  18.  
  19.    printf("saisie du coefficient a\n" );
  20.    scanf("%f", &a);
  21.    printf("saisie du coefficient b\n" );
  22.    scanf("%f", & b);
  23.    printf("saisie du coefficient c\n" );
  24.    scanf("%f", &c);
  25.    printf("%.2f est le discriminant de cette equation\n", delta);
  26.    delta = (b*b) - (4*a*c);
  27.  
  28.    if (delta<0)
  29.    {
  30.        printf("pas de solution reelle possible\n" );
  31.    }
  32.  
  33.    if (delta==0)
  34.    {
  35.        printf("une seule solution reelle possible, u\n" );
  36.        u=(-b)/(2*a);
  37.        printf("%.2d\n", u);
  38.    }
  39.  
  40.    do
  41.    {
  42.        while (borne_sup - borne_inf>=PRECISION)
  43.            ;
  44.        {
  45.            r2=(borne_sup + borne_inf)/2;
  46.            r3 = r2*r2;
  47.  
  48.            if (r3<delta)
  49.            {
  50.                borne_sup = (float)r2;
  51.  
  52.            }
  53.            else
  54.            {
  55.                borne_inf = (float)r2;
  56.            }
  57.        }
  58.  
  59.        if (delta > 0)
  60.        {
  61.            printf("deux solutions reelles possibles,x1 et x2\n" );
  62.            x1=(float)((-b - (r2))/(2*a));
  63.            x2=(float)((-b + (r2))/(2*a));
  64.            printf("%.2f\n", x1);
  65.            printf("%.2f\n", x2);
  66.        }
  67.    }
  68.    return 0;
  69. }


 
 
Ensuite, si ton compilateur est convenablement configuré, tu devrais obtenir au moins ceci :
 

Compiling: C:\Program Files\CodeBlocks\seb\test.c
C:\Program Files\CodeBlocks\seb\test.c:9: error: `main' must return `int'
C:\Program Files\CodeBlocks\seb\test.c:9: error: return type for `main' changed to `int'
C:\Program Files\CodeBlocks\seb\test.c: In function `int main(...)':
C:\Program Files\CodeBlocks\seb\test.c:37: warning: int format, double arg (arg 2)
C:\Program Files\CodeBlocks\seb\test.c:68: error: expected `while' before numeric constant
C:\Program Files\CodeBlocks\seb\test.c:68: error: expected `(' before numeric constant
C:\Program Files\CodeBlocks\seb\test.c:68: error: expected `)' before ';' token
Process terminated with status 1 (0 minutes, 0 seconds)
5 errors, 1 warnings


 
Essaie déjà de corriger ces erreurs-ci, il s'agit de syntaxe, et les messages sont assez explicites.  
Ensuite tu pourras voir ce que donne ton programme [:klem3i1]

n°1628919
snake0312
Posté le 22-10-2007 à 21:05:55  profilanswer
 

merci excuse moi pour le message précedent mais comment faire pour configurer correctement mon compilateur?

n°1628927
-Opera-
mago spé électricité
Posté le 22-10-2007 à 21:18:37  profilanswer
 

http://mapage.noos.fr/emdel/codage.htm#cfg_compilo


---------------
You get so used to things the way they are. And I've always been alone. I guess that makes me lonely.
n°1629754
ptitchep
Posté le 23-10-2007 à 23:43:21  profilanswer
 

Bizarre que Joel F n'ait pas encore dit que ce n'est pas du c++


---------------
deluser --remove-home ptitchep
n°1629762
snake0312
Posté le 24-10-2007 à 01:37:42  profilanswer
 


? Explik toi je ne comprends pas

n°1629769
Elmoricq
Modérateur
Posté le 24-10-2007 à 06:48:16  profilanswer
 

C'est pas du C++ mais du C (le topic a ensuite été déplacé dans la bonne catégorie).

n°1630013
ptitchep
Posté le 24-10-2007 à 12:09:32  profilanswer
 

J'avoue que je n'ai pas tout compris dans ton histoire de borne sup et inf (j'ai pas cherché bcp c'est vrai).
Par contre ceci est toujours valable: pas de ; après un while
 
while (borne_sup - borne_inf>=PRECISION)     ;  
Cela veut dire:  
tant que borne_sup - borne_inf>=PRECISION, ne rien faire.
 
Donc si la condition est vraie tu obtiens une jolie boucle infinie.


---------------
deluser --remove-home ptitchep

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  probleme de dichotomie sur visual C++

 

Sujets relatifs
Problème requête betweenProblème pour générer la DTD de fichiers XML
[ALGO] probléme sur un algoproblème de syntaxe
Problème de lecture d'un clip dans un clipprobleme avec une video sur ma page
[Batch-Xp] Probleme de variable...Problème avec dreamweaver
Problème de <select>wamp5 - problème phpMyAdmin
Plus de sujets relatifs à : probleme de dichotomie sur visual C++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR