Chakravyuha Matrix Generator in C
#include<stdio.h>
void chakravyuha(int n);
int main(){
int n;
printf("enter matrix size (Only odd number): ");
scanf("%d",&n);
if(n % 2 == 0){
printf("you entered even number");
return 1;
}
else{
chakravyuha(n);
}
}
void chakravyuha(int n){
int matrix[100][100];
for(int i = 0; i<n; i++){
for(int j = 0; j<n; j++){
matrix[i][j] = 0;
}
}
int mid = n / 2;
int row = mid, col = mid;
int num = 1;
int steps = 1;
int m_size = n*n;
matrix[row][col] = num++;
while(num <= m_size){
//right
for(int i = 0; i<steps && num<=m_size; i++){
col++;
matrix[row][col] = num++;
}
//down
for(int i = 0; i<steps && num<=m_size; i++){
row++;
matrix[row][col] = num++;
}
// after two time increment steps
steps++;
//left
for(int i = 0; i<steps && num<m_size; i++){
col--;
matrix[row][col] = num++;
}
//up
for(int i =0; i<steps && num<=m_size; i++){
row--;
matrix[row][col] = num++;
}
steps++;
}
printf("\n\n**** Chakravyuha ****\n\n");
for(int i = 0; i<n; i++){
for(int j = 0; j<n; j++){
printf("%3d",matrix[i][j]);
}
printf("\n");
}
}
Comments
Post a Comment