массивы в си

  • Автор темы aurora87
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

aurora87

#1
Задача: даны периоды времени 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.
Код:
#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]);
}
 
Z

zeus

#2
Вот как я бы решил эту задачу...
C++:
#include <iostream>
#include <queue>
using namespace std;

int T;
queue<int> Q;

void input(void)
{
int n,p;

cout << "Vvedite kolichestvo programm: " << endl;
cin >> n;

cout << "Vvedite period myltiplecsirovania: " << endl;
cin >> T;

cout << "Vvedite periody vremeny: " << endl;
while (n-- > 0)
{
cin >> p;
Q.push(p);
} // while
} // input

void output(void)
{
for (queue<int>::const_iterator i = Q.begin(); i != Q.end(); ++i)
{
cout << (*i) << ' ';
} // for
cout << endl;
} // output

int main(void)
{
input();

while (!Q.empty())
{
output();

int p = Q.back();
Q.pop();

if (p > T) Q.push(p - T);
} // while
} // main
 
R
#3
помогите пожалуйста решить:С помощью генератора случайных чисел создать массив и записать его в функцию и увеличить его элементы на 5
заранее благодарен
нужно срочно
 
Статус
Закрыто для дальнейших ответов.