Advertisement
Jaagdish47

Matrix CODE

Nov 23rd, 2024
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.19 KB | Source Code | 0 0
  1. Matrix Code
  2. 1C. Write a program to perform the Matrix addition, Multiplication and
  3. Transpose Operation. [Menu Driven]
  4. #include <stdio.h>
  5. #include <conio.h>
  6. #include <stdlib.h>
  7.  
  8. void add_mat();
  9. void mul_mat();
  10. void trans_mat();
  11. void print_mat(int x[3][3]);
  12.  
  13. void main()
  14. {
  15.     int ch = 0;
  16.     clrscr(); // Clear the screen
  17.     while (ch != 4)
  18.     {
  19.         printf("\n1. Addition\n2. Multiplication\n3. Transpose\n4. Exit");
  20.         printf("\nSelect the operation: ");
  21.         scanf("%d", &ch); // Corrected `scanf` syntax
  22.  
  23.         switch (ch)
  24.         {
  25.         case 1:
  26.             add_mat();
  27.             break;
  28.         case 2:
  29.             mul_mat();
  30.             break;
  31.         case 3:
  32.             trans_mat();
  33.             break;
  34.         case 4:
  35.             exit(0);
  36.         default:
  37.             printf("\nInvalid choice! Please select again.");
  38.         }
  39.         getch(); // Pause for user to view results
  40.     }
  41. }
  42.  
  43. void add_mat()
  44. {
  45.     int a[3][3], b[3][3], c[3][3], i, j;
  46.     printf("\nEnter the matrix A (3x3):\n");
  47.     for (i = 0; i < 3; i++)
  48.     {
  49.         for (j = 0; j < 3; j++)
  50.         {
  51.             scanf("%d", &a[i][j]);
  52.         }
  53.     }
  54.  
  55.     printf("\nEnter the matrix B (3x3):\n");
  56.     for (i = 0; i < 3; i++)
  57.     {
  58.         for (j = 0; j < 3; j++)
  59.         {
  60.             scanf("%d", &b[i][j]);
  61.         }
  62.     }
  63.  
  64.     for (i = 0; i < 3; i++)
  65.     {
  66.         for (j = 0; j < 3; j++)
  67.         {
  68.             c[i][j] = a[i][j] + b[i][j];
  69.         }
  70.     }
  71.  
  72.     printf("\nMatrix A:");
  73.     print_mat(a);
  74.     printf("\nMatrix B:");
  75.     print_mat(b);
  76.     printf("\nA + B:");
  77.     print_mat(c);
  78. }
  79.  
  80. void mul_mat()
  81. {
  82.     int i, j, k, sum;
  83.     int a[3][3], b[3][3], c[3][3];
  84.     printf("\nEnter the matrix A (3x3):\n");
  85.     for (i = 0; i < 3; i++)
  86.     {
  87.         for (j = 0; j < 3; j++)
  88.         {
  89.             scanf("%d", &a[i][j]);
  90.         }
  91.     }
  92.  
  93.     printf("\nEnter the matrix B (3x3):\n");
  94.     for (i = 0; i < 3; i++)
  95.     {
  96.         for (j = 0; j < 3; j++)
  97.         {
  98.             scanf("%d", &b[i][j]);
  99.         }
  100.     }
  101.  
  102.     for (i = 0; i < 3; i++)
  103.     {
  104.         for (j = 0; j < 3; j++)
  105.         {
  106.             sum = 0; // Initialize sum for each element
  107.             for (k = 0; k < 3; k++)
  108.             {
  109.                 sum += a[i][k] * b[k][j];
  110.             }
  111.             c[i][j] = sum;
  112.         }
  113.     }
  114.  
  115.     printf("\nMatrix A:");
  116.     print_mat(a);
  117.     printf("\nMatrix B:");
  118.     print_mat(b);
  119.     printf("\nA * B:");
  120.     print_mat(c);
  121. }
  122.  
  123. void trans_mat()
  124. {
  125.     int i, j;
  126.     int a[3][3], at[3][3];
  127.     printf("\nEnter the matrix A (3x3):\n");
  128.     for (i = 0; i < 3; i++)
  129.     {
  130.         for (j = 0; j < 3; j++)
  131.         {
  132.             scanf("%d", &a[i][j]);
  133.             at[j][i] = a[i][j]; // Calculate transpose directly
  134.         }
  135.     }
  136.  
  137.     printf("\nMatrix A:");
  138.     print_mat(a);
  139.     printf("\nTranspose of A:");
  140.     print_mat(at);
  141. }
  142.  
  143. void print_mat(int x[3][3])
  144. {
  145.     int i, j;
  146.     printf("\n");
  147.     for (i = 0; i < 3; i++)
  148.     {
  149.         for (j = 0; j < 3; j++)
  150.         {
  151.             printf("\t%d", x[i][j]);
  152.         }
  153.         printf("\n");
  154.     }
  155. }
  156.  
  157. 6A. : Write a program to find the Adjacency Matrix
  158.  
  159. #include <stdio.h>
  160. #include <conio.h>  // For Turbo C-specific functions like clrscr() and getch()
  161.  
  162. #define V 4  // Fixing the definition of V
  163.  
  164. // Function to initialize the adjacency matrix with 0s
  165. void init(int array[][V]) {
  166.     int i, j;
  167.     for (i = 0; i < V; i++) {
  168.         for (j = 0; j < V; j++) {
  169.             array[i][j] = 0;
  170.         }
  171.     }
  172. }
  173.  
  174. // Function to add an edge between vertices i and j
  175. void addEdge(int array[][V], int i, int j) {
  176.     array[i][j] = 1;
  177.     array[j][i] = 1;
  178. }
  179.  
  180. // Function to print the adjacency matrix
  181. void printAdjMatrix(int array[][V]) {
  182.     int i, j;
  183.     for (i = 0; i < V; i++) {
  184.         printf("%d: ", i);
  185.         for (j = 0; j < V; j++) {
  186.             printf("%d ", array[i][j]);
  187.         }
  188.         printf("\n");
  189.     }
  190. }
  191.  
  192. int main() {
  193.     int adjMatrix[V][V];  // Initialize the adjacency matrix
  194.  
  195.     clrscr();  // Clear the screen (Turbo C-specific)
  196.  
  197.     init(adjMatrix);  // Initialize matrix elements to 0
  198.     addEdge(adjMatrix, 0, 1);
  199.     addEdge(adjMatrix, 0, 2);
  200.     addEdge(adjMatrix, 0, 3);
  201.     addEdge(adjMatrix, 1, 2);
  202.     addEdge(adjMatrix, 2, 0);
  203.  
  204.     printAdjMatrix(adjMatrix);  // Print the adjacency matrix
  205.  
  206.     getch();  // Wait for a key press before exiting (Turbo C-specific)
  207.  
  208.     return 0;  // Return 0 to indicate successful execution
  209. }
  210.  
  211. 6B. Write a program for shortest path matrix using Warshall’s Algorithm.
  212.  
  213. #include <stdio.h>
  214. #include <conio.h>  // Include for Turbo C-specific functions like getch()
  215.  
  216. #define INF 1000  // A large value to represent infinity
  217.  
  218. int main() {
  219.     int n = 5, i, j, k;
  220.     int w[5][5] = {{0, 7, 12, 9, INF}, {5, 0, INF, 11, INF}, {INF, 9, 0, INF, 7}, {INF, INF, 5, 0, INF}, {INF, 8, 8, INF, 0}};
  221.     int s[5][5] = {{0, 7, 12, 9, INF}, {5, 0, INF, 11, INF}, {INF, 9, 0, INF, 7}, {INF, INF, 5, 0, INF}, {INF, 8, 8, INF, 0}};
  222.    
  223.     clrscr();  // Clear the screen (Turbo C-specific)
  224.  
  225.     // Print the initial weight matrix W
  226.     printf("\nW: ");
  227.     for (i = 0; i < n; i++) {
  228.         printf("\n");
  229.         for (j = 0; j < n; j++) {
  230.             printf("\t%d", w[i][j]);
  231.         }
  232.     }
  233.  
  234.     // Print the initial shortest path matrix S
  235.     printf("\nS: ");
  236.     for (i = 0; i < n; i++) {
  237.         printf("\n");
  238.         for (j = 0; j < n; j++) {
  239.             printf("\t%d", s[i][j]);
  240.         }
  241.     }
  242.  
  243.     // Floyd-Warshall algorithm for shortest path
  244.     for (k = 0; k < n; k++) {
  245.         for (i = 0; i < n; i++) {
  246.             for (j = 0; j < n; j++) {
  247.                 if (s[i][j] > (s[i][k] + s[k][j])) {
  248.                     s[i][j] = s[i][k] + s[k][j];
  249.                 }
  250.             }
  251.         }
  252.  
  253.         // Print the shortest path matrix after the k-th iteration
  254.         printf("\nS %d: ", k);
  255.         for (i = 0; i < n; i++) {
  256.             printf("\n");
  257.             for (j = 0; j < n; j++) {
  258.                 printf("\t%d", s[i][j]);
  259.             }
  260.         }
  261.     }
  262.  
  263.     getch();  // Wait for the user to press a key before exiting (Turbo C-specific)
  264.  
  265.     return 0;
  266. }
Tags: Matrix CODE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement