ІКТА / КБ-12 / Технології Програмування частина №1 (ТП ч.1) / Лаби (готові) / Варіант №13 / Лабараторна робота ТП №3 Ковальчин О.Ю
.docxМІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
ЗВІТ
до лабораторної роботи №3
з курсу: «Технології програмування »
на тему: «РОБОТА З МАСИВАМИ. ВИКОРИСТАННЯ ФУНКЦІЙ»
Варіант № 13
Виконала: ст. гр. КБ-12
Ковальчин О.Ю.
Прийняв: Крет Т.Б
Львів - 2017
Мета роботи – вивчити синтаксис опису і використання у програмах змінних типу масивів, навчитися використовувати масиви для оброблення матриць, вивчити основні алгоритми сортування масивів; навчитися описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів.
1. Завдання
Скласти блок-схему алгоритму та програму мовою Cі згідно з завданням, отриманим від викладача за табл. 1: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування і обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
Впорядкувати елементи рядків матриці за спаданням їх значень методом вставки
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 |
-задана матриця
2. Блок-схема алгоритму програми
Початок
i,j,
a[n][n]
i=0,
i<n i++
j=0,
j<n
j++
Element
mass
buld (a)
vstavka
(a)
res
(a)
Кінець
Блок-схема до функції buld(a)
Початок
Кінець
Блок-схема до функції vstavka (a)
Початок
i,j,k,x
x=a[i][j] x=a[i][j]
a[i][k]<x&&>k>=0
&k>=0
[j]>x&&k>=0 a[k+1][j]=a[i][k]; k--; a[i][
k+1]=a[i][j]; Кінець
-
+
Блок-схема до функції res (a)
Початок
i,j d,
s, z sum=1.0 i=0,
i<n-1 i++
j=0,
j<n
j++ d=.0
if (i<n-j)
d=
d+a[i][j] s=s*dobutock d s Кінець
-
+
3. Cписок ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі,
та їх пояснення
a[i][j] – елементи масиву;
s- сума елементів у кожному стовпці над головною діагоналлю матриці;
d - добуток s;
for - цикл з передумовою;
if – умовний оператор;
while – операція циклу з передумовою;
main() – головна функція;
buld(a) – функція побудови старого масиву;
vstavka (a) – функція побудови нового масиву за зростанням у стовпцях методом вставки;
res(a) – функція обчислення добутків елементів у кожному рядку під головною діагоналлю матриці та їх сума;
printf() – функція виводу даних;
scanf() – функція вводу даних;
4. Текст програми
#include <stdio.h>
#include <stdlib.h>
#define n 5 //rozmir mass
int main (void) //golovna func main
{
int i,j;
int a[n][n];
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
printf ("element mass a[%d][%d]=", i+1, j+1);
scanf ("%d", &a[i][j]);
}
printf ("\n");
}
buld (a);
vstavka (a);
printf ("mass after sorting \n");
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
printf ("%d\t", a[i][j]);
}
printf ("\n");
}
res (a);
}
int buld( int a[n][n]) // building mass
{
int i,j;
printf("mass:\n");
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
printf (" %d\t", a[i][j]);
}
printf("\n");
}
}
int vstavka (int a[n][n]) // sorting mass
{
int i,j,k,x;
for(i=0;i<n;i++)
{
for(j=1;j<n;j++)
{
x=a[i][j];
k=j-1;
while (a[i][k]<x&&k>=0)
{
a[i][k+1]=a[i][k];
k--;
}
a[i][k+1]=x;
}
}
}
int res(int a[n][n])
{
int i,j;
double d,s,z;
z=n;
z-=1;
d=1.0;
for (i=0;i<n-1;i++)
{
s=0.0;
for(j=0;j<n;j++)
{
if(i<(n-j-1)){
s=s+a[j][i];
}
}
s=s/z--;
printf("\n f[%d]=%lf",i+1,s);
d=d*s;
}
printf("\n Dobutok serednyh znachen=%lf",d);
}
5. Результати роботи програми
Висновок:вивчив синтаксис опису і використання у програмах змінних типу масивів, навчився використовувати масиви для оброблення матриць, вивчив основні алгоритми сортування масивів; навчився описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів. Склав блок-схему алгоритму та програму мовою Cі згідно з завданням, отриманим від викладача за табл. 1: Впорядкував елементи стовпців матриці за зростанням їх значень методом вставки та обчислив dobutock - добуток елементів у кожному рядку під головною діагоналлю матриці і sum - сума добутків.