Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ЛАБОРАТОРНА РОБОТА № 3
З КУРСУ “АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ”
РОБОТА З МАСИВАМИ. ВИКОРИСТАННЯ ФУНКЦІЙ
Львів 2009
ПОВНИЙ ТЕКСТ ЗАВДАННЯ
1. Скласти блок-схему алгоритму та програму мовою Cі згідно з завданням, отриманим від викладача за табл. 1: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування і обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
Таблиця 1
№ п/п
Алгоритм впорядкування матриці
Алгоритм для розрахунку fi(aij) та F(fi(aij))
Матриця
13
Впорядкувати елементи рядків матриці за спаданням їх значень методом вставки
fi(aij)-середнє арифметичне значення елементів у кожному стовпці над допоміжною діагоналлю матриці; F(fi(aij))-добуток fi(aij)
12 46 –23 72 -5
59 7 -8 0 67
7 -8 -4 -97 -55
77 -1 -5 34 -8
0 22 27 24 24
ОСТАТОЧНА ВЕРСІЯ БЛОК-СХЕМИ АЛГОРИТМУ
ФУНКЦІЯ СОРТУВАННЯ МАТРИЦІ SORTMATRIX(MATRIX)
1
2 Ні
Так
Ні 3
Так
4
5
Так Ні
6 7
8
ФУНКЦІЯ РОЗРАХУНКУ ЗНАЧЕНЬ СЕРЕДНІХ АРИФМЕТИЧНИХ СТОВПЦІВ НАД ДОПОМІЖНОЮ ДІАГОНАЛЛЮ MIDDLE(MATRIX)
9
10
11
Ні
12
Так
13
Так Ні
14
15
16
17
Ні 18
Так
19
20
ФУНКЦІЯ РОЗРАХУНКУ ДОБУТКУ ЗНАЧЕНЬ СЕРЕДНІХ АРИФМЕТИЧНИХ СТОВПЦІВ НАД ДОПОМІЖНОЮ ДІАГОНАЛЛЮ MULTIPLY(MATRIX)
21 23 24
22
Ні
25
Так
26
Так ні
27
28
29
Ні 30
Так
31
32
33
ГОЛОВНА ПРОГРАМА
34 35
36
Ні
37
Так
Ні 38
Так
39
40
41
Ні
42
Так
Ні 43
Так
44
45
46
Ні
47
Так
Ні 48
Так
49
50
51
52
СПИСОК ІДЕНТИФІКАТОРІВ КОНСТАНТ, ЗМІННИХ, ПРОЦЕДУР ТА ФУНКЦІЙ, ВИКОРИСТАНИХ У БЛОК-СХЕМІ АЛГОРИТМУ ПРОГРАМИ
СПИСОК :
I
J
X
K
N
W
MATRIX
SORTMATRIX
MIDDLE
MULTIPLY
PRINTF
SCANF
GETCH
ПОЯСНЕННЯ ІДЕНТИФІКАТОРІВ ЗМІННИХ :
I – порядковий покажчик рядка матриці.
J – порядковий покажчик стовпця матриці.
X – змінна для нарахування суми елементів матриці.
K – константа – розмір матриці.
N – тимчасовий покажчик порядкового номеру рядка матриці.
W – змінна для збереження добутку значень середніх арифметичних стовпців над допоміжною діагоналлю.
MATRIX – ідентифікатор матриці.
ПОЯСНЕННЯ ІДЕНТИФІКАТОРІВ ФУНКЦІЙ :
PRINTF() – функція виводу інформації на дисплей
SCANF() – функція зчитування значень із стандартного пристрою вводу (клавіатури) і присвоєння їх змінним вихідної програми.
GETCH() – функція затримання даних на дисплеї після закінчення роботи програми.
SORTMATRIX() – функція сортування матриці.
MIDDLE() – функція розрахунку значень середніх арифметичних стовпців над допоміжною діагоналлю.
MULTIPLY() – функція розрахунку добутку середніх арифметичних стовпців над допоміжною діагоналлю.
ОСТАТОЧНА ВЕРСІЯ ПРОГРАМИ
//Lab_3cpp : Defines The entry point for the console application.
//
#include “stdafx.h”
#include “stdio.h”
#include “math.h”
#include “conio.h”
#define k 5
void Sortmatrix(int matrix[k][k]);
void middle(int matrix[k][k]);
void multiply(int matrix[k][k]);
/*Initializing Function Area*/
void Sortmatrix(int matrix[k][k])
{
double x;
int i,j,n;
for(n=0;n<k;n++)
for(i=1;i<k;i++) {x=matrix[n][i];j=i-1;
while((x>matrix[n][j])&&(j>=0))
{matrix[n][j+1]=matrix[n][j];j=j-1;};
matrix[n][j+1]=x;};
}
void middle(int matrix[k][k])
{
double x;
int i,j,n;
x=0;
n=k;
printf("\n");
for(j=0;j<=(k-1);j++)
{
n=n-1;
if(!(x==0)) {x=x/i;printf("Middle mathematical in column %d = %lf\n",j,x);};
x=0;
for(i=0;i<n;i++)
x=matrix[i][j]+x;};
}
void multiply(int matrix[k][k])
{
double w,x;
int i,j,n;
x=0;
w=1;
n=k;
printf("\n");
for(j=0;j<=(k-1);j++)
{
n=n-1;
if(!(x==0)) {w=w*x/i;};
x=0;
for(i=0;i<n;i++)
x=matrix[i][j]+x;};
printf("Multiply middle numbers = %lf",w);
}
int _tmain(int argc, _TCHAR *argv[])
{
double x;
int i,j,n;
int matrix[k][k];
/*Entering matrix elements*/
printf("\n");
printf("Enter matrix elements :\n");
printf("\n");
for(i=0;i<k;i++)
for(j=0;j<k;j++)
{printf("Enter matrix element : matrix[%d][%d] = ",(i+1),(j+1)," /n");
scanf("%d",&matrix[i][j]);};
/*Printing not Sorted matrix*/
printf("\n");
printf("Matrix not Sorted :");
printf("\n\n");
for(i=0;i<k;i++){
for(j=0;j<k;j++){
printf("%5d",matrix[i][j]);};printf("\n");};
/*Sorting matrix*/
Sortmatrix(matrix);
/*Printing sorted matrix*/
printf("\n");
printf("Matrix Sorted :");
printf("\n\n");
for(i=0;i<k;i++){
for(j=0;j<k;j++){
printf("%5d",matrix[i][j]);};printf("\n");};
/*Function middle mathematical search*/
middle(matrix);
/*Function multiply search*/
multiply(matrix);
getch();
}
РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ
Enter matrix elements :
Enter matrix element : matrix[1][1] = 12
Enter matrix element : matrix[1][2] = 46
Enter matrix element : matrix[1][3] = -2
Enter matrix element : matrix[1][4] = 72
Enter matrix element : matrix[1][5] = -5
Enter matrix element : matrix[2][1] = 59
Enter matrix element : matrix[2][2] = 7
Enter matrix element : matrix[2][3] = -8
Enter matrix element : matrix[2][4] = 0
Enter matrix element : matrix[2][5] = 67
Enter matrix element : matrix[3][1] = 7
Enter matrix element : matrix[3][2] = -8
Enter matrix element : matrix[3][3] = -4
Enter matrix element : matrix[3][4] = -9
Enter matrix element : matrix[3][5] = -5
Enter matrix element : matrix[4][1] = 77
Enter matrix element : matrix[4][2] = -1
Enter matrix element : matrix[4][3] = -5
Enter matrix element : matrix[4][4] = 34
Enter matrix element : matrix[4][5] = -8
Enter matrix element : matrix[5][1] = 0
Enter matrix element : matrix[5][2] = 22
Enter matrix element : matrix[5][3] = 27
Enter matrix element : matrix[5][4] = 24
Enter matrix element : matrix[5][5] = 24
Matrix not Sorted :
12 46 -23 72 -5
59 7 -8 0 67
7 -8 -4 -97 -55
77 -1 -5 34 -8
0 22 27 24 24
Matrix Sorted :
72 46 12 -5 -23
67 59 7 0 -8
7 -4 -8 -55 -97
77 34 -1 -5 -8
27 24 24 22 0
Middle mathematical in column 1 = 55.750000
Middle mathematical in column 2 = 33.666667
Middle mathematical in column 3 = 9.500000
Middle mathematical in column 4 = -5.000000
Multiply middle numbers = -89153.541667
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!