DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт про виконання лабораторної роботи № 4 з програмування: Піраміда Хеопса

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Кафедра ЕОМ

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

Рік:
2007
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Програмування
Група:
КІ-24
Коротко про документ

Про що ця робота

Звіт про виконання лабораторної роботи №4 з програмування на тему Піраміда Хеопса. Розроблено програму мовою C для пошуку оптимального шляху.

У роботі розглядаються

  • Програмування
  • Мова C
  • Алгоритми пошуку
  • Лабораторна робота
  • Динамічні структури даних

Зміст і розділи

  1. Завдання
  2. Програма
  3. Результат
  4. Висновок
Для кого:Студенти та викладачі технічних спеціальностей закладів вищої освіти.
Викладачі:Викладач кафедри ЕОМ

Ключові поняття

програмуваннялабораторна роботапіраміда хеопсамодульалгоритммова Cпам'ятьграфоптимальний шлях

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт Про виконання лабораторної роботи № 4 з програмування Тема: Піраміда Хеопса Завдання: 58. Усередині піраміди Хеопса є N кімнат, в яких встановлено M пристроїв, кожний з яких складається з двох модулів, що розташовуються в різних кімнатах, і призначені для швидкого переміщення між парою кімнат, у яких встановлені ці модулі. Переміщення відбувається за 2 умовних одиниць часу. У початковий момент часу модулі всіх пристроїв переходять у "підготовчий режим". Кожний з модулів має деякий свій цілочисельний період, під час якого він знаходиться в "підготовчому режимі". Після закінчення цього часу модуль миттєво "спрацьовує", після чого знову переходить у "підготовчий режим". Пристроєм можна скористатися тільки в той момент, коли одночасно "спрацьовують" обидва його модуля. Індіана Джонс зумів проникнути в гробницю фараона. Обстеживши її, він включив пристрої і зібрався йти, але в цей момент прокинувся охоронець гробниці. Тепер Джонсу необхідно якнайшвидше потрапити в кімнату N, у якій знаходиться вихід з піраміди. При цьому з кімнати в кімнату він може попадати тільки за допомогою пристроїв, тому що охоронець, що прокинувся, закрив всі двері у кімнатах піраміди. Написати програму, що одержує на вході опис розташування пристроїв і їхніх характеристик (періоди часу, через які "спрацьовують" ці модулі), а видає значення оптимального часу і послідовність пристроїв, якими треба скористатися, щоб потрапити з кімнати 1 у кімнату N за цей час. Програма #include <stdio.h> #include <string.h> #include <conio.h> #include <stdlib.h> #include <windows.h> /****Функція виведення кирилиці****/ void cyrillic(char* text) { char* x; int l,i,size=sizeof(text); l=strlen(text); x=(char*)malloc(size); for(i=0;i<l;i++) { x[i]=text[i]; if(x[i]=='і')x[i]='i'; if(x[i]=='І')x[i]='I'; } x[i]='\0'; CharToOem(x,x); printf(x); } void main() { int n,m,i=0,j=0,k,l; int* x; cyrillic("\n\tВведіть кількість кімнат з пристроями\n"); scanf("%d",&n); x=malloc((n*5)*sizeof(int)); for (i=0;i<n;i++) { x[i]=rand()%50; x[i+n]=rand()%50; x[i+2*n]=rand()%8+3; while(j<n) { j++; if(x[i]==x[j] && x[i+n]==x[j+n] && i!=j) { x[i]=rand()%50; j=0; } } } x[1+4*n]=1;//місце знаходження Індіана Джонс cyrillic("\n\tХарактеристики пристроїв в кімнатах\n"); printf("\n%d,%d -> %d",x[1],x[1+n],x[1+2*n]); for(i=1;x[0+4*n]!=1;i++) { for(j=0;j<n;j++) { if(i==1) { x[j+3*n]=0; } x[j+3*n]++; if(x[j+3*n]==x[j+2*n]) { x[j+3*n]=-2; } } for(j=0;j<n;j++) { if(x[j+3*n]==-2 && x[j+4*n]==1) { k=j+3*n; for(m=0;m<n;m++) { if(x[m+3*n]==-2 && m+3*n!=k) { x[m+4*n]=1;x[j+4*n]=0;l=1; printf("\n%d,%d -> %d",x[m],x[m+n],x[m+2*n]); break; } } } if(l==1) { l=0; break; } } } cyrillic("\n\tЧас за який вибереться Індіана Джонс \n"); printf("\n%d\n",i);l=0; cyrillic("\n\tКімнати в яких є пристрої позначні 1\n"); for(i=0;i<50;i++) { for(j=0;j<50;j++) { for(m=0;m<n;m++) { if(x[m]==i && x[m+n]==j) { printf("1"); l=1; } } if(l==0) printf("0"); l=0; } printf("\n"); } } Результат:  Висновок: На дані лабораторні роботі ми навчилися використовувати певні типи даних до різних за типом задач.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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