Accueil > > > RESOLUTION D'UNE EQUATION DU SECOND DEGRÉ AVEC RACINES REELLES ET COMPLEXES EN C
RESOLUTION D'UNE EQUATION DU SECOND DEGRÉ AVEC RACINES REELLES ET COMPLEXES EN C
Information sur la source
Description
ce code resoud une equation du 1er et 2ème degré avec racine réelles et complexes et contrôle du saisie utilisateur développé avec DEVC++.
Source
- #include <stdio.h>
- #include <math.h>
- #include <string.h>
- #include<stdlib.h>
-
-
- /* Prototype des fonctrions*/
- void rema(double *p);
- void remb(double *y);
- void remc(double *c);
- void delta(double *a,double *b,double *c);
-
- /* Fonction principale*/
-
- int main(int argc, char* argv[])
- {
- double w,r,t; /* w r t respectivement font reference aux quofitients de l'equation A B C*/
- bool var;var=true;
- char re; /* chaine de test de la volonté de l'utilisateur de resoudre une nouvelle equation*/
- bool val;val=false;
-
- /*chaine de titrage */
- printf("\n");printf("\n");
- printf("\t************************************************************\n");
- printf("\t************************************************************\n");
-
- printf("\t PROGRAMME DE RESOLUTION DES EQUATIONS DE \n");
- printf("\t 1er ET DEUXIEME DEGRE AVEC RACINES REELLES \n");
- printf("\t ET COMPLEXES ET PRISE EN CHARGE DES CONTROLES \n");
- printf("\t DE SAISIE CHARACTERS \n");
-
- printf("\t************************************************************\n");
- printf("\t************************************************************\n");
- printf("\n");
-
- printf("\n");
-
- while((var)&&(val==false))
- {
- rema(&w);
- remb(&r);
- remc(&t);
- delta(&w,&r,&t);
-
- printf("\n\n\t autre equation O/N ?: \n");
- scanf ("%s",&re);
-
- if((re == 'o')||(re == 'O'))
- {
- var=true;
- }
- else
- {
- if((re=='n')||(re=='N'))
- {
- var=false;
-
- }
- else
- {
- printf("\n\n\t autre equation O/N ?: \n");
- scanf ("%s",&re);
-
- while((re!='o')&&(re!='O')&&(re!='n')&&(re!='N'))
- {
- printf("\n\n\t autre equation O/N ?: \n");
- scanf ("%s",&re);
- if((re=='n')||(re=='N'))
- {
- val=true;
- }
- }
- }
- }
- }
- return 0;
- }
-
- void rema(double *p)/*procedure de remplissage de de A par passage par adresse*/
- {
- char buf[32];
- char bul[2]="0";
- bool var;
- var=true;
-
- printf("\t\nVeuillez entrer le coefficient de A S.V.P\n");
- scanf("%s",&buf); /*lecture du variable en tant que chaine de caractere*/
- *p = atof(buf); /*fonction de conversion du caractere en float*/
-
- while(var==true)
- {
- if (strcmp(buf, bul) == 0) /*comparaison du chaine avec la variable bul qui contient un zero de type char*/
- {
- printf("\tvous avez taper un zero\n"); /* les chaines sont identiques */
- printf("\t\nVeuillez entrer le coefficient de A different de zero\n");
- scanf("%s",&buf);
- *p = atof(buf); /*fonction de conversion du caractere en float*/
- var=true; /*variable booleene var fait que la boucle se repete tant que on donne une valeur de zero a A*/
- }
-
- else
- {
- if (((strcmp(buf, bul) != 0))&&(*p==0)) /*vue que la conversion des chaines caracteres en float donne zero on associe ces
- deux conditions pour tomber sur le cas de saisie d'un caractere */
- {
- printf("\tvous avez taper un caractere\n"); var=true; /* les chaines buf et bul sont différentes */
- printf("\t\nVeuillez entrer le coefficient de A S.V.P\n");
- scanf("%s",&buf);
- *p = atof(buf);
- }
-
- else
- {
- printf("\t vous avez taper un nombre valide\n"); /* saisie d'un nombre valide*/
- var=false; /*var permet à ce niveau de sortir de la boucle while*/
- }
- }
- }
- }
-
- void remb(double *y) /*procedure de remplissage de B*/
- {
- char buf[32] ,bul[2]="0"; /* meme logique que celle en dessus, sauf que la saisie d'un zero sera toleré*/
- bool var;
- var=true;
- printf("\t\n Veuillez entrer le coefficient de B S.V.P\n");
- scanf("%s",&buf);
- *y = atof(buf);
-
- while(var==true)
- {
- if (strcmp(buf, bul) == 0)
- {
- printf("\tvous avez taper un zero\n"); /* les chaines sont identiques */
- var=false;
- }
-
- else
- {
- if (((strcmp(buf, bul) != 0))&&(*y==0))
- {
- printf("\tvous avez taper un caractere\n"); var=true;/* les chaines sont différentes */
- printf("\t\nVeuillez entrer le coefficient de B S.V.P\n");
- scanf("%s",&buf);
- *y = atof(buf);
- }
-
- else
- {
- printf("\tvous avez taper un nombre valide\n");
- var=false;}}}
- }
-
- void remc(double *z) /*procedure de remplissage de C*/
- {
- char buf[32], bul[2]="0"; /* meme logique que celle de remplissage de B*/
- bool var;
- var=true;
- printf("\t\nVeuillez entrer le coefficient de C S.V.P\n");
- scanf("%s",&buf);
- *z = atof(buf);
- while(var==true){
- if (strcmp(buf, bul) == 0)
- {
- printf("\tvous avez taper un zero\n"); /* les chaines sont identiques */
- var=false;
- }
-
- else
- {
- if (((strcmp(buf, bul) != 0))&&(*z==0))
- {
- printf("\tvous avez taper un caractere\n"); var=true; /* les chaines sont différentes */
- printf("\t\nVeuillez entrer le coefficient de C S.V.P\n");
- scanf("%s",&buf);
- *z =atof(buf);
- }
-
- else
- {
- printf("\tvous avez taper un nombre valide\n");
- var=false;}}}
- }
-
-
- void delta(double *a,double *b,double *c) /* procedure delta pour calculer le delta et ces racines et leurs angles*/
- {
- double delta,x0,x1,x2,u2,f1,f2;
- double tab1[2];
- double tab2[2];
-
- delta=((*b)*(*b))-(4*(*a)*(*c));
-
- if(*b!=0)
- {
- if(delta==0)
- {
- x0=(-(*b))/(2*(*a));
- printf("\n L'equation\n %6.2fx*x+%6.2lfx+%6.2f = 0 ",*a,*b,*c);
- printf("\n A UNE SEUL RACINE QUI EST %6.4f",x0);
- }
- else
- {
- if(delta<0)
- {
- delta=delta*(-1); /*delta multiplié par -1 pour pouvoir trouvé ces racines*/
-
- tab1[1]=(-*b)/(2*(*a)); /*partie reele de x1*/
- tab1[2]=(sqrt(delta))/(2*(*a)); /*partie imaginaire de x1*/
-
- tab2[1]=(-*b)/(2*(*a)); /*partie reele de x2*/
- tab2[2]=(-sqrt(delta))/(2*(*a));/*partie reele de x2*/
-
- printf("\n L'equation\n %6.2fx2+%6.2fx+%6.2f = 0 ",*a,*b,*c);
- printf("\n A DEUX RACINES COMPLEXES QUI SONT %6.3f+%6.4fj avec PHI1=%3.0f et\n %6.3f%6.4fj avec PHI2=%3.0f ",tab1[1],tab1[2],floor((atan(tab1[2]/tab1[1]))*(180/3.14)),tab2[1],tab2[2],ceil((atan(tab2[2]/tab2[1]))*(180/3.14)));/*fonction predefinie atan(imaginaire/reele) retourne le resultat de PHI*/
- }
- else
- {
- x1=(-(*b)+sqrt(delta))/(2*(*a)); /*racine reele de x1*/
- x2=(-(*b)-sqrt(delta))/(2*(*a)); /*racine reele de x1*/
- printf("\n L'equation\n %6.2fx2+%6.2fx+%6.2f = 0 ",*a,*b,*c);
- printf("\n A DEUX RACINES REELLES QUI SONT %6.4f et %6.4f",x1,x2);
- }
- }
- }
- else
- {
- if(((*c)!=0)&&(*b==0)){ /*cas ou on a un b=0 */
- u2=-(*c)/(*a);
- if(u2>0){
- f1=sqrt(u2); /* f1 racine reel*/
- f2=-sqrt(u2); /* f2 racine reel*/
- printf("\n L'equation\n %6.2fx*x + %6.2f =0 possede deux solutionx reelles %6.4f et %6.4f ",*a,*c,f1,f2);
- }
- else
- {
- u2=u2*(-1);
- f1=sqrt(u2); /* f1 reel*/
- f2=-sqrt(u2); /* f2 imaginaire*/
- printf("\n L'equation\n %6.2fx*x + %6.2fx =0 possede deux solutionx complexes %3.0fi et %3.0fi ",*a,*c,f1,f2);
- }
- }
- else
- {
-
- printf("\n L'equation\n %6.2fx*x + %fx + %f = 0 a pour solution 0",*a,*b,*c); /* cas ou a et b egals a zero*/
-
- }
- }
- }
-
#include <stdio.h>
#include <math.h>
#include <string.h>
#include<stdlib.h>
/* Prototype des fonctrions*/
void rema(double *p);
void remb(double *y);
void remc(double *c);
void delta(double *a,double *b,double *c);
/* Fonction principale*/
int main(int argc, char* argv[])
{
double w,r,t; /* w r t respectivement font reference aux quofitients de l'equation A B C*/
bool var;var=true;
char re; /* chaine de test de la volonté de l'utilisateur de resoudre une nouvelle equation*/
bool val;val=false;
/*chaine de titrage */
printf("\n");printf("\n");
printf("\t************************************************************\n");
printf("\t************************************************************\n");
printf("\t PROGRAMME DE RESOLUTION DES EQUATIONS DE \n");
printf("\t 1er ET DEUXIEME DEGRE AVEC RACINES REELLES \n");
printf("\t ET COMPLEXES ET PRISE EN CHARGE DES CONTROLES \n");
printf("\t DE SAISIE CHARACTERS \n");
printf("\t************************************************************\n");
printf("\t************************************************************\n");
printf("\n");
printf("\n");
while((var)&&(val==false))
{
rema(&w);
remb(&r);
remc(&t);
delta(&w,&r,&t);
printf("\n\n\t autre equation O/N ?: \n");
scanf ("%s",&re);
if((re == 'o')||(re == 'O'))
{
var=true;
}
else
{
if((re=='n')||(re=='N'))
{
var=false;
}
else
{
printf("\n\n\t autre equation O/N ?: \n");
scanf ("%s",&re);
while((re!='o')&&(re!='O')&&(re!='n')&&(re!='N'))
{
printf("\n\n\t autre equation O/N ?: \n");
scanf ("%s",&re);
if((re=='n')||(re=='N'))
{
val=true;
}
}
}
}
}
return 0;
}
void rema(double *p)/*procedure de remplissage de de A par passage par adresse*/
{
char buf[32];
char bul[2]="0";
bool var;
var=true;
printf("\t\nVeuillez entrer le coefficient de A S.V.P\n");
scanf("%s",&buf); /*lecture du variable en tant que chaine de caractere*/
*p = atof(buf); /*fonction de conversion du caractere en float*/
while(var==true)
{
if (strcmp(buf, bul) == 0) /*comparaison du chaine avec la variable bul qui contient un zero de type char*/
{
printf("\tvous avez taper un zero\n"); /* les chaines sont identiques */
printf("\t\nVeuillez entrer le coefficient de A different de zero\n");
scanf("%s",&buf);
*p = atof(buf); /*fonction de conversion du caractere en float*/
var=true; /*variable booleene var fait que la boucle se repete tant que on donne une valeur de zero a A*/
}
else
{
if (((strcmp(buf, bul) != 0))&&(*p==0)) /*vue que la conversion des chaines caracteres en float donne zero on associe ces
deux conditions pour tomber sur le cas de saisie d'un caractere */
{
printf("\tvous avez taper un caractere\n"); var=true; /* les chaines buf et bul sont différentes */
printf("\t\nVeuillez entrer le coefficient de A S.V.P\n");
scanf("%s",&buf);
*p = atof(buf);
}
else
{
printf("\t vous avez taper un nombre valide\n"); /* saisie d'un nombre valide*/
var=false; /*var permet à ce niveau de sortir de la boucle while*/
}
}
}
}
void remb(double *y) /*procedure de remplissage de B*/
{
char buf[32] ,bul[2]="0"; /* meme logique que celle en dessus, sauf que la saisie d'un zero sera toleré*/
bool var;
var=true;
printf("\t\n Veuillez entrer le coefficient de B S.V.P\n");
scanf("%s",&buf);
*y = atof(buf);
while(var==true)
{
if (strcmp(buf, bul) == 0)
{
printf("\tvous avez taper un zero\n"); /* les chaines sont identiques */
var=false;
}
else
{
if (((strcmp(buf, bul) != 0))&&(*y==0))
{
printf("\tvous avez taper un caractere\n"); var=true;/* les chaines sont différentes */
printf("\t\nVeuillez entrer le coefficient de B S.V.P\n");
scanf("%s",&buf);
*y = atof(buf);
}
else
{
printf("\tvous avez taper un nombre valide\n");
var=false;}}}
}
void remc(double *z) /*procedure de remplissage de C*/
{
char buf[32], bul[2]="0"; /* meme logique que celle de remplissage de B*/
bool var;
var=true;
printf("\t\nVeuillez entrer le coefficient de C S.V.P\n");
scanf("%s",&buf);
*z = atof(buf);
while(var==true){
if (strcmp(buf, bul) == 0)
{
printf("\tvous avez taper un zero\n"); /* les chaines sont identiques */
var=false;
}
else
{
if (((strcmp(buf, bul) != 0))&&(*z==0))
{
printf("\tvous avez taper un caractere\n"); var=true; /* les chaines sont différentes */
printf("\t\nVeuillez entrer le coefficient de C S.V.P\n");
scanf("%s",&buf);
*z =atof(buf);
}
else
{
printf("\tvous avez taper un nombre valide\n");
var=false;}}}
}
void delta(double *a,double *b,double *c) /* procedure delta pour calculer le delta et ces racines et leurs angles*/
{
double delta,x0,x1,x2,u2,f1,f2;
double tab1[2];
double tab2[2];
delta=((*b)*(*b))-(4*(*a)*(*c));
if(*b!=0)
{
if(delta==0)
{
x0=(-(*b))/(2*(*a));
printf("\n L'equation\n %6.2fx*x+%6.2lfx+%6.2f = 0 ",*a,*b,*c);
printf("\n A UNE SEUL RACINE QUI EST %6.4f",x0);
}
else
{
if(delta<0)
{
delta=delta*(-1); /*delta multiplié par -1 pour pouvoir trouvé ces racines*/
tab1[1]=(-*b)/(2*(*a)); /*partie reele de x1*/
tab1[2]=(sqrt(delta))/(2*(*a)); /*partie imaginaire de x1*/
tab2[1]=(-*b)/(2*(*a)); /*partie reele de x2*/
tab2[2]=(-sqrt(delta))/(2*(*a));/*partie reele de x2*/
printf("\n L'equation\n %6.2fx2+%6.2fx+%6.2f = 0 ",*a,*b,*c);
printf("\n A DEUX RACINES COMPLEXES QUI SONT %6.3f+%6.4fj avec PHI1=%3.0f et\n %6.3f%6.4fj avec PHI2=%3.0f ",tab1[1],tab1[2],floor((atan(tab1[2]/tab1[1]))*(180/3.14)),tab2[1],tab2[2],ceil((atan(tab2[2]/tab2[1]))*(180/3.14)));/*fonction predefinie atan(imaginaire/reele) retourne le resultat de PHI*/
}
else
{
x1=(-(*b)+sqrt(delta))/(2*(*a)); /*racine reele de x1*/
x2=(-(*b)-sqrt(delta))/(2*(*a)); /*racine reele de x1*/
printf("\n L'equation\n %6.2fx2+%6.2fx+%6.2f = 0 ",*a,*b,*c);
printf("\n A DEUX RACINES REELLES QUI SONT %6.4f et %6.4f",x1,x2);
}
}
}
else
{
if(((*c)!=0)&&(*b==0)){ /*cas ou on a un b=0 */
u2=-(*c)/(*a);
if(u2>0){
f1=sqrt(u2); /* f1 racine reel*/
f2=-sqrt(u2); /* f2 racine reel*/
printf("\n L'equation\n %6.2fx*x + %6.2f =0 possede deux solutionx reelles %6.4f et %6.4f ",*a,*c,f1,f2);
}
else
{
u2=u2*(-1);
f1=sqrt(u2); /* f1 reel*/
f2=-sqrt(u2); /* f2 imaginaire*/
printf("\n L'equation\n %6.2fx*x + %6.2fx =0 possede deux solutionx complexes %3.0fi et %3.0fi ",*a,*c,f1,f2);
}
}
else
{
printf("\n L'equation\n %6.2fx*x + %fx + %f = 0 a pour solution 0",*a,*b,*c); /* cas ou a et b egals a zero*/
}
}
}
Historique
- 05 avril 2011 22:58:23 :
- ORTHOGRAPHE
- 05 avril 2011 22:58:37 :
- ORTHOGRAPHE
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Recherche : Résolution de systeme d'equation matricielle [ par julien81 ]
Bonjour tlm En fait cette année j'ai un sujet pour mon projet annuel c'est de faire le prog pour resoudre un systeme d'equation avec des matrice (dime
les fonctions et le Math [ par djamine ]
beh bonsoir les programmeurs j'ai une problemeje veux en utilisant la formuletan x=2t/1-(t au carré) avec t=tg x/2et le fait que si x est petit par ex
OpenGL -> Math [ par guiguikun ]
Pourquoi est-ce qu'en OpenGL l'axe Y est la hauteur alors qu'en math c'est la profondeur ?J'arrête pas de me tromper :(
libraire + math [ par TRAX44 ]
Boujour,je suis debutant é j'aurai besoin d'un simple petit exemple en C sa serai une libraire qui additionerai ddeux nombres de 25 chiffres Je c, c t
RichEdit (c++ / VC++ / sans MFC) [ par JMGR ]
J'ai un ptit controle RichEdit qui me sert pour un programme de chat et il accepte pas ma souris !Il plante dès que je la met dessus...(ahah...)Hem...
equation d'une droite [ par gagah1 ]
Quelqu'un pourrait m'aider à trouver l'equation d'une droite (à 3 dimensions) qui passe par un point A(a,b,c) et qui a un vecteur U(u,v,w). Je ne me r
AAIDE [ par thetrasherz ]
Bonjour, Je me présente :Je m'apelle Carl j'ai 14 Ans,je projette de faire Math Sup et Math Spe et ensuite une ecole d'ingénieur informaticien,Je m'in
equation [ par sorcier0011 ]
Voila j'aimerais bien faire un programme qui resout des equations à 2 inconnues. Mais je ne trouve pas la formule pour la resoudre; Est ce que qqn pou
URGENT: problème de math [ par Inconnus ]
Bonjour à tous.Voila on m'a donné un DM de math a faire pour le 03/05. Pourriez vous m'aidera le faire dimanche maximum. Je voudrais créer un prog pou
chaine->equation [ par MiTcH37 ]
salut,j'aimerais savoir quelle synthaxe utiliser pour transformer une chaine (qui contient une équation ex : "x=3*2*(y*cos(o))") en équation reconnue
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
MATRICE TEMPLATEMATRICE TEMPLATE par hjr2610
Cliquez pour lire la suite par hjr2610 RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|