C++

Построить результат сглаживания заданной вещественной матрицы

Соседями элемента Aij в матрице назовем элементы Akl с i-1 ≤ k ≤ i+1, j-1 ≤ l ≤ j+1, (k, l) ≠ (i, j). Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания заданной вещественной матрицы размером 10 на 10.
#include <conio.h>
#include <stdio.h>
#include <iostream>
int main()
{
float A[10][10],B[10][10],s=0,s1,s2,s3,s4;
int n,i,j,a=1,b=1,c=1,d=1,k=4,;
printf(" n = "); scanf("%d",&n); 
printf("\n");
printf("OLD MATRIX:\n");
printf("\n");
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
A[i][j]=(float)(rand()%10);
printf("%5.1f",A[i][j]);
}
printf("\n");
}
printf("\n");
printf("NEW MATRIX:\n");
printf("\n");
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
k=4; s=0; a=1; b=1; c=1; d=1;
if(i==0) {a=0; k--;}
if(i==n-1) {b=0; k--;}
if(j==0) {c=0; k--;}
if(j==n-1) {d=0; k--;}
s=(b*A[i+1][j]+a*A[i-1][j]+c*A[i][j-1]+d*A[i][j+1])/k;
s1=d*A[i+1][j];
s2=c*A[i-1][j];
s3=b*A[i][j-1];
s4=a*A[i][j+1];
/*printf("\n %3.1f",s1);
printf("\n %3.1f",s2);
printf("\n %3.1f",s3);
printf("\n %3.1f",s4);
printf("\n %4d",k);*/
B[i][j]=s; printf("%5.1f",B[i][j]);
}
printf("\n");
}
getch();
return 0;
}
Теги:
Матрица
Добавлено: 28 Сентября 2013 06:05:44 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...