# include <iostream.h> # include <stdlib.h> # include <stdio.h> # include <conio.h> # include <math.h> const int max_size=5; int n=0; int iterations=0; char Diagonally_dominant=NULL; long double input[max_size][max_size]={0}; long double previous_output[max_size]={0}; long double output[max_size]={0}; void show_screen( ); void clear_screen( ); void get_size_of_linear_equations( ); void show_input(const int,const int); void get_input_linear_equation( ); void sort_system_of_linear_equations( ); void apply_guass_seidel_iterative_method( ); void show_result( ); int main( ) { clrscr( ); textmode(C4350); show_screen( ); get_size_of_linear_equations( ); get_input_linear_equation( ); if(Diagonally_dominant==\'Y\' || Diagonally_dominant==\'y\') sort_system_of_linear_equations( ); apply_guass_seidel_iterative_method( ); show_result( ); getch( ); return 0; } //-------------------------- show_screen( ) ---------------------------// void show_screen( ) { cprintf(\"\\n********************************************************************************\"); cprintf(\"**********************- -**********************\"); cprintf(\"*---------------------- \"); textbackground(1); cprintf(\" Guass-Seidel\'s Itrative 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( ) { textbackground(8); for(int count=0;count<37;count++) { gotoxy(3,8+count); cout<<\" \"; } gotoxy(1,2); } //------------------ get_size_of_linear_equations( ) ------------------// void get_size_of_linear_equations( ) { do { clear_screen( ); gotoxy(38,11); cout<<\"[ Maximum size = 4 ]\"; gotoxy(4,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(4,15); cout<<\"Enter the number of iterations that you want to perform = \"; cin>>iterations; gotoxy(4,18); cout<<\"Do you want to make the System Diagonally Dominant : (Y/N) ? : \"; cin>>Diagonally_dominant; gotoxy(1,2); } //------------------ show_input(const int,const int) ------------------// void show_input(const int x,const int y) { int counter=0; int number_of_inputs=((x*n)+y+x); for(int count_1=0;count_1<n;count_1++) { gotoxy(4,(17+(count_1*2))); cout<<\" \"; gotoxy(4,(17+(count_1*2))); 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))); gotoxy(wherex( ),(17+(count_1*2))); cprintf(\" \"); if(count_2==n) gotoxy((wherex( )-5),(17+(count_1*2))); gotoxy((wherex( )-6),(17+(count_1*2))); if(counter<=number_of_inputs && counter!=-1) { if(count_2==n) { cout<<\" = \"; cout<<input[count_1][count_2]; } else if(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); } else if(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<<\" + \"; else if(count_2<(n-1)) cout<<\" - \"; counter++; } } } //-------------------- get_input_linear_equation( ) -------------------// void get_input_linear_equation( ) { clear_screen( ); gotoxy(4,9); cout<<\"Size of the System of Linear Equations = n = \"<<n; gotoxy(4,13); cout<<\"System of Linear Equations :\"; gotoxy(4,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(4,35); cout<<\" \"; gotoxy(4,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( ) ----------------// void sort_system_of_linear_equations( ) { for(int count_1=0;count_1<(n-1);count_1++) { for(int count_2=count_1;count_2<(n-1);count_2++) { for(int count_3=count_1;count_3<(n-1);count_3++) { long double temp[max_size]={0}; if(fabs(input[count_3][count_1])< fabs(input[(count_3+1)][count_1])) { for(int count_4=0;count_4<=n;count_4++) temp[count_4]=input[count_3][count_4]; for(int count_5=0;count_5<=n;count_5++) input[count_3][count_5]= input[(count_3+1)][count_5]; for(int count_6=0;count_6<=n;count_6++) input[(count_3+1)][count_6]=temp[count_6]; } } } } } //--------------- apply_guass_seidel_iterative_method( ) --------------// void apply_guass_seidel_iterative_method( ) { clear_screen( ); gotoxy(4,10); cout<<\"Solution :\"; gotoxy(4,11); cout<<\"ÍÍÍÍÍÍÍÍÍÍ\"; if(n==1) { gotoxy(4,13); cout<<\"ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\"; gotoxy(4,14); cout<<\"³ n ³ X1 ³\"; gotoxy(4,15); cout<<\"ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\"; gotoxy(4,16); cout<<\"³ ³ ³\"; } else if(n==2) { gotoxy(4,13); cout<<\"ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\"; gotoxy(4,14); cout<<\"³ n ³ X1 ³ X2 ³\"; gotoxy(4,15); cout<<\"ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\"; gotoxy(4,16); cout<<\"³ ³ ³ ³\"; } else if(n==3) { gotoxy(4,13); cout<<\"ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\"; gotoxy(4,14); cout<<\"³ n ³ X1 ³ X2 ³ X3 ³\"; gotoxy(4,15); cout<<\"ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\"; gotoxy(4,16); cout<<\"³ ³ ³ ³ ³\"; } else if(n==4) { gotoxy(4,13); cout<<\"ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\"; gotoxy(4,14); cout<<\"³ n ³ X1 ³ X2 ³ X3 ³ X4 ³\"; gotoxy(4,15); cout<<\"ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\"; gotoxy(4,16); cout<<\"³ ³ ³ ³ ³ ³\"; } for(int count_1=0;count_1<n;count_1++) { long double temp[max_size]={0}; for(int count_2=0;count_2<=n;count_2++) { if(count_2!=count_1) temp[count_2]=(input[count_1][count_2]/input[count_1][count_1]); } for(int count_3=0;count_3<=n;count_3++) input[count_1][count_3]=temp[count_3]; } for(int count_4=0;count_4<n;count_4++) { for(int count_5=0;count_5<n;count_5++) input[count_4][count_5]*=-1; } int x_cord=4; int y_cord=17; for(int count_6=0;count_6<=iterations;count_6++) { if(n==1) { gotoxy(x_cord,y_cord); cout<<\"³ ³ ³\"; gotoxy(x_cord,(y_cord+1)); cout<<\"³ ³ ³\"; } else if(n==2) { gotoxy(x_cord,y_cord); cout<<\"³ ³ ³ ³\"; gotoxy(x_cord,(y_cord+1)); cout<<\"³ ³ ³ ³\"; } else if(n==3) { gotoxy(x_cord,y_cord); cout<<\"³ ³ ³ ³ ³\"; gotoxy(x_cord,(y_cord+1)); cout<<\"³ ³ ³ ³ ³\"; } else if(n==4) { gotoxy(x_cord,y_cord); cout<<\"³ ³ ³ ³ ³ ³\"; gotoxy(x_cord,(y_cord+1)); cout<<\"³ ³ ³ ³ ³ ³\"; } gotoxy((x_cord+3),y_cord); cout<<count_6; gotoxy((x_cord+10),y_cord); cout<<output[0]; if(n>=2) { gotoxy((x_cord+26),y_cord); cout<<output[1]; } if(n>=3) { gotoxy((x_cord+42),y_cord); cout<<output[2]; } if(n>=4) { gotoxy((x_cord+58),y_cord); cout<<output[3]; } for(int count_7=0;count_7<n;count_7++) { output[count_7]=0; for(int count_8=0;count_8<n;count_8++) { if(count_8!=count_7) output[count_7]+=(input[count_7][count_8]*previous_output[count_8]); } output[count_7]+=input[count_7][count_8]; previous_output[count_7]=output[count_7]; } y_cord+=2; if((count_6%12)==0 && count_6<iterations && count_6>0) { y_cord=17; gotoxy(30,44); cout<<\"Press any key to continue...\"; getch( ); for(int count_9=1;count_9<25;count_9++) { gotoxy(3,(16+count_9)); cout<<\" \"; } } } if(n==1) { gotoxy(x_cord,y_cord); cout<<\"ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\"; } else if(n==2) { gotoxy(x_cord,y_cord); cout<<\"ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\"; } else if(n==3) { gotoxy(x_cord,y_cord); cout<<\"ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\"; } else if(n==4) { gotoxy(x_cord,y_cord); cout<<\"ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\"; } gotoxy(30,44); cout<<\"Press any key to continue...\"; getch( ); } //----------------------------- show_result( ) ------------------------// void show_result( ) { clear_screen( ); gotoxy(4,9); cout<<\"Gauss-Seidel System of Linear Equations :\"; gotoxy(4,10); cout<<\"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ\"; for(int count_1=0;count_1<n;count_1++) { gotoxy(4,(13+(count_1*3))); cout<<\"x\"<<(count_1+1); gotoxy((wherex( )-1),(wherey( )-1)); cout<<\"(k+1)\"; gotoxy((wherex( )-3),(wherey( )+1)); cout<<\" = \"; for(int count_2=0;count_2<=n;count_2++) { gotoxy(wherex( ),(13+(count_1*3))); if(count_2!=count_1 && count_2<n) { if(count_2!=0) cout<<fabs(input[count_1][count_2])<<\" x\"<<(count_2+1); else cout<<input[count_1][count_2]<<\" x\"<<(count_2+1); gotoxy((wherex( )-1),(wherey( )-1)); if(count_2<count_1) cout<<\"(k+1)\"; else cout<<\"(k)\"; gotoxy((wherex( )-1),(wherey( )+1)); if(input[count_1][(count_2+1)]>=0) cout<<\" + \"; else cout<<\" - \"; } else if(count_2!=count_1) cout<<fabs(input[count_1][count_2]); } } if(Diagonally_dominant==\'Y\' || Diagonally_dominant==\'y\') { gotoxy(4,26); cout<<\"Note: The given System of Linear Equations is solved by making it\"; gotoxy(10,28); cout<<\"Diagonally Dominant.\"; } gotoxy(4,31); cout<<\"Result of Given System of Linear Equations :\"; gotoxy(4,32); cout<<\"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ\"; for(int count_3=0;count_3<n;count_3++) { gotoxy(8,(34+count_3+count_3)); cout<<\"x\"<<(count_3+1)<<\" = \"<<output[count_3]; } gotoxy(4,(36+count_3+count_3)); cout<<\"* Number of Iterations for the above result = \"<<iterations<<\".\"; gotoxy(1,2); }