probleme en C
Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

probleme en C



  1. #1
    syndrome

    probleme en C


    ------

    bonjour a tous
    je suis etudiant en informatique et faisant mon petit programme, je tombe a des resultats plutot enervant
    est ce que quelqun peut m'aider s'il vous plait (j'ai examen demain.....)

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        float a,b,c,x,x1,x2,Delta;
    
        int typeEquation;
        printf("Entrez 1 si c'est une equation du 1ere degre et 2 si 2eme degre:\n");
        scanf("%d", &typeEquation);
        if(typeEquation==1)
        {               //equation 1er degré
            printf("a=  ",a);
            scanf("%d",&a);
            printf("b=  ");
            scanf("%d",&b);
            if(a==0)
            {
                printf("impossible");
                }
            else
                x=(-b/a);
                printf("x=%d",x);          //solution equation
    
        }
        else if(typeEquation==2)
        {           //equation 2e degré
            printf("a=  ",a);
            scanf("%d",&a);
            printf("b=  ",b);
            scanf("%d",&b);
            printf("c=  ",c);
    
            scanf("%d",&c);
            if (Delta > 0)
            {
                x1=((-b+sqrt(Delta))/(2*a));
                x2=((-b-sqrt(Delta))/(2*a));
    
                printf("x1= %ld ",x1);
                printf("x2= %ld ",x2);
            }
            else if (Delta=0)
            {
                x=(-b/a);
                printf("x=  ",x);
            }
            else
                printf("impossible");
        }
        else
            printf("Aucun choix correcte.\n");
        return 0;
    }
    
    
    int calculerDelta()
    {
        int a,b,c;
        float delta;
        delta=(b*b)-4*a*c;
        return delta;
    }


    merci

    -----
    Dernière modification par yoda1234 ; 11/06/2008 à 11h17.

  2. #2
    lou_ibmix_xi

    Re : probleme en C

    Si tu expliquais quels sont tes résultats surprenant?

  3. #3
    syndrome

    Re : probleme en C

    donc voila
    ce programme est sencé me proposer de calculer une equation du 1er degré ou du second

    en choisissant le premier, j'entre la valeur de a=5 et de b= 3
    le resultat de -b/a...le resultat devrait me doner -1.666 mais il me donne 1073741824



    en choisissant le 2e j'entre a=5 b=6 c= 7 et il m'affiche x1=-161061 et x2=-161061 aussi

    et je ne trouve pourtant pas d'erreur!!!

  4. #4
    lou_ibmix_xi

    Re : probleme en C

    Un premier problème, tes printf affiche des "%ld", donc des entiers longs, alors que tu devrais utiliser "%f" pour l'affichage de flottants

  5. A voir en vidéo sur Futura
  6. #5
    syndrome

    Re : probleme en C

    ok vla un premier
    si il y aun premier, il y a un second non? ^^
    merci

  7. #6
    invite369fdaa2

    Re : probleme en C

    "
    int calculerDelta()
    {
    int a,b,c;
    float delta;
    delta=(b*b)-4*a*c;
    return delta;
    }
    "

    Je ne comprend pas cette fonction , elle ne recoit aucun argument.
    Tu declare a,b,c et delta ensuite tu procede à des calculs sans leur donner de valeur.

  8. #7
    invite369fdaa2

    Re : probleme en C

    "
    int calculerDelta()
    {
    int a,b,c;
    float delta;
    delta=(b*b)-4*a*c;
    return delta;
    }
    "

    Je ne comprend pas cette fonction , elle ne recoit aucun argument.
    Tu declare a,b,c et delta ensuite tu procede à des calculs sans leur donner de valeur.
    Tu utilise egalement dans ton main Delta , alors qu'il n'a pas de valeur non plus.

    "if (Delta > 0)"

    une solution pourrait etre :

    //fonction Calculer delta:

    int calculerDelta(int a,int b,int c)
    {
    float delta;
    delta=(b*b)-4*a*c;
    return delta;
    }

    //et ensuite tu peut appeller la fonction dans ton main

    Delta=calculerDelta(a,b,c)
    if (Delta > 0)
    .....
    .....

  9. #8
    inviteeb8e8d41

    Re : probleme en C

    une solution pourrait etre :

    //fonction Calculer delta:

    int calculerDelta(int a,int b,int c)
    {
    float delta;
    delta=(b*b)-4*a*c;
    return delta;
    }
    Ça ne serait pas plutôt float calculerDelta()?

  10. #9
    invite369fdaa2

    Re : probleme en C

    Oui effectivement ^^ .

    float calculerDelta(int a,int b,int c)
    {
    float delta;
    delta=(b*b)-4*a*c;
    return delta;
    }

  11. #10
    invite2d24c6c6

    Re : probleme en C

    Si a b et c sont des entiers je voit pas l'intérêt de mettre delta en float puisqu'il n'y as pas de division

  12. #11
    inviteeb8e8d41

    Re : probleme en C

    Citation Envoyé par Kedja Voir le message
    Si a b et c sont des entiers je voit pas l'intérêt de mettre delta en float puisqu'il n'y as pas de division
    Ben dans son code il manipule uniquement des float...ça devrait plutôt être float calculerDelta(float a, etc...).

  13. #12
    invite2d24c6c6

    Re : probleme en C

    Effectivement je n'avais pas lu sont code mais juste ce qu'avait marquer MaMMoN.

  14. #13
    invite2d24c6c6

    Re : probleme en C

    Code un peu plus correct (il est peut être pas parfait j'y ai pas consacrer beaucoup de temps ):

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        float a,b,c,x,x1,x2,Delta;
    
        int typeEquation;
        printf("Entrez 1 si c'est une equation du 1ere degre et 2 si 2eme degre:\n");
        scanf("%d", &typeEquation);
        if(typeEquation==1)
        {               //equation 1er degré
            printf("a=  ",a);
            scanf("%f",&a);//%f pour un float...
            printf("b=  ");
            scanf("%f",&b);
            if(a==0)
            {
                printf("impossible");
                }
            else
                x=(-b/a);
                printf("x=%f",x);          //solution equation
    
        }
        else if(typeEquation==2)
        {           //equation 2e degré
            printf("a=  ",a);
            scanf("%f",&a);
            printf("b=  ",b);
            scanf("%f",&b);
            printf("c=  ",c);
            scanf("%f",&c);
    		Delta=calculerDelta(a,b,c,&Delta);
            if (Delta > 0)
            {
                x1=((-b+sqrt(Delta))/(2*a));
                x2=((-b-sqrt(Delta))/(2*a));
    
                printf("x1= %lf ",x1);
                printf("x2= %lf ",x2);
            }
            else if (Delta=0)
            {
                x=(-b/a);
                printf("x=  ",x);
            }
            else
                printf("impossible");
        }
        else
            printf("Aucun choix correcte.\n");
        return 0;
    }
    
    
    float calculerDelta(float a, float b, float c,float* Delta)
    {
        *Delta=(b*b)-4*a*c;
    }

    P.S: tu fait quoi comme étude en informatique?
    Il faudrat peut être inclure math.h pour pouvoir utiliser la fonction square()

  15. #14
    inviteeb8e8d41

    Re : probleme en C

    Oui, et compiler avec gcc etc... -lm pour linker la librairie math. Ton programme ne marche pas parce que tu utilises trop de fois scanf() sans faire un flush. Personnellement, j'aime pas scanf(), ça pose trop de problèmes. Puisque ton code c'est plus du C++ que de C, utilises plutôt cin et cout, c'est beaucoup plus sûr.

    D'ailleurs else if (Delta=0) va toujours renvoyer true. Fait gaffe, si tu veux tester si a est égale à b, il faut faire if (a==b).

    Et qu'est-ce que ça veut dire "printf("a= ",a);"?

  16. #15
    syndrome

    Re : probleme en C

    je fais des études d'informatiqué liée a l'electronique
    et on ne peux pas dire que le niveau de programmation que l'on voi est tres bon...
    notre porf nous fais travailler qu'en C et il passe son temps a nous embrouiller alors pas étonnant que je ne sache meme pas faire une programme si simple....

    enfin je vous remerci mais mon exam c'etait ce matin ^^

    ciao

  17. #16
    invite2d24c6c6

    Re : probleme en C

    Citation Envoyé par lakrids Voir le message
    D'ailleurs else if (Delta=0) va toujours renvoyer true. Fait gaffe, si tu veux tester si a est égale à b, il faut faire if (a==b).
    Bien vu elle m'avait échapper celle-ci
    Citation Envoyé par lakrids Voir le message
    Et qu'est-ce que ça veut dire "printf("a= ",a);"?
    J'ai mis du temps à comprendre moi aussi mais je croit qu'il avait la flemme d'écrire printf("veuillez saisir un réel a:") mais sont ",a" ne sert à rien =)

  18. #17
    inviteeb8e8d41

    Re : probleme en C

    C'est bien ce que je me disais En fait printf("a= ", a); a comme effet de mettre la valeur de la variable a sur le stack qui ne sera jamais utilisée, et qui va provoquer plein de problèmes quand on veut dépiler quelque chose et on n'aura pas la valeur attendue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 26/05/2011, 12h27
  2. Un petit problème qui me pause problème lol
    Par invitef2853e5d dans le forum Mathématiques du supérieur
    Réponses: 13
    Dernier message: 31/03/2009, 15h28
  3. problème avec un lecteur mp4(le problème vient de l'ordinateur)
    Par mat_the_bad_boy dans le forum Matériel - Hardware
    Réponses: 3
    Dernier message: 29/10/2007, 16h53
  4. TPE : le problème de la problématique... pose problème
    Par invitedea46a4f dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 21/09/2006, 18h45
Découvrez nos comparatifs produits sur l'informatique et les technologies.