# include <iostream.h>
# include <stdlib.h>
# include <stdio.h>
# include <conio.h>
# include <math.h>
constint max_size=5;
int n=0;
char Partial_pivoting=NULL;
longdouble input[max_size][max_size]={0};
longdouble output[max_size]={0};
void show_screen( );
void clear_screen( );
void get_size_of_linear_equations( );
void show_input(constint,constint,constint=0);
void get_input_linear_equation( );
void sort_system_of_linear_equations(constint);
void apply_gaussian_method( );
void generate_result( );
void show_result( );
int main( )
{
clrscr( );
textmode(C4350);
show_screen( );
get_size_of_linear_equations( );
get_input_linear_equation( );
apply_gaussian_method( );
generate_result( );
show_result( );
getch( );
return 0;
}
/*************************************************************************///-------------------------- show_screen( ) ---------------------------///*************************************************************************/void show_screen( )
{
cprintf("\n********************************************************************************");
cprintf("***********************- -************************");
cprintf("*----------------------- ");
textbackground(1);
cprintf(" Gaussian Elimination Method ");
textbackground(8);
cprintf(" ------------------------*");
cprintf("*-*********************- -**********************-*");
cprintf("*-****************************************************************************-*");
for(int count=0;count<42;count++)
cprintf("*-* *-*");
gotoxy(1,46);
cprintf("*-****************************************************************************-*");
cprintf("*------------------------------------------------------------------------------*");
cprintf("********************************************************************************");
gotoxy(1,2);
}
/*************************************************************************///------------------------- clear_screen( ) ---------------------------///*************************************************************************/void clear_screen( )
{
for(int count=0;count<37;count++)
{
gotoxy(5,8+count);
cout<<" ";
}
gotoxy(1,2);
}
/*************************************************************************///------------------ get_size_of_linear_equations( ) ------------------///*************************************************************************/void get_size_of_linear_equations( )
{
do
{
clear_screen( );
gotoxy(40,11);
cout<<"[ Maximum size = 4 ]";
gotoxy(6,9);
cout<<"Enter the size of the System of Linear Equations = n = ";
cin>>n;
if(n<=0 || n>max_size)
{
gotoxy(12,25);
cout<<"Error : Wrong Input. Press <Esc> to exit or any other key";
gotoxy(12,26);
cout<<" to try again.";
n=int(getche( ));
if(n==27)
exit(0);
}
}
while(n<=0 || n>max_size);
gotoxy(6,15);
cout<<"Do you want to use Partial Pivoting : (Y/N) ? : ";
cin>>Partial_pivoting;
gotoxy(1,2);
}
/*************************************************************************///------------- show_input(const int,const int,const int) -------------///*************************************************************************/void show_input(constint x,constint y,constint y_cord)
{
int counter=0;
int number_of_inputs=((x*n)+y+x);
for(int count_1=0;count_1<n;count_1++)
{
gotoxy(6,(17+(count_1*2)+y_cord));
cout<<" ";
gotoxy(6,(17+(count_1*2)+y_cord));
for(int count_2=0;count_2<=n;count_2++)
{
if(counter==(number_of_inputs+1))
textbackground(12);
else
textbackground(8);
if(count_2==n)
gotoxy((wherex( )+5),(17+(count_1*2)+y_cord));
gotoxy(wherex( ),(17+(count_1*2)+y_cord));
cprintf(" ");
if(count_2==n)
gotoxy((wherex( )-5),(17+(count_1*2)+y_cord));
gotoxy((wherex( )-6),(17+(count_1*2)+y_cord));
if(counter<=number_of_inputs && counter!=-1)
{
if(count_2==n)
{
cout<<" = ";
cout<<input[count_1][count_2];
}
elseif(count_2==0)
cout<<input[count_1][count_2]<<" x"<<(count_2+1);
else
cout<<fabs(input[count_1][count_2])<<" x"<<(count_2+1);
}
elseif(count_2==n)
cout<<" = b"<<(count_1+1);
else
cout<<"a"<<(count_1+1)<<(count_2+1)<<" x"<<(count_2+1);
if(count_2<(n-1) && input[count_1][(count_2+1)]>=0)
cout<<" + ";
elseif(count_2<(n-1))
cout<<" - ";
counter++;
}
}
}
/*************************************************************************///-------------------- get_input_linear_equation( ) -------------------///*************************************************************************/void get_input_linear_equation( )
{
clear_screen( );
gotoxy(6,9);
cout<<"Size of the System of Linear Equations = n = "<<n;
gotoxy(6,13);
cout<<"System of Linear Equations :";
gotoxy(6,14);
cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ";
show_input(0,-1);
for(int count_1=0;count_1<n;count_1++)
{
for(int count_2=0;count_2<=n;count_2++)
{
gotoxy(5,35);
cout<<" ";
gotoxy(6,35);
if(count_2<n)
cout<<"Enter the value of a"<<(count_1+1)<<(count_2+1)<<" = ";
else
cout<<"Enter the value of b"<<(count_1+1)<<" = ";
cin>>input[count_1][count_2];
show_input(count_1,count_2);
}
}
}
/*************************************************************************///------------- sort_system_of_linear_equations(const int) ------------///*************************************************************************/void sort_system_of_linear_equations(constint start_position)
{
for(int count_1=start_position;count_1<(n-1);count_1++)
{
for(int count_2=start_position;count_2<(n-1);count_2++)
{
longdouble temp[max_size]={0};
if(fabs(input[count_2][start_position])<fabs(input[(count_2+1)][start_position]))
{
for(int count_3=0;count_3<=n;count_3++)
temp[count_3]=input[count_2][count_3];
for(int count_4=0;count_4<=n;count_4++)
input[count_2][count_4]=input[(count_2+1)][count_4];
for(int count_5=0;count_5<=n;count_5++)
input[(count_2+1)][count_5]=temp[count_5];
}
}
}
}
/*************************************************************************///----------------------- apply_gaussian_method( ) --------------------///*************************************************************************/void apply_gaussian_method( )
{
for(int count_1=0;count_1<(n-1);count_1++)
{
if(Partial_pivoting=='Y' || Partial_pivoting=='y')
sort_system_of_linear_equations(count_1);
for(int count_2=(count_1+1);count_2<n;count_2++)
{
longdouble multiplier=
(input[count_2][count_1]/input[count_1][count_1]);
for(int count_3=0;count_3<=n;count_3++)
{
longdouble temp=(input[count_1][count_3]*multiplier);
input[count_2][count_3]=(input[count_2][count_3]-temp);
}
}
}
}
/*************************************************************************///------------------------ generate_result( ) -------------------------///*************************************************************************/void generate_result( )
{
for(int count_1=(n-1);count_1>=0;count_1--)
{
output[count_1]=input[count_1][n];
for(int count_2=(n-1);count_2>count_1;count_2--)
input[count_1][count_2]=(input[count_1][count_2]*output[count_2]);
for(int count_3=(n-1);count_3>count_1;count_3--)
output[count_1]-=input[count_1][count_3];
output[count_1]/=input[count_1][count_1];
}
}
/*************************************************************************///----------------------------- show_result( ) ------------------------///*************************************************************************/void show_result( )
{
clear_screen( );
gotoxy(6,10);
cout<<"Solved System of Linear Equations :";
gotoxy(6,11);
cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ";
show_input((n-1),n,-4);
gotoxy(6,26);
cout<<"Result of Given System of Linear Equations :";
gotoxy(6,27);
cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ";
for(int count=0;count<n;count++)
{
gotoxy(10,(29+count+count));
cout<<"x"<<(count+1)<<" = "<<output[count];
}
if(Partial_pivoting=='Y' || Partial_pivoting=='y')
{
gotoxy(6,41);
cout<<"Note : The given System of Linear Equations is solved by using";
gotoxy(6,43);
cout<<" Partial Pivoting.";
}
gotoxy(1,2);
}