DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Можливості використання паралельних алгоритмів

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра електронних обчислювальних машин

Інформація про роботу

Рік:
2013
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Паралельні та розподілені обчислення

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 3 з курсу „ Паралельні та розподілені обчислення ” Тема: Можливості використання паралельних алгоритмів Мета: дослідити можливості розв'язання різноманітних задач за допомогою паралельних алгоритмів. Навчитись виділяти паралельні гілки обчислень та виконувати їх паралельно. Завдання Варіант 11. Лабіринт задається матрицею з'єднань в якій для кожної пари кімнат вказано чи з'єднані вони коридором. Задати (ввести з клавіатури, або генерувати випадковим чином): кількість кімнат лабіринту(n), матрицю з'єднань для них, номери кімнат i та j (1<= i,j <=n). Побудувати шлях з кімнати з номером і в кімнату з номером j. Текст програмної реалізації #include <cstdio> #include <string.h> #include <stdlib.h> #include <time.h> #include <iomanip.h> int **A; int n; //***************************************** int**ManualInput(int n) { int **a, i, j; a = new int*[n]; for(i=0; i<n; i++) { a[i]= new int[n]; a[i][i]=1; } cout << endl << "Input matrix of connections (0=no; 1=yes)" << endl; for(i=0;i<n;i++) for(j=0;j<i;j++) { cout << "Is there a corridor between rooms " << (j+1) << " and " << (i+1) << ": "; cin >> a[i][j]; while (a[i][j]!=0 && a[i][j]!=1) { scanf("%d",&a[i][j]); } } for(i=0;i<n;i++) for(j=0;j<i;j++) a[j][i]=a[i][j]; return a; }//***************************************** int** AutoGen(int n) { int **a, **b, **c, i ,j; a = new int*[n]; for(i=0; i<n; i++) a[i]= new int[n]; b = new int*[n]; for(i=0; i<n; i++) b[i]= new int[n]; c = new int*[n]; for(i=0; i<n; i++) c[i]= new int[n]; for(i=0; i<n; i++) { for(j=0; j<n; j++) { if(j < i) a[i][j] = 0; else if(i == j) a[i][j] = 1; else a[i][j] = rand()%2; } } for(i=0; i<n; i++) for(j=0; j<n; j++) b[i][j] = a[j][i]; for(i=0; i<n; i++) { for(j=0; j<n; j++) { if(i == j) c[i][j] = 1; else c[i][j] = b[i][j] + a[i][j]; } } return c; } //***************************************** void Out(int **a, int n) { int i, j; for(i=0; i<n; i++) { for(j=0; j<n; j++) cout << setw(2) << a[i][j] << " "; cout << "\n"; } cout << "\n"; } //***************************************** void FindTheWay(int r1, int r2) { if(A[r1-1][r2-1] == 1) cout << r1 << " " << r2; else { int i, j, k = 0, k1 = 0, *mas1, *mas2, count1 = 0, count2 = 0; mas1 = new int[n]; mas2 = new int[n]; for(i = 0; i < n; i++) mas1[i] = 0; for(i = 0; i < n; i++) mas2[i] = 0; for(i = 0; i < n; i++) { if(A[r1-1][i] == 1) { k = i + 1; mas1[count1] = k; count1++; } } for(i = 0; i < n; i++) { if(A[i][r2-1] == 1) { k1 = i + 1; mas2[count2] = k1; count2++; } } cout << r1 << " "; for(i = 0; i < count1; i++) { for(j = 0; j < count2; j++) { if(mas1[i] == mas2[j] && mas1[i] != 0 && mas2[j] != 0) cout << mas1[i] << " "; } } cout << r2 << " "; } } void main() { srand(time(NULL)); cout << "Please enter number of rooms:" << endl; cin >> n; cout << " * MENU *\n"; cout << "1. Input matrix from keyboard\n"; cout << "2. Generate matrix of connections\n"; char menu; cin >> menu; switch (menu){ case '1': A = ManualInput(n); break; case '2': A = AutoGen(n); break; default: cout << "Wrong choice. Enter 1 or 2.\n"; } Out(A,n); int i, r1, r2; for(i = 0; i < n; i++) { cout << endl << "First room: "; do cin >> r1; while ( (r1<=0) || (r1>n) ); cout << "Second room: "; cin >> r2; if(r1 == r2) cout << " First & second rooms are the same" << endl; else FindTheWay(r1, r2); } cout << " * END *\n"; getchar(); } Приклад виконання програми Please enter number of rooms: 5 * MENU * 1. Input matrix from keyboard 2. Generate matrix of connections 2 1 1 0 0 1 1 1 0 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 1 1 First room: 1 Second room: 3 1 3 First room: 5 Second room: 3 5 4 3 Висновок: на даній лабораторній роботі я дослідив можливості розв'язання різноманітних задач за допомогою паралельних алгоритмів. Здобуті навики я закріпив на прикладі реалізації поставленої мені задачі про лабіринт.
Антиботан аватар за замовчуванням

31.03.2013 14:46

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!