Итак, я пытаюсь заставить пользователя ввести количество столбцов и строк, а затем вывести на экран матрицу случайных чисел, за которой следует матрица сглаженного изображения, которая находит средний фильтр для каждого пикселя в массиве. Прямо сейчас он у меня есть, где он может дать мне матрицу случайных чисел, но сглаженная матрица не в порядке. Прямо сейчас код, который я написал, просто фокусируется на целых числах, у которых есть 4 соседа, но очевидно, что я сделал что-то не так.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
// function that randomly generates numbers
void fillArray(int a[10][20], int m, int n)
{
int random;
int i,j;
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
random=rand()%100;
a[i][j]=random;
}
}
}
// function that prints the first matrix of random numbers
void printarray (int a[10][20], int m, int n)
{
int i,j;
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
printf("%4d", a[i][j]);
}
printf("\n");
}
}
// function that finds the mean for any number and its 4 nieghbors
void smooth (int a[10][20], int m, int n)
{
int i,j;
for (i=1;i<m;i++)
{
for (j=1;j<n;j++)
{
a[i][j]=a[i][j]=(a[i-1][j]+a[i][j-1]+a[i+1][j]+a[i][j+1])/4;
printf("%4d",a[i][j]);
}
printf("\n");
}
}
int main()
{
int a[10][20];
int m,n;
srand(time(NULL));
//User input
printf("please enter number of columns and rows");
scanf("%d %d", &m,&n);
fillArray(a,m,n);
printarray (a,m,n);
printf("The smoothed image is\n");
smooth(a,m,n);
getch();
return 0;
}
прямо сейчас, если бы я ввел 3 и 3, я бы получил что-то вроде этого:
23 43 54
12 76 89
56 98 24
The smoothed image is
347373849493234343
12 23345345345
2132334565645645645
У кого-нибудь есть идеи?