Министерство образования Республики Беларусь
Отчёт по лабораторной работе №8
«Обработка двухмерных массивов»
Выполнила: Студентка гр. АСОИ-101
Игнатушко Татьяна
Могилев 2010
Тема: «Обработка двухмерных массивов»
Цель работы
Получение практических навыков в работе с двухмерными массивами.
Постановка задачи
Для конкретного варианта ввести массив исходных данных и выполнить над ним указанные действия. Написать программу, которая работает с любым набором данных. Входную информацию и результаты счета вывести на печать, снабдив их соответствующими заголовками.
Вариант 9
- Найти наибольший элемент главной диагонали матрицы А(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.