Problème de programmation sur visual C++
steph0312
-
SmallFitz Messages postés 351 Date d'inscription Statut Membre Dernière intervention -
SmallFitz Messages postés 351 Date d'inscription Statut Membre Dernière intervention -
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 erreurs:
C:\Program Files\Microsoft Visual Studio\MyProjects\stephanieentrainement\entrainement\steph.c(72) : error C2059: syntax error : 'return'
C:\Program Files\Microsoft Visual Studio\MyProjects\stephanieentrainement\entrainement\steph.c(74) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
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 mmes erreurs mais je ne trouve pas
.Merci d'avance de vos aides.
steph.obj - 2 error(s), 0 warning(s)
# 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;
delta = (b*b) - (4*a*c);
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);
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);
}
if (delta > 0)
{
do
{
while (borne_sup - borne_inf>=PRECISION);
{
r2=(borne_sup + borne_inf)/2;
r3 = r2*r2;
if (r3<delta)
{
borne_sup = (float)r2;
break;
}
else
{ borne_inf = (float)r2;
break;
}
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);
break;
}
}
return borne_inf;
}
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 erreurs:
C:\Program Files\Microsoft Visual Studio\MyProjects\stephanieentrainement\entrainement\steph.c(72) : error C2059: syntax error : 'return'
C:\Program Files\Microsoft Visual Studio\MyProjects\stephanieentrainement\entrainement\steph.c(74) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
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 mmes erreurs mais je ne trouve pas
.Merci d'avance de vos aides.
steph.obj - 2 error(s), 0 warning(s)
# 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;
delta = (b*b) - (4*a*c);
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);
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);
}
if (delta > 0)
{
do
{
while (borne_sup - borne_inf>=PRECISION);
{
r2=(borne_sup + borne_inf)/2;
r3 = r2*r2;
if (r3<delta)
{
borne_sup = (float)r2;
break;
}
else
{ borne_inf = (float)r2;
break;
}
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);
break;
}
}
return borne_inf;
}
A voir également:
- Problème de programmation sur visual C++
- Visual c++ 2019 - Guide
- Visual petanque - Télécharger - Sport
- Visual paradigm - Télécharger - Gestion de données
- Application de programmation - Guide
- Visual watermark - Télécharger - Photo & Graphisme
2 réponses
Bonjour,
Tu dois le rendre demain ? Mince !
T'es toujours là ? Je parie que non... Je repasserais si tu repostes pour demander de l'aide.
Pour ton prochain code regarde ma signature.
Tu dois le rendre demain ? Mince !
T'es toujours là ? Je parie que non... Je repasserais si tu repostes pour demander de l'aide.
Pour ton prochain code regarde ma signature.
snake0312
oui sniffff enfin j vais essayé de gratter jusqu'à après demain mais si je ne rends aps ça au plus tard après demain j'aurais -4 points par jour de retard (quel sadique ce prof) loool en tt k merci de ton aide j'ai lu ton message mais qu'est ce que mon identation à avoir avec le problème?en général les mises en retrait des instructions n'ont pas d'incidence sur un programme?non? en tout cas sur C++, je pense et puis j'ai posté le problème de cette façon mais je ne l'ai pas introduit comme ça.
L'indentation sert juste a rendre son code plus clair.
Regarde ton code, pour toi ça peut être compréhensible, mais pour moi qui ne le connais pas c'est dur.
C'est tout ^^.
Bien alors voyons un peu ton code.
Chez moi c'est pareil, il y a aussi 2 warnings et 1 erreur :
Warning 1 :
Le type de ton main doit être int main, car normalement il recoit un int pour savoir si tout c'est bien passé ou pas.
Et comme il ne prend aucune variable en paramètre il faut mettre (void).
Ce qui donne
Donc à la fin de ton main il doit y avoir
Warning 2:
Tu veux afficher un float avec ton printf, il faut donc utiliser le formatteur qui lui est attaché : %.2f au lieu de %.2d. Note : je ne connais pas ces .2. Je ne fais que de la logique.
Error 1 :
Tu mets des break; n'importe où n'importe comment. Il s'utilisent en général lorsque tu fais une boucle switch{} mais pas à chaque fois qu'une condition se termine ! Enlèves les donc tous ils n'ont rien à faire là.
Sinon tu peux faire un tour sur le SiteDuZero ici la solution est bien plus simple il me semble.
https://openclassrooms.com/forum/sujet/calculateur-56513#r1319268
Sinon voilà ton code corrigé :
Bonne continuation !
Regarde ton code, pour toi ça peut être compréhensible, mais pour moi qui ne le connais pas c'est dur.
C'est tout ^^.
Bien alors voyons un peu ton code.
Chez moi c'est pareil, il y a aussi 2 warnings et 1 erreur :
:: === verifieurDeCodeSiteDuZero, Debug === main.c:10: warning: return type of 'main' is not `int' main.c:: In function `main': main.c:36: warning: int format, double arg (arg 2) main.c:64: error: syntax error before "return" :: === Build finished: 1 errors, 2 warnings ===
Warning 1 :
Le type de ton main doit être int main, car normalement il recoit un int pour savoir si tout c'est bien passé ou pas.
Et comme il ne prend aucune variable en paramètre il faut mettre (void).
Ce qui donne
int main (void)
Donc à la fin de ton main il doit y avoir
return 0;. En général ton IDE de le mets d'office, c'est bizarre que tu ais mis ça...
Warning 2:
Tu veux afficher un float avec ton printf, il faut donc utiliser le formatteur qui lui est attaché : %.2f au lieu de %.2d. Note : je ne connais pas ces .2. Je ne fais que de la logique.
Error 1 :
Tu mets des break; n'importe où n'importe comment. Il s'utilisent en général lorsque tu fais une boucle switch{} mais pas à chaque fois qu'une condition se termine ! Enlèves les donc tous ils n'ont rien à faire là.
Sinon tu peux faire un tour sur le SiteDuZero ici la solution est bien plus simple il me semble.
https://openclassrooms.com/forum/sujet/calculateur-56513#r1319268
Sinon voilà ton code corrigé :
# include <stdio.h> # include <stdlib.h> # include <math.h> # include <float.h> # include <string.h> # define PRECISION 0.005 int main (void) { float a,b,c,delta,u,borne_inf,borne_sup,r3,r2; double x1,x2; borne_inf = 0; borne_sup = FLT_MAX; delta = (b*b) - (4*a*c); 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); 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("%f.2d\n", u); } if (delta > 0) { 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; } 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; }
Bonne continuation !