Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lab 05 #1

Merged
merged 9 commits into from
Dec 19, 2024
Prev Previous commit
Next Next commit
Сделал меню для симуляции
  • Loading branch information
whxeqh committed Nov 12, 2024
commit bfb89a919950f5a55b78c306f75382628325f47e
24 changes: 24 additions & 0 deletions lab_05/inc/simulation_arr.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#ifndef __SIMULATION_ARR_H__
#define __SIMULATION_ARR_H__

#define RESET "\033[0m"
#define RED "\033[31m"
#define GREEN "\033[32m"
#define YELLOW "\033[33m"
#define BLUE "\033[34m"
#define MAGENTA "\033[35m"
#define CYAN "\033[36m"
#define BOLD "\033[1m"

typedef struct
{
double time_in_min;
double time_in_max;
double time_out_min;
double time_out_max;
} tymes_t;


void simulate_arr_queue(void);

#endif //__SIMULATION_ARR_H__
14 changes: 14 additions & 0 deletions lab_05/inc/simulation_list.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#ifndef __SIMULATION_LIST_H__
#define __SIMULATION_LIST_H__

typedef struct
{
double time_in_min;
double time_in_max;
double time_out_min;
double time_out_max;
} tymes_t;

void simulate_list_queue(void);

#endif //__SIMULATION_ARR_H__
4 changes: 3 additions & 1 deletion lab_05/src/arr_queue.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "operations.h"
#include "arr_queue.h"
#include "errors.h"
#include "simulation_arr.h"

void act_arr_queue_add_elem(arr_queue_t *queue)
{
Expand Down Expand Up @@ -78,5 +79,6 @@ void act_arr_queue_clear_elems(arr_queue_t **queue)

void act_arr_queue_simulate(void)
{

simulate_arr_queue();
printf(BOLD GREEN "Симуляция на очередей на массиве прошла успешно!\n\n" RESET);
}
4 changes: 3 additions & 1 deletion lab_05/src/list_queue.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "operations.h"
#include "list_queue.h"
#include "errors.h"
#include "simulation_list.h"

void act_list_queue_add_elem(list_queue_t *queue)
{
Expand Down Expand Up @@ -106,5 +107,6 @@ void act_list_print_del_addresses(list_queue_del_array_t *del_array)

void act_list_queue_simulate(void)
{
//errors_e rc = OK;
simulate_list_queue();
printf(BOLD GREEN "Симуляция на очередей на списках прошла успешно!\n\n" RESET);
}
109 changes: 109 additions & 0 deletions lab_05/src/simalation_arr.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
#include "simulation_arr.h"
#include "errors.h"
#include "operations.h"
#include "arr_queue.h"
#include <stdio.h>
#include <stdlib.h>

typedef enum
{
ACT_EXIT,
ACT_T1_IN,
ACT_T2_IN,
ACT_T1_OUT,
ACT_T2_OUT,
ACT_SIMULATE,
ACT_UNKNOWN
} actions_simulate_e;

static tymes_t T1 = { .time_in_min = 1.0, .time_in_max = 5.0, .time_out_min = 0.0, .time_out_max = 4.0 };
static tymes_t T2 = { .time_in_min = 0.0, .time_in_max = 3.0, .time_out_min = 0.0, .time_out_max = 1.0 };

static void print_menu(void)
{
fprintf(stdout,"\n\
Меню: \n\n\
"BOLD" Опции подпрограммы симуляции очередей: "RESET" \n\
__________________________________________________________\n\
| 0) Выход из подпрограммы |\n\
| 1) Изменить диапазон времени прибыти для T1 |\n\
Текущий диапазон T1: min = %lf, max = %lf \n\
\n\
| 2) Изменить диапазон времени прибыти для T2 |\n\
Текущий диапазон T2: min = %lf, max = %lf \n\
\n\
| 3) Изменить диапазон времени обработки для T1 |\n\
Текущий диапазон T1: min = %lf, max = %lf \n\
\n\
| 4) Изменить диапазон времени обработки для T2 |\n\
Текущий диапазон T2: min = %lf, max = %lf \n\
\n\
| 5) Просимулировать очередь с заданными параметрами |\n\
|_________________________________________________________|\n\n",\
T1.time_in_min, T1.time_in_max, T2.time_in_min, T2.time_in_max,\
T1.time_out_min, T1.time_out_max, T2.time_out_min, T2.time_out_max);
}

static void ui(void)
{
actions_simulate_e act = ACT_UNKNOWN;

do
{
print_menu();
printf("\nВведите пункт меню: ");

int temp_act;
if (fscanf(stdin, "%d", &temp_act) != 1)
{
print_error(ERR_IO);
exit(ERR_IO);
}

act = (actions_simulate_e)temp_act;

if (act < ACT_EXIT || act > ACT_SIMULATE)
{
print_error(ERR_ACT);
continue;
}

puts("");

switch (act)
{
case ACT_T1_IN:
printf("\nВведите минимальный и максимальный диапазон прибытия T1: ");
scanf("%lf%lf", &T1.time_in_min, &T1.time_in_max);
printf(GREEN BOLD "Диапазон успешно изменён!" RESET);
break;
case ACT_T2_IN:
printf("\nВведите минимальный и максимальный диапазон прибытия T2: ");
scanf("%lf%lf", &T2.time_in_min, &T2.time_in_max);
printf(GREEN BOLD "Диапазон успешно изменён!" RESET);
break;
case ACT_T1_OUT:
printf("\nВведите минимальный и максимальный диапазон обработки T1: ");
scanf("%lf%lf", &T1.time_out_min, &T1.time_out_max);
printf(GREEN BOLD "Диапазон успешно изменён!" RESET);
break;
case ACT_T2_OUT:
printf("\nВведите минимальный и максимальный диапазон обработки T2: ");
scanf("%lf%lf", &T2.time_out_min, &T2.time_out_max);
printf(GREEN BOLD "Диапазон успешно изменён!" RESET);
break;
default:
break;
}
} while (act != ACT_EXIT && act != ACT_SIMULATE);

if (act == ACT_EXIT)
return;
}

void simulate_arr_queue(void)
{
ui();


}
6 changes: 6 additions & 0 deletions lab_05/src/simulation_list.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#include "simulation_list.h"

void simulate_list_queue(void)
{

}