Lab 8 backup
Never
//Розробити розклад бронювання місць в готелі, що забезпечив би найбільший прибуток його володарю. Менеджер готелю бронює місця на підставі отриманих замовлень з різними датами приїзду та від'їзду. Кожне бронювання номерів приносить прибуток, який залежить від типу клієнта (студент, службовець, підприємець тощо). Застосувати алгоритм Дейкстри та подати замовлення у вигляді дуги графа, що з'єднує вершини, які відповідають датам приїзду та від'їзду гостей. Вхідні дані та результати розв'язння задачі подати у текстових файлах. //вписываешь тип посетителя, даты заезда, и создаешь более выгодный путь #include <stdio.h> #include <stdbool.h> //#include<conio.h> #define infinity 999 int p[31][31]; //graph array int u = 0 ; int dist[31]; struct print{ int arrive; int depart; int type; }; void dij(int n,int v,int cost[31][31],int dist[]) { int i,count,w,flag[31],min; for(i=1;i<=n;i++){ flag[i]=0; dist[i]=cost[v][i]; } count=2; while(count<=n) { min=99; for(w=1;w<=n;w++) if(dist[w]<min && !flag[w]){ min=dist[w]; u=w; } flag[u]=1; count++; for(w=1;w<=n;w++) if((dist[u]+cost[u][w]<dist[w]) && !flag[w]) dist[w]=dist[u]+cost[u][w]; } } int main() { int ammount_v = 0; printf("Input ammount of visitors:"); scanf("%d", &ammount_v); int edges = ammount_v; printf("\nGraph:\n"); for (int i=1;i<=31;i++) { for (int j=1;j<=31;j++){ p[i][j]=999; printf("%d ", p[i][j]); } printf("\n"); } printf("\nAmmount of edges: %d\n", edges); printf("Type of visitors:\n1.Student - 100 uan/night\n2.Worker - 200 uan/night\n3.Businessman - 400 uan/nigt\nDates of next visitor should be out of range pervious(only same arrive date)\n"); int type = 0; int arrival = 0; int departure = 0; int arrivals[100]; int departures[100]; int c = 0; for(int i=0; i<edges; i++){ printf("\nInput type of visitor(1 - student; 2 - worker; 3 - businessman): "); scanf("%d", &type); if(type == 3){ type = 4; } printf("Input arrival date(from 1 to 30, != departure date of previous visitors):"); scanf("%d", &arrival); printf("Input departure date(from 2 to 31, != arrival date):"); scanf("%d", &departure); p[arrival][departure] = type; arrivals[c] = arrival; departures[c] = departure; c++; } printf("\nEdited graph:\n"); for (int i=1;i<=31;i++) { for (int j=1;j<=31;j++){ printf("%d ", p[i][j]); } printf("\n"); } int n = 31; int z = 0; int number = 0; int step = 1; FILE *file; file = fopen("/Users/andrew/Desktop/Прога/Lab 8 Kovaluk/Lab 8 Kovaluk/lab8.txt","w"); for(int i=0; i<ammount_v; i++){ if(arrivals[i]!=arrivals[i-1]){ printf("\n\nStep %d", step); step++; printf("\nDestination from date %d:",arrivals[i]); number = arrivals[i]; dij(n,arrivals[i],p,dist); int counter = 0; struct print print_arr[31]; struct print *p = print_arr; //указатель на массив структур float kostyl[93]; //сохраняет цену поездки каждого клиента с одного числа int j = 0; printf("\nShortest path:\n"); for(int i=1;i<=31;i++){ if(i!=arrivals[i]){ if(dist[i]!=999){ printf("%d->%d,type=%d\n",number,i,dist[i]); print_arr[j].arrive = number; print_arr[j].depart = i; print_arr[j].type = dist[i]; counter++; kostyl[j] = (i-number)*dist[i]; j++; z = z+3; } } } float max = kostyl[0]; int best = 0; char equal[] = "Variants are equal\n"; for(int i = 0; i < counter; i++) { if(kostyl[i] > max) { max = kostyl[i]; best = i; } else if(kostyl[counter-1] == max){ printf("Variants are equal or there is the only one(amount of money will be the same)\n"); max = infinity; } } char text[] = "Best choice will give: "; char uan[] = "uan"; char n[] = "\n"; if(max!=infinity){ printf("\nBest choice will give: %f uan\n", max*100); fwrite (&text, 24, 1, file); //printing into the text file fprintf(file,"%f", max*100); fwrite (&uan, 3, 1, file); fwrite (&n,2, 1, file); fwrite (&n,2, 1, file); printf("Choice is: %d -> %d,uan/night = %d00\n", print_arr[best].arrive, print_arr[best].depart, print_arr[best].type); char next[] = " -> "; char cost[] = " cost = "; fprintf(file,"%d", print_arr[best].arrive); fwrite (&next, 3, 1, file); fprintf(file,"%d",print_arr[best].depart); fwrite (&cost, 7, 1, file); fprintf(file,"%d",print_arr[best].type); fwrite (&n, 2, 1, file); } else if(max == infinity){ fwrite (&equal, 20, 1, file); printf("Choice is: %d -> %d,uan/night = %d00\n", print_arr[best].arrive, print_arr[best].depart, print_arr[best].type); char next[] = " -> "; char cost[] = " cost = "; fprintf(file,"%d", print_arr[best].arrive); fwrite (&next, 3, 1, file); fprintf(file,"%d",print_arr[best].depart); fwrite (&cost, 7, 1, file); fprintf(file,"%d",print_arr[best].type); fwrite (&n, 2, 1, file); } } } fclose(file); return 0; }
Raw Text
-
Jenny M. and Keana Moire Going Down On Pussy
9 min ago
-
Adult Telegram Channels
25 min ago
-
Untitled
27 min ago
-
uyu gcgdfghdsdfg dsfg
37 min ago
-
Teatime tease with busty redhead MILF Red XXX
37 min ago
-
Untitled
50 min ago
-
she wanted to be dominant but had too much DESIRE for my cock JOI Amateur Candy Love POV riding dick
1 hour ago
-
Bound Heat - Videos
1 hour ago
-
CP🍭 VIDEO 😏 R@PED😈 LITTLE GIRL 7yo🍼👧💦💦
1 hour ago
-
Untitled
1 hour ago