Salut a quiconque sur le forum qui aimerait porter des corrections svp
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
#include<dos.h>
#define max 10
float A[max][max], B[max], X[max], T;
int i, j, k, l, n;
char choix;
/***************************************************************************
phase de lecture
***************************************************************************/
void GAUSS(){
do{
clrscr();
gotoxy(9,11); cout<<" Entrer la dimension des matrices formant le systeme : ";
cin>>n;
if((n<2)||(n>max)){
clrscr();
gotoxy(9,11); cout<<"\a Dimension invalide, celle-ci doit etre comprise entre 2 et "<<max<<".";
gotoxy(15,12); cout<<" SVP, Pressez 'ENTER' pour un autre essaie. ";
delay(1700);
// getch();
clrscr();
}
}
while((n<2)||(n>max));
clrscr();
delay(800);
cout<<"\n\tMAINTENANT, ENTRER LES ELEMENTS DANS L'ORDRE QUI SUIT.\n\n";
delay(800);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
cout<<"\tEntrer l'element "<<(i+1)<<"e ligne "<<(j+1)<<"e clonne de la matrice : ";
cin>>A[i][j];
}
cout<<endl<<"\tEntrer le "<<(i+1)<<"e element des termes constants : ";
cin>>B[i];
cout<<endl;
}
clrscr();
gotoxy(15,10);cout<<"\tVOICI LA MATRICE AUGMENTEE (A:B)"<<endl<<endl;
for(i=0;i<n;i++){
cout<<"\t\t\t";
for(j=0;j<n;j++)
cout<<setw(5)<<A[i][j];
cout<<setw(3)<<": "<<B[i];
cout<<endl;
}
cout<<"\n\tpressez une touche pour proc,der a la triangularisation de celle-ci,\n";
//cout<<"\n\tpuis appuyer sur cette touche pour prendre connaisance du resultat.\n\n";
getch();
/***************************************************************************
phase de la triangularisation
***************************************************************************/
for(k=0;k<n-1;k++){
if(A[k][k]==0){
l=k+1;
while((A[l][k]==0)&&(l<n))
l=l+1;
if(l<n){
for(j=0;j<n;j++){
T=A[k][j];
A[k][j]=A[l][j];
A[l][j]=T;
T=B[k];
B[k]=B[l];
B[l]=T;
}
}
else{ // ou if(l==n)
clrscr();
gotoxy(5,10); cout<<"\n\a ATTENTION!!! Certaines incompatibilit,s rend Impossible la triangularisation"<<endl;
getch();
}
}
else { //ou if(A[k][k]!=0)
for(i=k+1;i<n;i++){
for(j=k+1;j<n;j++)
A[i][j] = A[i][j] - ((A[i][k]*A[k][j])/A[k][k]) ;
B[i] = B[i] -((A[i][k]*B[k])/A[k][k]);
for(j=0;j<=k;j++)
A[i][j]=0;
}
}
}
if(l<n){
clrscr();
gotoxy(20,10); cout<<" VOICI LA MATRICE TRIANGULARISEE AINSI OBTENUE"<<endl<<endl;
for(i=0;i<n;i++){
//if(l==n) break;
cout<<"\t\t";
for(j=0;j<n;j++)
cout<<setw(10)<<A[i][j];
cout<<setw(10)<<" : "<<B[i];
cout<<"\n";
}
gotoxy(25,25); cout<<"Pressez une touche pour continuer";
getch();
}
/***************************************************************************
phase de traitement
***************************************************************************/
clrscr();
if(A[n-1][n-1]==0){
if(B[n-1]!=0){
gotoxy(10,10); cout<<"\n\t\tDesol,, le syst¦me n'admet pas de solution";
}
else{
gotoxy(10,10); cout<<"\n\t\tLe syst¦me admet une infinit, de solution";
}
}
else
{
X[n-1]=B[n-1]/A[n-1][n-1];
for(i=n-2;i>=0;i--){
float s=0;
for(k=i+1;k<n;k++)
s=s+(A[i][k]*X[k]);
X[i]=(B[i]-s)/A[i][i];
}
for(i=0;i<8;i++){
clrscr();
gotoxy(25,i); cout<<" Le systeme a pour solution :"<<endl<<endl;
delay(80);
}
for(i=0;i<n;i++)
cout<<setw(25)<<setprecision(3)<<"\t\tX"<<(i+1)<<" = "<<X[i]<<endl;
}
getch();
}
void intro()
{
clrscr();
cout<<"\n\n\n\n\n\t\t\tBIENVENUE DANS LE PROGRAMME";
cout<<"\n\n\t\tCher utilisateur,\n";
cout<<"\t Dans le soucis de vous faciliter les taches\n";
cout<<"\t dans la resolution d'un systeme de n equation\n";
cout<<"\t . n inconnue qui est presenter sur la forme de:\n";
cout<<"\t\t\t [A].[x]= [b]\n\n";
cout<<"\t Cet programme est construit juste pour permettre,\n";
cout<<"\t en utilisant la methode de Gauss suite . n-1 iteration.\n\n";
cout<<"\t Cette methode consiste tout d'abord . triangulariser\n";
cout<<"\t la matrice de [A] augementer de [b] puis trouver\n";
cout<<"\t l'ensemble des solutions du systeme ainsi obtenu";
getch();
}
void MENU()
{
clrscr();
textbackground(MAGENTA);
gotoxy(10,4); cout<<"I-> INTRODUCTION";
gotoxy(10,6); cout<<"G-> METHODE DE GAUSS";
gotoxy(10,8); cout<<"Q-> QUITTER LE PROGRAMME";
gotoxy(15,9); cout<<"FAITES UN CHOIX : ";
choix=getch();
switch(choix){
case 'i':
case 'I':
{
intro();
break;
}
case 'g':
case 'G':
{
GAUSS();
break;
}
case 'q':
case 'Q':
{
break;
}
default:
{
gotoxy(10,22); cout<<"Mauvais choix";
getch();
}
}
}
main()
{
do{
MENU();
} while((choix!='q')&&(choix!='Q'));
}