Gauss Elimination method in C language using Lower triangular matrix

This is a simple C language program that calculates solution of n-linear equations using Non-pivotal Gauss Elimination method. It uses lower triangular matrix to do so, for upper triangular matrix visit here.

#include<stdio.h> #include<conio.h> float matrix[10][10], m, temp[10]; int i, j, k, n; void lower_traingularisation() { for (i=n-1; i>0; i--) for (j=i-1; j>=0; j--) { m = matrix[j][i]/matrix[i][i]; for (k=0; k<n+1; k++) { matrix[j][k] = matrix[j][k]-(m*matrix[i][k]); } } } //lower_traingularisation void back_subsitution() { for (i=0; i<n; i++) { m = matrix[i][n]; for (j=0; j<i; j++) m = m - temp[j] * matrix[i][j]; temp[i] = m/matrix[i][i]; printf("\n x%d => %f", i+1, temp[i]); } } // back_subsitution void main() { printf("Enter number. of variables :: "); scanf("%d", &n); printf("Enter the augmented matrix: \n"); for (i=0; i<n; i++) for (j=0; j<n+1; j++) scanf("%f", &matrix[i][j]); lower_traingularisation(); printf("The lower traingular matrix is : \n"); for (i=0; i<n; i++) { for (j=0; j<n+1; j++) printf("%f \t", matrix[i][j]); printf("\n"); } printf("The required result is : \n"); back_subsitution(); getch(); } // main

Gauss Elimination method for solving n-linear equations in C language

This is a simple C language program that calculates solution of n-linear equations using Non-pivotal Gauss Elimination method. It uses upper triangular matrix to do so, for solution using lower triangular matrix visit here.

#include<stdio.h> #include<conio.h> float matrix[10][10], m, temp[10]; int i, j, k, n; void upper_triangularization() { for (i=0; i<n-1; i++) for (j=i+1; j<n; j++) { m = matrix[j][i]/matrix[i][i]; for (k=0; k<n+1; k++) { matrix[j][k] = matrix[j][k]-(m*matrix[i][k]); } } } //upper_traingulisation void back_subsitution() { for (i=n-1; i>=0; i--) { m = matrix[i][n]; for (j=n-1; j>i; j--) m = m - temp[n-j] * matrix[i][j]; temp[n-i] = m/matrix[i][i]; printf("\n x%d => %f", i+1, temp[n-i]); } } // back_subsitution void main() { printf("Enter number. of variables :: "); scanf("%d", &n); printf("Enter the augmented matrix: \n"); for (i=0; i<n; i++) for (j=0; j<n+1; j++) scanf("%f", &matrix[i][j]); upper_triangularization(); printf("The upper traingular matrix is : \n"); for (i=0; i<n; i++) { for (j=0; j<n+1; j++) printf("%f \t", matrix[i][j]); printf("\n"); } printf("The required result is : \n"); back_subsitution(); getch(); } // main

Insertion And Deletion Operation Over Multiple Queue In C language

A simple C language program to implement multiple queues in a single dimension array.
This is a revised version of Insertion And Deletion Operation Over Multiple Queue | multiple queue in data structure.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 
#include<stdio.h> #include<conio.h> # define max 20   int insq (int queue[max], int qno, int rear[], int limit[], int *data) { if (rear[qno] == limit[qno]) return(-1); else { rear[qno]++; //... rear[qno] = rear[qno] + 1; queue[ rear[qno] ] = *data; return(1); } // else } // insq   int delq (int queue[max], int qno, int front[], int rear[], int *data) { if( front[qno] == rear[qno] ) return(-1); else { front[qno]++; //... front[qno] = front[qno] + 1; *data = queue[ front[qno] ]; return(1); } // else } // delq   int getQueueNumber(int n) { int qNo=0; Inva: printf("\n Enter a Logical Queue Number (1 to %d) : ", n); scanf("%d", &qNo); if (qNo<1 || qNo >n) { printf(" Invalid Queue Number. Please try again.\n"); goto Inva; } return qNo; }   void main() { int queue[max], data; int bott[10], limit[10], f[10], r[10]; int i, n, qno, size, option, reply;   printf("\n C Language program to implement the Multiple Queues \n"); printf("\n How Many Queues ? : "); scanf("%d", &n); size = max / n; //... Get Max. size for each Queue   //... Initialize bottom for each Queue   bott[0] = -1; //... Bottom of first Queue is -1 for(i = 1; i < n; i++) bott[i] = bott[i-1] + size;   //... Initialize Limit of each Queue   for(i = 0; i < n; i++) //... Limit of i'th Queue is equal to bottom of i'th Queue + Size limit[i] = bott[i] + size;   //... Initialize Front & Rear of each Queue //... Initial value of Front & Rear of each Queue is same as its Bottom Value   for(i = 0; i < n; i++) f[i] = r[i] = bott[i];   //... Process the Queues   do { printf("\n\n C Language program to implement the Multiple Queues \n"); printf("\n 1. Insert in a Queue"); printf("\n 2. Delete from a Queue"); printf("\n 3. Print from a Queue"); printf("\n 3. Exit \n"); printf("\n Select proper option ( 1 / 2 / 3 / 4) : "); scanf("%d", &option); switch(option) { case 1 : //... Insert qno = getQueueNumber(n); printf("\n Enter Data : "); scanf("%d", &data); reply = insq(queue, qno-1, r, limit, &data); if( reply == -1) printf("\n Queue %d is Full \n", qno); else printf("\n %d is inserted in a Queue No. %d \n", data, qno); break; case 2 : //... Delete qno = getQueueNumber(n); reply = delq(queue, qno-1, f, r, &data); if( reply == -1) printf("\n Queue %d is Empty \n", qno); else printf("\n %d is deleted from Queue No. %d \n", data, qno); break; case 3: qno = getQueueNumber(n); printf("\n Elements of Queue %d are as : ", qno); if (f[qno-1]==r[qno-1]) { printf("\n Queue is empty"); break; } for (i=f[qno-1]+1; i<=r[qno-1]; i++) printf("%d\t", queue[i]); printf("\n"); break; case 4 : break; default: printf("\n Invalid input. Please try again."); } // switch }while(option!=4); } // main