Перевод с++ в Swift


#1

Добрый день, моя задача переписать код с с++ на Swift

Задача не самая сложная, однако возникли проблемы с таблицей.

Каким образом можно реализовать это на Свифте?

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
struct task //структура задачи, содержащая ее свойства {
char name;
int start_priority;
int priority;
int cpu_time;
int activation_time;
int status;
int koef;
};
void table(task Mass[], int all_tasks, int takt_number)//вывод {
printf("\n%d “, takt_number);
for (int i = 0; i < all_tasks; i++) {
if (Mass[i].status == 2)
printf(”| %c |", Mass[i].name);
}
for (int i = 0; i < all_tasks; i++) {
if (Mass[i].status == 1)
printf("%c “, Mass[i].name);
}
printf(”\n");
}
int main() {
int TIME = 0;
task MassOfTasks[10];
int all_tasks = 0;
printf(“Enter number of tasks:\n”);
scanf("%d", &all_tasks);
for (int i = 0; i < all_tasks; i++)
{
printf(“Enter name of %d task:\n”, i+1);
scanf("%s", &MassOfTasks[i].name);
printf(“Enter prioriy of task:\n”);
scanf("%d", &MassOfTasks[i].priority);
MassOfTasks[i].start_priority = MassOfTasks[i].priority;
printf(“Enter cpu time of task:\n”);
scanf("%d", &MassOfTasks[i].cpu_time);
printf(“Enter activation moment of task:\n”);
scanf("%d", &MassOfTasks[i].activation_time);
2
printf(“Enter koef:\n”);
scanf("%d", &MassOfTasks[i].koef);
MassOfTasks[i].status = 0;
}
printf("\n#takt t-CPU t-ready");
while (1) {
int current_task = 0;
int current_priority = 0;
for (int i = 0; i < all_tasks; i++)
{
if (MassOfTasks[i].activation_time <= TIME)
MassOfTasks[i].status = 1;//1 - готовность
}
for (int i = 0; i < all_tasks; i++)
{
if ((MassOfTasks[i].priority > current_priority) &&
(MassOfTasks[i].status == 1) && (MassOfTasks[i].cpu_time > 0))
} }
{
} }
current_priority = MassOfTasks[i].priority;
current_task = i;
MassOfTasks[current_task].status = 2;//2 - выполнение MassOfTasks[current_task].cpu_time–; table(MassOfTasks, all_tasks, TIME); MassOfTasks[current_task].status = 1;
TIME++;
for (int i = 0; i < all_tasks; i++)
{
int k= 1 + rand() % 7;
MassOfTasks[i].priority = MassOfTasks[i].start_priority + k;//пересчет
коэффициентов }
MassOfTasks[current_task].priority = current_priority;
//если все процессы выполнены, программма
int flag = 0;
for (int i = 0; i < all_tasks; i++)
{
if (MassOfTasks[i].cpu_time > 0)
flag = 1;
}
if (!flag)
return 0;


#2

Добавьте краткое описание кода, что он делает. В разы легче будет вам помочь.


#3

Это эмуляция диспетчера задач.
Диспетчер на основе дисциплины с динамическими приоритетами, изменяю- щимися по формуле Pri=Pr0i+ki., где ki – случайное число, текущая задача выполняется до конца, а затем начинается выполнение готовой задачи с максимальным приоритетом.