IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Problème else if


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 36
    Par défaut Problème else if
    Bonjour,

    Je rencontre quelques problèmes avec mon programme que je vais essayer de résoudre un par un avec vous.

    Le projet est de calculer un système de 2 équations à 2 inconnus.

    1. a*x + b*y = c
    2. d*x + e*y = f

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    #include <math.h>
    #include <stdio.h>
    #define PI 3.14159265
     
    int main()
    {
    	/*Introducing variables*/
    	float param_a,param_b,param_c,param_d,param_e,param_f;
    	float index_x,index_y;
    	float check,result;
     
    	scanf("%f %f %f",&param_a,&param_b,&param_c);
    	scanf("%f %f %f",&param_d,&param_e,&param_f);
     
    	printf("%f %f %f\n",param_a,param_b,param_c);
    	printf("%f %f %f\n",param_d,param_e,param_f);
    	/* Check help me to knom if the solution is single, infini or doesn't exist */
    	check=(param_a*param_e)-(param_b*param_d);
     
    	if ( check=!0 ) 
    		{ /* Single solution */
    			index_x=(param_e*param_c)-(param_b*param_f);
    			index_x=index_x/((param_e*param_a)-(param_b*param_d));
    			index_y=(param_f-(param_d*index_x))/param_e;
    			if ( (int)index_x==index_x )
    				printf("Result: The equations have a single solution: x=%.f y=%.3f\n",index_x,index_y);
    			else if ( (int)index_y==index_y )
    				printf("Result: The equations have a single solution: x=%.3f y=%.f\n",index_x,index_y);
    			else if ( ((int)index_x==index_x) && ((int)index_y==index_y) )
    				printf("Result: The equations have a single solution: x=%.f y=%.f\n",index_x,index_y);
    		}
    	else if ( (param_a==param_d) && (param_b==param_e) && (param_c!=param_f) )
    		{
    			printf("Result: The equations have no solution\n");
    		}
    	else if ( (param_a==param_d) && (param_b!=param_e) && (param_c==param_f) )
    		printf("Result: The equations have no solution\n");
    	else if ( (param_a!=param_d) && (param_b==param_e) && (param_c==param_f) )
    		printf("Result: The equations have no solution\n");
    	else if ( (param_a==0) && (param_b==0) && (param_c!=0) )
    		printf("Error: Triplet #1 does not represents coefficient of a line.\n");
    	else if ( (param_d==0) && (param_e==0) && (param_f!=0) )
    		printf("Error: Triplet #2 does not represents coefficient of a line.\n");
    	else printf("Erreur..\n");
     
    	return 0; 
     
    }
    L'écriture n'est pas encore fini mais je test au fur à mesure.

    Tout d'abord. Si j'entre 2 équations qui me donneront une solution unique, je devrais imprimer à l'écran un entier, si le x et/ou y est entier et un float si x et/ou y est float.

    Dans mes test, voilà ce que j'obtiens :
    1#
    1 1 1
    1 -1 1
    Result : The equations have a single solution: x=1 y=-0.000
    Bizarre !

    2#
    0 1 32
    2 5 6
    Result : The equations have a single solution: x=77 y=-32.000
    Apparemment, le index_y ne s'imprime pas en integer ! Mais...

    3#
    0 1 32
    5 2 6
    Result : The equations have a single solution: x=11.600 y=32


    Je recherche donc un peu d'aide concernant cette erreur, il y en a d'autres mais je vais essayer de régler ça un par un

    Merci d'avance à vous

    Ilan

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 962
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 962
    Par défaut
    Jei,

    Solution basique pour trouver l'erreur : papier + crayon, et exécuter manuellement le programme, en notant l'évolution des valeurs.

    Par "exécuter manuellement le programme", j'entends le suivre ligne à ligne, pour faire ce que fait réellement le programme, pas ce que tu penses qu'il fait.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 36
    Par défaut
    Eurêka !

    J'ai pour l'instant aucune erreur, je vous reviens si quelque chose change

    Merci à vous

Discussions similaires

  1. problème avec If then Else
    Par thomas_wagner dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/11/2007, 01h32
  2. problème avec if..else..endif
    Par casavba dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/08/2007, 11h14
  3. [MySQL] Problème boucle if else
    Par urbalk dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 25/04/2007, 16h46
  4. [Mail] Problème de syntaxe else if
    Par texas dans le forum Langage
    Réponses: 18
    Dernier message: 07/10/2006, 14h47
  5. Problèmes avec des else if
    Par Kr00pS dans le forum C
    Réponses: 2
    Dernier message: 15/04/2006, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo