Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
18
Добавлен:
17.04.2015
Размер:
31.23 Кб
Скачать

Московский Государственный Университет Леса

ФЭСТ ВТ-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;

}