begin process at 2013 05 19 20:49:48
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Turbo Pascal

 > RÉSOLUTION D'UNE ÉQUATION DE DEUXIÈME DEGRÉ

RÉSOLUTION D'UNE ÉQUATION DE DEUXIÈME DEGRÉ


 Information sur la source

Note :
Aucune note
Catégorie :Turbo Pascal Niveau :Débutant Date de création :29/04/2004 Vu / téléchargé :16 133 / 334

Auteur : Abdellah81

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Ce programme sert a résoudre une équation de deuxième degré.
En utilisant une interface simple.

Source

  • {*****************************}
  • { UDL }
  • { Facultee des sciences }
  • { Departement d'informatique }
  • { El Antri Abdellah }
  • { Email: El_Emir_2002@yahoo.fr }
  • { 19/04/2004 02:30 }
  • {Compiler avec Tp3 }
  • {*****************************}
  • {Ce programme resout des equations de deuxieme degre dans R }
  • {avec des coefficients entieres }
  • {Ce programme est devlopper pour des raisons pedagogiques }
  • {Il n'est ni optimale(gestion des couleurs), ni efficace }
  • { (pas de coefficients reels) }
  • {
  • Remarque:
  • Pour les nombres le programme va automatiquement ajoute des parentheses
  • }
  • {N'hesiter pas a m'appeler pour tout vos questions ou sugestions}
  • uses Dos, Crt;
  • var A,B,C: LongInt ; { Coeficients de l'equation }
  • var D,X1,X2: real ; { D pour delta X1,X2 pour les solutions}
  • {***************************************************}
  • procedure couleurs(Text,Fond:Integer);
  • begin
  • Textcolor(Text);
  • Textbackground(Fond);
  • end;
  • {***************************************************}
  • {***************************************************}
  • procedure vide(X,Y: LongInt);
  • begin
  • gotoxy(X,Y);
  • textcolor (RED);
  • textbackground (YELLOW);
  • write(' ');
  • textcolor (WHITE);
  • textbackground (BLACK);
  • end;
  • {***************************************************}
  • {***************************************************}
  • procedure aread(var val:Longint);
  • var signe : boolean;
  • var cpt: Integer;
  • var c,ancien_c: char ; { En va lire les coefficienta par caractere(c)}
  • { ancien_c est utilise en cas de supression }
  • { pour la reevaluation de l'entier lu }
  • var sauver_coord_x: Integer; { pour sauver la position x, lors l'affichage }
  • { de l'erreur entier trop grand }
  • begin
  • cpt := 0;
  • val := 0;
  • signe := false ;
  • Repeat
  • begin
  • ancien_c := c;
  • c := ReadKey;
  • if(cpt <= 8) then { Les coefficients doivent etre moins de 9 chiffres}
  • begin
  • if ( (ord(c) >= 48) and (ord(c) <= 57) ) then
  • {On accepte que les chiffres}
  • begin
  • couleurs(RED,YELLOW);
  • write(c);
  • couleurs(WHITE,BLACK);
  • val := val*10 + (ord(c)-48);
  • cpt := cpt + 1;
  • end
  • else if ((ord(c) = 8) and ((cpt > 0) or ((cpt = 0) and (signe))) ) then
  • { Pour la supression(8 est le code ascii de Backspace)}
  • begin
  • if(cpt > 0) then
  • begin
  • gotoxy(wherex - 1,wherey);
  • couleurs(RED,YELLOW);
  • write(' ');
  • couleurs(WHITE,BLACK);
  • gotoxy(wherex - 1,wherey);
  • val := val - ord(ancien_c)+48;
  • val := val Div 10;
  • cpt := cpt - 1;
  • end;
  • if((cpt = 0) and signe) then
  • {Pour effacer '(-'}
  • begin
  • signe := false;
  • gotoxy(wherex - 2,wherey);
  • couleurs(RED,YELLOW);
  • write(' ');
  • gotoxy(wherex - 2,wherey);
  • couleurs(WHITE,BLACK);
  • end;
  • end
  • else if((ord(c) = 13) and (cpt = 0)) then
  • { valeur par defaut des coefficients = 0}
  • begin
  • couleurs(RED,YELLOW);
  • write('0');
  • couleurs(WHITE,BLACK);
  • val := 0;
  • end
  • else if( (c = '-') and (cpt = 0) ) then
  • { pour le signe}
  • begin
  • if(signe) then
  • begin
  • couleurs(RED,YELLOW);
  • gotoxy(wherex - 2,wherey);
  • write(' ');
  • gotoxy(wherex - 2,wherey);
  • couleurs(WHITE,BLACK);
  • end
  • else
  • begin
  • couleurs(RED,YELLOW);
  • write('(-');
  • end;
  • couleurs(WHITE,BLACK);
  • signe := not signe;
  • end;
  • end
  • else
  • {Plus que 9 chiffres}
  • begin
  • sauver_coord_x := wherex;
  • textcolor(BLUE);
  • gotoxy(30,20);
  • writeln('Entier trop grand');
  • delay(10000);
  • textcolor(BLACK);
  • gotoxy(30,20);
  • writeln('Entier trop grand');
  • textcolor(WHITE);
  • gotoxy(sauver_coord_x,10);
  • end;
  • end;
  • until (ord(c) = 13); { Jusqu' a la frappe de la touche entrer}
  • if(signe) then
  • begin
  • val := -val;
  • couleurs(RED,YELLOW);
  • write(')');
  • couleurs(WHITE,BLACK);
  • end;
  • end;
  • {***************************************************}
  • {*************** Prog principal ****************}
  • begin
  • clrscr;
  • vide(1,10);
  • write('Xý +');
  • vide(18,10);
  • write('X +');
  • vide(34,10);
  • write(' = 0');
  • gotoxy(1,10);
  • aread(A);
  • gotoxy(18,10);
  • aread(B);
  • gotoxy(34,10);
  • aread(C);
  • clrscr;
  • if( (A = 0) and (B = 0) and (C = 0)) then
  • begin
  • writeln('L''ensemble des solutions est: R');
  • exit;
  • end
  • else if((A = 0) and (B = 0) and (C <> 0)) then
  • begin
  • writeln('Contradictoire!!!');
  • exit;
  • end;
  • D := sqr(B) - 4*A*C;
  • if(D = 0) then
  • begin
  • writeln('Delta = ',d);
  • writeln('Puisque Delta = 0 alors l''equation admet une seul solution:',-B/2*A);
  • end
  • else
  • if(D > 0) then
  • begin
  • writeln('Delta = ',d);
  • writeln('Puisque Delta > 0 alors l''equation admet deux solutions:');
  • X1 := (-B-sqr(D))/2*A;
  • X2 := (-B-sqr(D))/2*A;
  • writeln('X1 = ',X1 );
  • writeln('X2 = ',X2 );
  • end
  • else
  • begin
  • writeln('Delta = ',d);
  • writeln('Puisque Delta < 0 alors: l''equation n''admet aucune solution dans R');
  • end;
  • readln;
  • end.
{*****************************}
{ UDL                                            }
{ Facultee des sciences                    }
{ Departement d'informatique           }
{ El Antri Abdellah                            }
{ Email: El_Emir_2002@yahoo.fr        }
{ 19/04/2004    02:30                     }
{Compiler avec Tp3                         }
{*****************************}

{Ce programme resout des equations de deuxieme degre dans R }
{avec des coefficients entieres                             }
{Ce programme est devlopper pour des raisons pedagogiques   }
{Il n'est ni optimale(gestion des couleurs), ni efficace    }
{ (pas de coefficients reels)                               }

{
Remarque:
Pour les nombres le programme va automatiquement ajoute des parentheses
}

{N'hesiter pas a m'appeler pour tout vos questions ou sugestions}



uses Dos, Crt;

var A,B,C: LongInt ;  { Coeficients de l'equation            }
var D,X1,X2: real ;  { D pour delta X1,X2 pour les solutions}

{***************************************************}
procedure couleurs(Text,Fond:Integer);
begin
Textcolor(Text);
Textbackground(Fond);
end;

{***************************************************}

{***************************************************}
procedure vide(X,Y: LongInt);
begin
gotoxy(X,Y);
textcolor (RED);
textbackground (YELLOW);
write('             ');
textcolor (WHITE);
textbackground (BLACK);
end;
{***************************************************}

{***************************************************}
procedure aread(var val:Longint);
var signe : boolean;
var cpt: Integer;
var c,ancien_c: char ;       { En va lire les coefficienta par caractere(c)}
                             { ancien_c est utilise en cas de supression   }
                             { pour la reevaluation de l'entier lu         }
var sauver_coord_x: Integer; { pour sauver la position x, lors l'affichage }
                             { de l'erreur entier trop grand               }
begin
cpt := 0;
val := 0;
signe := false ;
Repeat
  begin
  ancien_c := c;
  c := ReadKey;
  if(cpt <= 8) then    { Les coefficients doivent etre moins de 9 chiffres}
     begin
     if ( (ord(c) >= 48) and (ord(c) <= 57)  ) then 
            {On accepte que les chiffres}
        begin
        couleurs(RED,YELLOW);
        write(c);
        couleurs(WHITE,BLACK);
        val := val*10 + (ord(c)-48);
        cpt := cpt + 1;
        end
        else if ((ord(c) = 8) and ((cpt > 0) or ((cpt = 0) and (signe))) ) then
                 { Pour la supression(8 est le code ascii de Backspace)}
            begin
            if(cpt > 0) then
            begin
            gotoxy(wherex - 1,wherey);
            couleurs(RED,YELLOW);
            write(' ');
            couleurs(WHITE,BLACK);
            gotoxy(wherex - 1,wherey);
            val := val - ord(ancien_c)+48;
            val := val Div 10;
            cpt := cpt - 1;
            end;
            if((cpt = 0) and signe) then
               {Pour effacer '(-'}
               begin
               signe := false;
               gotoxy(wherex - 2,wherey);
               couleurs(RED,YELLOW);
               write('  ');
               gotoxy(wherex - 2,wherey);
               couleurs(WHITE,BLACK);
               end;
            end
            else if((ord(c) = 13) and (cpt = 0)) then
                    { valeur par defaut des coefficients = 0}
                    begin
                    couleurs(RED,YELLOW);
                    write('0');
                    couleurs(WHITE,BLACK);
                    val := 0;
                    end
                    else if( (c = '-') and (cpt = 0) ) then
                            { pour le signe}
                            begin
                            if(signe) then
                               begin
                               couleurs(RED,YELLOW);
                               gotoxy(wherex - 2,wherey);
                               write('  ');
                               gotoxy(wherex - 2,wherey);
                               couleurs(WHITE,BLACK);
                               end
                               else
                                  begin
                                  couleurs(RED,YELLOW);
                                  write('(-');
                                  end;
                            couleurs(WHITE,BLACK);
                            signe := not signe;
                            end;
     end
     else
         {Plus que 9 chiffres}
          begin
          sauver_coord_x := wherex;
          textcolor(BLUE);
          gotoxy(30,20);
          writeln('Entier trop grand');
          delay(10000);
          textcolor(BLACK);
          gotoxy(30,20);
          writeln('Entier trop grand');
          textcolor(WHITE);
          gotoxy(sauver_coord_x,10);
          end;
  end;
  until (ord(c) = 13);   { Jusqu' a la frappe de la touche entrer}
if(signe) then
  begin
  val := -val;
  couleurs(RED,YELLOW);
  write(')');
  couleurs(WHITE,BLACK);
  end;
end;
{***************************************************}

{***************   Prog principal   ****************}
begin

clrscr;

vide(1,10);
write('Xý +');
vide(18,10);
write('X +');
vide(34,10);
write(' = 0');
gotoxy(1,10);
aread(A);
gotoxy(18,10);
aread(B);
gotoxy(34,10);
aread(C);
clrscr;
if( (A = 0) and (B = 0) and (C = 0)) then
   begin
   writeln('L''ensemble des solutions est: R');
   exit;
   end
   else if((A = 0) and (B = 0) and (C <> 0)) then
          begin
          writeln('Contradictoire!!!');
          exit;
          end;

D := sqr(B) - 4*A*C;
if(D = 0) then
   begin
   writeln('Delta = ',d);
   writeln('Puisque Delta = 0 alors l''equation admet une seul solution:',-B/2*A);
   end
  else
       if(D > 0) then
          begin
          writeln('Delta = ',d);
          writeln('Puisque Delta > 0 alors l''equation admet deux solutions:');
          X1 := (-B-sqr(D))/2*A;
          X2 := (-B-sqr(D))/2*A;
          writeln('X1 = ',X1 );
          writeln('X2 = ',X2 );
          end
         else
             begin
             writeln('Delta = ',d);
             writeln('Puisque Delta < 0 alors: l''equation n''admet aucune solution dans R');
             end;
readln;
end.

 Conclusion

La source est trés claire.
Pour tout vos questions, suggestions contacter moi sur el_emir_2002@yahoo.fr

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip CONVERTIR NOMBRE EN CARACTERES par 520550
Source avec Zip JEU DE CULTURE par sliven
CONVERSION D'UN NOMBRE COMPRIS 0 ET 999999999999999999 (18 C... par Hror
JEU DE BOULE par abdellahsaida
Source avec Zip ALGORITHME DU JEU TETRIS par darrylsite

Commentaires et avis

Commentaire de Delphiprog le 30/04/2004 18:17:41 administrateur CS

En application console sous Delphi et sans la gestion des couleurs (;o), voir :
http://www.delphifr.com/code.aspx?ID=21453

Commentaire de nethacker le 05/08/2007 18:21:58

oui pourquoi alourdir avec tout ces couleurs ^^ 3 ans apres !!!

Commentaire de feugana1 le 23/04/2010 12:52:28

salut tu aurais pu faire cela en utilisant les test ca aurait ete moi long et moins complexe dans l'ecriture

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,604 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales