1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

массивы в си

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

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

    aurora87 Гость

    Репутация:
    0
    Задача: даны периоды времени 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]);
    }
     
  2. zeus

    zeus Гость

    Репутация:
    0
    Вот как я бы решил эту задачу...
    Код:
    #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 Гость

    Репутация:
    0
    помогите пожалуйста решить:С помощью генератора случайных чисел создать массив и записать его в функцию и увеличить его элементы на 5
    заранее благодарен
    нужно срочно
     
Загрузка...
Похожие Темы - массивы си
  1. Shandrik
    Ответов:
    3
    Просмотров:
    465
  2. Искушенный
    Ответов:
    0
    Просмотров:
    558
  3. Искушенный
    Ответов:
    1
    Просмотров:
    597
  4. Искушенный
    Ответов:
    1
    Просмотров:
    570
  5. Rpp
    Ответов:
    1
    Просмотров:
    911
Статус темы:
Закрыта.

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