-
Notifications
You must be signed in to change notification settings - Fork 30
/
matrixrowinterchange.c
137 lines (106 loc) · 3.5 KB
/
matrixrowinterchange.c
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include<stdio.h>
int main() { system("cls");
int swap1(int r, int c, int M[][c], int i, int j); /*declaration of functions*/
int swap2(int r, int c, int* p, int i, int j);
int swap3(int r, int c, int** p, int i, int j);
int swap4(int r, int c, int (*p)[], int i, int j);
void printMatrix(int r, int c, int M[][c]);
int r, c;
printf("\nEnter number of rows in the matrix: ");
scanf("%d", &r);
printf("Enter number of columns in the matrix: ");
scanf("%d", &c);
if(r <= 1 || c <= 1) { /*checking the size of array*/
printf("\n\tINVALID SIZE!\n");
}
int M[r][c];
printf("\nEnter elements of the Matrix:\n"
"(with each element in a column separated with a space and each row separated with a line): \n");
for(int i = 0; i < r; ++i) {
for(int j = 0; j < c; ++j) {
scanf("%d", *(M + i) + j);
}
}
printf("\nThe Matrix entered is:\n");
printMatrix(r, c, M);
int i, j;
printf("\nEnter the row numbers that need to be interchanged(function 1): ");
scanf("%d %d", &i, &j);
int result = swap1(r, c, M, --i, --j);
if(result == 0) {
printf("Entered values are not valid row indices!\n");
}
printMatrix(r, c, M);
printf("\nEnter the row numbers that need to be interchanged(function 2): ");
scanf("%d %d", &i, &j);
result = swap2(r, c, (int*)M, --i, --j);
if(result == 0) {
printf("Entered values are not valid row indices!\n");
}
printMatrix(r, c, M);
printf("\nEnter the row numbers that need to be interchanged(function 3): ");
scanf("%d %d", &i, &j);
result = swap3(r, c, (int **)M, --i, --j);
if(result == 0) {
printf("Entered values are not valid row indices!\n");
}
printMatrix(r, c, M);
printf("\nEnter the row numbers that need to be interchanged(function 4): ");
scanf("%d %d", &i, &j);
result = swap4(r, c, M, --i, --j);
if(result == 0) {
printf("Entered values are not valid row indices!\n");
}
printMatrix(r, c, M);
return 0;
}
int swap1(int r, int c, int M[][c], int i, int j) {
if(i < 0 || r <= i || j < 0 || r <= j)
return 0;
for(int cIter = 0; cIter < c; ++cIter) {
int temp = M[i][cIter];
M[i][cIter] = M[j][cIter];
M[j][cIter] = temp;
}
return 1;
}
int swap2(int r, int c, int* p, int i, int j) {
if(i < 0 || r <= i || j < 0 || r <= j)
return 0;
for(int cIter = 0; cIter < c; ++cIter) {
int temp = *(p + (i*c) + cIter);
*(p + (i*c) + cIter) = *(p + (j*c) + cIter);
*(p + (j*c) + cIter) = temp;
}
return 1;
}
int swap3(int r, int c, int** p, int i, int j) {
if(i < 0 || r <= i || j < 0 || r <= j)
return 0;
for(int cIter = 0; cIter < c; ++cIter) {
int temp = *((int *)p + i*c + cIter);
*((int *)p + i*c + cIter) = *((int *)p + j*c + cIter);
*((int *)p + j*c + cIter) = temp;
}
return 1;
}
int swap4(int r, int c, int (*p)[c], int i, int j)
{
if(i < 0 || r <= i || j < 0 || r <= j)
return 0;
for(int cIter = 0; cIter < c; ++cIter) {
int temp = p[i][cIter];
p[i][cIter] = p[j][cIter];
p[j][cIter] = temp;
}
return 1;
}
void printMatrix(int r, int c, int M[][c]) /*printing the matrix*/
{
for(int i = 0; i < r; ++i) {
for(int j = 0; j < c; ++j) {
printf("%d ", M[i][j]);
}
printf("\n");
}
}