Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра ЕОМ
Звіт
про виконання лабораторної роботи №3
з курсу: «Паралельні та розподілені обчислення»,
на тему:
«МОЖЛИВОСТІ ВИКОРИСТАННЯ ПАРАЛЕЛЬНИХ АЛГОРИТМІВ»
Львів 2005 рік
Мета: Дослідити можливості розв’язання різноманітних задач за допомогою паралельних алгоритмів. Навчитися виділяти незалежні гілки обчислень та виконувати їх паралельно.
Завдання
В полі 8*8 кліток зображено кілька прямокутників, кожен з яких складається
з кліток, різні прямокутники не перетинаються і не доторкаються один до
одного. Задана квадратна матриця порядку 8, в якій елемент рівний нулю,
якщо відповідна клітина належить прямокутнику і відмінний від нуля, в
іншому випадку. Визначити кількість прямокутників. Початковими даними
вважати матрицю елементів, яка повинна вводитися під час виконання
програми. Графічно відобразити вхідні дані.
Текст програмної реалізації
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <fstream.h>
#include <time.h>
#include <iomanip.h>
#include <stdlib.h>
FILE * fp;
char i,j,matrix[8][8],next[2];
void printmatrix()
{
int i,j;
for (i=0;i<8;i++)
{
for (j=0;j<8;j++)
{
printf("%c",matrix[i][j]);
}
printf("\n");
}
}
void main()
{
clrscr();
fp=fopen("matrix.txt","r");
//char i,j,matrix[8][8],next[2];
for (i=0;i<8;i++)
{
for (j=0;j<8;j++)
{
fscanf(fp,"%c",&matrix[i][j]);
}
fscanf(fp,"%c",next[0]);
}
printf("Start matrix:\n");
printmatrix();
printf("\n");
int GlobalX,GlobalY,counter=0,cx,cy;
while(1)
{
for (GlobalY=0;GlobalY<8;GlobalY++)
{
for (GlobalX=0;GlobalX<8;GlobalX++)
{
if(matrix[GlobalY][GlobalX]==0x31)break;
}
if(matrix[GlobalY][GlobalX]==0x31)break;
}
if(matrix[GlobalY][GlobalX]!=0x31)exit(0);
while((GlobalX!=0)&&(matrix[GlobalY][GlobalX-1]!=0x30))GlobalX--;
while((GlobalY!=0)&&(matrix[GlobalY-1][GlobalX]!=0x30))GlobalY--;
j=GlobalX;
i=GlobalY;
cx=0;
cy=0;
while(matrix[i][j]==0x31)
{
cx++;
j++;
}
j=GlobalX;
while(matrix[i][j]==0x31)
{
cy++;
i++;
}
for(i=0;i<cy;i++)
{
for(j=0;j<cx;j++)
{
matrix[GlobalY+i][GlobalX+j]=0x30;
}
}
counter++;
printmatrix();
printf("\n\ncount=%d\n\n",counter);
getch();
}
}
Приклад виконання програми
Висновок. На даній лабараторній роботі я навчився розв’язувати задачі за допомогою паралельних алгоритмів. Програма може пряцювати з кожним прямокутником як незалежним об’єктом і рахувати їх немовби паралельно.