Практические / Отчеты студентов 2011-2012 / ВТ-11 Лр / Шадлова / Лабораторная работа №5
.docМосковский Государственный Университет Леса
ФЭСТ ВТ-11
Лабораторная работа №5.
Программирование на языках высокого уровня
Тема: “Матрицы”
Выполнил студент Шадлова Н.А.
Проверил Ларионов Н.В.
Москва 2011.
1. Условия задания:
Соседями элемента Аij матрице назовём элементы Аkl c i-1<=k<=i+1, j-1<=1<=j+1, (k, l) != (i, j). Операция сглаживания матрицы даёт новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания заданной вещественной матрицы размером 10 на 10.
2. Листинг программы:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define NUM_ROWS 10
#define NUM_COLS 10
float source_array[NUM_ROWS][NUM_COLS];
float dest_array[NUM_ROWS][NUM_COLS];
extern int func(int n,int m);
int main()
{
int ai,bi;
time_t t;
srand(time(&t));
clrscr();
for(bi = 0; bi < NUM_ROWS;bi++)
for(ai = 0; ai < NUM_COLS;ai++)
source_array[bi][ai] = rand() % 100;
for(bi = 0; bi < NUM_ROWS;bi++)
{
printf("\n");
for(ai = 0; ai < NUM_COLS;ai++)
printf("%.3f\t",source_array[bi][ai]);
}
getch();
for (int y = 1;y < NUM_ROWS - 1;y++)
for(int x = 1;x < NUM_COLS - 1;x++)
{
func(x,y);
}
getch();
for (y = 0;y < NUM_ROWS;y++)
{
printf("\n");
for(int x = 0;x < NUM_COLS;x++)
{
printf("%.3f\t",dest_array[x][y]);
}
}
return 0;
}
int func(int n,int m)
{
int x,y;
if ((n < 1) && (m < 1))
return -1;
float summ = 0;
for(x = m - 1;x <= m+1;x++)
{
printf("\n");
for(y = n - 1;y <= n+1;y++)
{
printf("%.2f\t",source_array[x][y]);
summ += source_array[x][y];
dest_array[x][y] = source_array[x][y];
}
}
dest_array[n][m] = summ / 9;
printf("\n");
for(x = m - 1;x <= m+1;x++)
{
printf("\n");
for(y = n - 1;y <= n+1;y++)
{
printf("%.2f\t",dest_array[x][y]);
}
}
return 0;
}