массивы в си

Тема в разделе "C/C++/C#", создана пользователем aurora87, 1 апр 2010.

Статус темы:
Закрыта.
  1. aurora87

    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.
    Код (Text):
    #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]);
    }
     
  2. zeus

    zeus Гость

    Вот как я бы решил эту задачу...
    Код (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
     
  3. Rob

    Rob Гость

    помогите пожалуйста решить:С помощью генератора случайных чисел создать массив и записать его в функцию и увеличить его элементы на 5
    заранее благодарен
    нужно срочно
     
Загрузка...
Похожие Темы - массивы си
  1. Искушенный
    Ответов:
    0
    Просмотров:
    427
  2. Искушенный
    Ответов:
    1
    Просмотров:
    414
  3. Искушенный
    Ответов:
    1
    Просмотров:
    381
  4. Rpp
    Ответов:
    1
    Просмотров:
    807
  5. romanovbadboy2
    Ответов:
    0
    Просмотров:
    667
Статус темы:
Закрыта.

Поделиться этой страницей