Результаты выполнения программы

Министерство образования Республики Беларусь

 

Отчёт по лабораторной работе №8

«Обработка двухмерных массивов»

 


Выполнила: Студентка гр. АСОИ-101
Игнатушко Татьяна

 


Могилев 2010

Тема: «Обработка двухмерных массивов»

 

Цель работы

Получение практических навыков в работе с двухмерными массивами.

 

Постановка задачи

Для конкретного варианта ввести массив исходных данных и выполнить над ним указанные действия. Написать программу, которая работает с любым набором данных. Входную информацию и результаты счета вывести на печать, снабдив их соответствующими заголовками.

 

Вариант 9

  1. Найти наибольший элемент главной диагонали матрицы А(4х4) и вывести на экран все строку, в которой он находится. Найти наибольший элемент главной диагонали матрицы А(4х4) и вывести на экран все строку, в которой он находится.

2. Соседями элемента Aij в матрице назовем элементы Akl с i-1 £ k £ i+1, j-1 £ l £ j+1, (k, l) ¹ (i, j). Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания заданной вещественной матрицы размером 10´10.

В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали.

 

Текст программы

 

1. #include <windows.h>

#include <stdio.h>

int main()

{

SetConsoleOutputCP(1251);

const n=4;

int i,j,max=0;

float a[n][n];

printf("Введите элементы матрицы A:\n");

for(i=0;i<n;i++)

for(j=0;j<n;j++) { printf("a[%d][%d]=",i+1,j+1);

scanf("%f",&a[i][j]);}

printf("\nМатрица A:\n\n");

for(i=0;i<n;i++){

for(j=0;j<n;j++) printf("%7.2f",a[i][j]);

printf("\n\n");}

for (i=1;i<n;i++) if (a[max][max]<a[i][i]) max=i;

 

printf("Максимальный элемент главной диагонали - a[%d][%d]=%f;\nстрока, в которой находится этот элемент: ",max+1,max+1,a[max][max]);

for (j=0;j<n;j++) printf("%7.2f",a[max][j]);

printf("\n");

 

return 0;

}

2. #include<windows.h>

#include<stdio.h>

#include<time.h>

#include<math.h>

main()

{ SetConsoleOutputCP(1251);

const n=10;

int i,j;

float a[n][n],b[n][n], sum=0;

srand(time(NULL));

printf("Матрица 10x10:\n\n");

for(i=0;i<n;i++)

{for(j=0;j<n;j++)

{a[i][j]=-10+20.*rand()/RAND_MAX;

printf("%6.2f",a[i][j]);} printf("\n");}

printf("\n");

for(i=1;i<n-1;i++)

for(j=1;j<n-1;j++) b[i][j]=(a[i-1][j-1]+a[i-1][j]+a[i-1][j+1]+a[i][j-1]+a[i][j+1]+a[i+1][j-1]+a[i+1][j]+a[i+1][j+1])/8;

b[0][0]=(a[0][1]+a[1][0]+a[1][1])/3;

b[n-1][n-1]=(a[n-1][n-2]+a[n-2][n-1]+a[n-2][n-2])/3;

b[0][n-1]=(a[0][n-2]+a[1][n-1]+a[1][n-2])/3;

b[n-1][0]=(a[n-1][1]+a[n-2][0]+a[n-2][1])/3;

for(j=1;j<n-1;j++) b[0][j]=(a[0][j-1]+a[0][j+1]+a[1][j-1]+a[1][j]+a[1][j+1])/5;

for(j=1;j<n-1;j++) b[n-1][j]=(a[n-1][j-1]+a[n-1][j+1]+a[n-2][j-1]+a[n-2][j+1]+a[n-2][j])/5;

for(j=1;j<n-1;j++) b[j][0]=(a[j-1][0]+a[j+1][0]+a[j-1][1]+a[j+1][1]+a[j][1])/5;

for(j=1;j<n-1;j++) b[j][n-1]=(a[j-1][n-1]+a[j+1][n-1]+a[j-1][n-2]+a[j][n-2]+a[j+1][n-2])/5;

printf("\n\n");

printf("Сглаженная матрица:\n\n");

for(i=0;i<n;i++)

{for(j=0;j<n;j++) printf("%7.2f",b[i][j]); printf("\n");}

printf("\n");

for(j=0;j<n-1;j++)

for(i=j+1;i<n;i++) sum+=fabs(a[i][j]);

printf("Сумма модулей элементов, расположенных ниже главной диагонали равна %.2f\n",sum);

return 0;}

 

Результаты выполнения программы

1.

2.