Probleme éxécution programme en C.

Résolu/Fermé
jehutyy Messages postés 51 Date d'inscription lundi 5 septembre 2011 Statut Membre Dernière intervention 1 mai 2015 - 1 févr. 2012 à 13:53
 Pitt911 - 1 févr. 2012 à 14:36
Bonjour,

J'ai un petit problème lors de l'execution d'un programme que j'ai écrit en C.
En effet le programme se lance et une fois les données demandées rentré, le programme ne fait plus rien. Je vous donne mon programme, si quelqu'un pouvait m'indiquer si j'ai fais une erreur, je vous remercie d'avance.

cordialement
jehutyy

//début du programme.

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

int main()
{
double a=0;
double b=0;
double c=0;
printf("entrez a\n");
scanf("%f", &a);
printf("entrez b\n");
scanf("%f", &b);
printf("entrez c\n");
scanf("%f\n", &c);
printf("%f, %f, %f", a, b, c);
int delta=(b*b)-(4*a*c);
printf("le delta est %d\n", delta);
if(delta>0)
{
double x1=(-b-sqrt(delta))/(2*a);
double x2=(-X2+sqrt(delta))/(2*a);
printf("%f, %f", x1,x2);
}
if(delta==0)
{
double x1=(-b)/(2*a);
printf("%f", x1);
}
if(delta<0) printf("pas de solutions");

return 0;
}

9 réponses

Utilisateur anonyme
1 févr. 2012 à 14:01
Bonjour,

Essai d'enlever ton /n a ton scanf

et de le mettre a la ligne d'après comme ça :

scanf("%f", &c);
printf("/n%f, %f, %f", a, b, c);
0
Utilisateur anonyme
1 févr. 2012 à 14:01
Salut,

Ton prog t'affiche cette ligne : printf("%f, %f, %f", a, b, c); ?
0
jehutyy Messages postés 51 Date d'inscription lundi 5 septembre 2011 Statut Membre Dernière intervention 1 mai 2015
1 févr. 2012 à 14:03
@Migok: non il ne me l'affiche pas
@lou: je teste tout de suite.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
1 févr. 2012 à 14:03
Salut.
c'est quoi ton environnement de développement ?
à part le delta en int plutôt qu'en double, je ne vois rien.
Le programme ne fait plus rien où exactement ? après la saisi de c ?
le seul truc de différent que je voi c'est l' "\n" pour le scanf de c.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jehutyy Messages postés 51 Date d'inscription lundi 5 septembre 2011 Statut Membre Dernière intervention 1 mai 2015
1 févr. 2012 à 14:06
En effet apres la saisi de a, b et c le programme ne fait plus rien.
La je viens de deplacer le "\n" le programme fonctionne mais m'affiche mes variable a 0 au lieu des valeurs que je rentre.
0
Pour entrer des variable double, il faut mettre%lf au scanf
0
jehutyy Messages postés 51 Date d'inscription lundi 5 septembre 2011 Statut Membre Dernière intervention 1 mai 2015
1 févr. 2012 à 14:11
Merci, je viens de changer mes double a,b et c en float ça marche.
Et merci pour le "%lf". Le programme fonctionne.

Merci tout le monde.
Bonne continuation.

cordialement
jehutyy
0
Salut,

Ton problème est qu'avec des double on ne mets pas %f mais %lf remplace tout t'es %f par %lf (lf pour long float).
Il faut les mettre aussi au printf.
0
int delta=(b*b)-(4*a*c);
tu peux pas faire ça tu dois faire

int delta;
delta=(b*b)-(4*a*c);

mais un petit conseil pour te programme commence par toutes t'es déclaration puis écris seulement les ligne a exécuté c'est une habitude.
exemple:
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
1 févr. 2012 à 14:29
je ne vois pas pourquoi il ne pourrais pas écrire ça. En plus ton conseil n'est pas forcément judicieux, déclarer les variable seulement lorsqu'on a besoin et dans un corps/bloc spécifique permet d'éviter certains bugs.
mais mettre le delta en int, c'est mauvais pour la résolution.
0
int main()
{
double a=0;
double b=0;
double c=0;
printf("entrez a\n");
scanf("%lf", &a);
printf("entrez b\n");
scanf("%lf", &b);
printf("entrez c\n");
scanf("%lf", &c);

// tu peux résumé c'est six ligne seulement 2 :
//printf(" Entre a b c");
//scanf("%lf%lf%lf",a,b,c)

printf("%lf, %lf, %lf", a, b, c);
delta=(b*b)-(4*a*c);
printf("le delta est %d\n", delta);
if(delta>0)
{
x1=(-b-sqrt(delta))/(2*a);
x2=(-X2+sqrt(delta))/(2*a);
printf("%lf, %lf", x1,x2);
}
if(delta==0)
{
x1=(-b)/(2*a);
printf("%lf", x1);
}
if(delta<0) printf("pas de solutions");
return 0;
}
Ps : désolé mais je m'étais planté dans le commentaire que j'ai supprimé
0
J'ai oublier le int delta; en début de programme ;)
0
Oui je comprend ton point de vue mais c'était une habitude que moi j'ai prsie enfin chaqu'un fait comme il veut.

Bonne continuation à toi
0