Rotate the Matrix

I'm trying to rotate a matrix inplace (clockwise direction). Below is my code, everything seems right but I'm getting runtime error. Can anybody explain to me why I'm getting runtime error.

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
#include<stdio.h>
#define SIZE 4
int matrix[4][4] = { {10,11,12,13}, {14,15,16,17}, {18,19,20,21}, {22,23,24,25} };
 
void swap(int *p, int *q)
{
	int *t;
	*t = *p;
	*p = *q;
	*q = *t;
}
 
void printMatrix()
{
    int i, j;
	for (i = 0; i < SIZE; ++i)
	{
		for (j = 0; j < SIZE; ++j)
		{
			printf("%d ", matrix[i][j]);
		}
		printf("\n");
	}
}
 
int main()
{
	int first, last, i, t, n = 0;
	printf("Before Rotation:\n");
	printMatrix();
 
	while(n < SIZE/2)
	{
		first = n; 
		last = (SIZE-1)-n;
 
		/* Save First Element */
		t = matrix[n][n+1];
 
		/* Top Row */
		for (i = first; i <= last; ++i)
		{
			swap(&t, &matrix[first][i]);
		}
 
		/* Last Column */
		for (i = first+1; i <= last; ++i)
		{
			swap(&t, &matrix[i][last]);
		}
 
		/* Bottom Row */
		for (i = last-1; i >= first; --i)
		{
			swap(&t, &matrix[last][i]);
		}
 
		/* First Column */
		for (i = last-1; i >= first; --i)
		{
			swap(&t, &matrix[i][first]);
		}
 
		++n;
	}
 
	printf("After Rotation:\n");
	printMatrix();
}
Last edited on
Line 8: What does *t point to? Hint: *t is uninitialized.
@AbstractionAnon I get it thanks. Silly mistake
Topic archived. No new replies allowed.