A
aurora87
Задача: даны периоды времени t1,t2,…tn, необходимые для выполнения n программ.
Нужно реализовать следующий пример:
Пример:
n=3;
период мультиплексирования =4 ед. времени;
периоды времени: t1=4, t2=7, t3=8;
На первом шаге очередь имеет вид: 8 7 4.
После предоставления кванта времени первой проге она из очереди выбывает, так как успевает за это время выполниться и очередь имеет вид: 8 7.
Затем время центр.процессора предоставляется следующей программе. Выполниться за 4 ед. времени она не успевает и помещается в конец очереди, при этом уменьшается время, необходимое на ее выполнение.
3 8.
После следующего шага: 4 3.
Очередная программа выбывает из очереди: 4.
Алгоритм заканчивает работу, когда очередь станет пустой, т.е. все программы выполнятся.
Я сделала в массивах, но у меня что-то неправильно работает, пропускает этап: 4 3.
Нужно реализовать следующий пример:
Пример:
n=3;
период мультиплексирования =4 ед. времени;
периоды времени: t1=4, t2=7, t3=8;
На первом шаге очередь имеет вид: 8 7 4.
После предоставления кванта времени первой проге она из очереди выбывает, так как успевает за это время выполниться и очередь имеет вид: 8 7.
Затем время центр.процессора предоставляется следующей программе. Выполниться за 4 ед. времени она не успевает и помещается в конец очереди, при этом уменьшается время, необходимое на ее выполнение.
3 8.
После следующего шага: 4 3.
Очередная программа выбывает из очереди: 4.
Алгоритм заканчивает работу, когда очередь станет пустой, т.е. все программы выполнятся.
Я сделала в массивах, но у меня что-то неправильно работает, пропускает этап: 4 3.
Код:
#include <stdio.h>
#include <conio.h>
#define N 10
void main()
{
int a[N];
int t,n;
int i,j,s,d;
clrscr();
printf("\nVvedite kolichestvo programm: ");
scanf("%d",&n);
printf("\nVvedite period myltiplecsirovania: ");
scanf("%d",&t);
printf("\nVvedite periody vremeny:\n");
for(i=0;i<n;i++)
scanf("\n%d",&a[i]);
for(i=n-1;i>=0;i--)
{
if((a[i]==t)||(a[i]<t))
{
for(j=i;j<n-1;j++)
a[j]=a[j+1];
n--;
printf("\n\n");
for(i=0;i<n;i++)
printf("\n%d",a[i]);
printf("\n\n");
}
else
if (a[i]>t)
{
a[i]=a[i]-t;
for(j=i;j>=0;j--)
{ a[j+1]=a[j];
printf("\n%d",a[j]);
}
printf("\n\n");
a[0]=a[j+1];
}
}
printf("\n\n");
for(i=0;i<n-1;i++)
printf("\n%d",a[i]);
}