Lab5 Mat Ops Pthreads 11
Lab5 Mat Ops Pthreads 11
typedef struct {
int row_start;
int row_end;
} thread_args;
while (1) {
printf("\nMatrix Operations Menu:\n");
printf("1. Matrix Addition (MxN)\n");
printf("2. Matrix Subtraction (MxN)\n");
printf("3. Matrix Multiplication (MxN * NxP)\n");
printf("4. Matrix Transposition (MxN)\n");
printf("5. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter matrix A (%d x %d):\n", M, N);
input_matrix(A, M, N);
printf("Enter matrix B (%d x %d):\n", M, N);
input_matrix(B, M, N);
create_threads(add_matrices, M);
printf("Resultant matrix C (Addition):\n");
print_matrix(C, M, N);
break;
case 2:
printf("Enter matrix A (%d x %d):\n", M, N);
input_matrix(A, M, N);
printf("Enter matrix B (%d x %d):\n", M, N);
input_matrix(B, M, N);
create_threads(subtract_matrices, M);
printf("Resultant matrix C (Subtraction):\n");
print_matrix(C, M, N);
break;
case 3:
printf("Enter matrix A (%d x %d):\n", M, N);
input_matrix(A, M, N);
printf("Enter matrix B (%d x %d):\n", N, P);
input_matrix(B, N, P);
create_threads(multiply_matrices, M);
printf("Resultant matrix C (Multiplication):\n");
print_matrix(C, M, P);
break;
case 4:
printf("Enter matrix A (%d x %d):\n", M, N);
input_matrix(A, M, N);
create_threads(transpose_matrix, M);
printf("Resultant matrix C (Transposition):\n");
print_matrix(C, N, M);
break;
case 5:
exit(0);
default:
printf("Invalid choice!\n");
break;
}
}
return 0;
}
Output:
Aayush@Chavan:/c/OS/lab projects/C/lab5$ ls
example.txt matrix_ops_pthreads.c system_call system_call.c
Aayush@Chavan:/c/OS/lab projects/C/lab5$ gcc -pthread
matrix_ops_pthreads.c -o mat_ops
Aayush@Chavan:/c/OS/lab projects/C/lab5$ ./mat_ops
Enter dimensions M, N, P (for matrix sizes MxN and NxP): 3
2
3