Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 3
1

Загрузка параллельной системы на С++

08.06.2017, 14:53. Показов 657. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Помогите запрограммировать задачу на С++:
Рассмотрим параллельную систему из m процессоров p1,p2,...,pm, выполняющую n независимых заданий t1,t2,...,tn с временами обработки a1, a2,…,an. Каждый процессор может выполнить любое задание, прерывания запрещены. Требуется указать оптимальное по быстродействию расписание без прерываний.
Сначала отсортируем a1, a2,…,an по убыванию. Далее на первые m процессоров загружаются первые m заданий, потом на первый освободившийся процессор задание t(m+1), на второй – t(m+2) пока не будут загружены все n заданий. Для исходного расписания считаем длину, т. е. для каждого процессора сумму aj и выбираем максимум среди всех процессоров
все что смогла сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <iomanip>
#include <windows.h>
#include <time.h>
using namespace std;
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int n;
    cout << "Число заданий = "; 
    cin >> n;
    int m;
    cout << "Число процессоров = ";
    cin >> m;
    int *mas = new int[n];
    cout << "Времена обработки = ";
    for (int i = 0; i<n; i++)
        cin >> mas[i];
    cout << "Перестановочное расписание = ";
    for (int i = n - 1; i >= 1; i--)
        for (int j = 0; j < i; j++)
        {
            if (mas[j] < mas[j + 1])
            {
                int foo = mas[j];
                mas[j] = mas[j + 1];
                mas[j + 1] = foo;
            }
        }
    for (int i = 0; i<n; i++)
        cout << mas[i] << " ";
    //cout << "\n";
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2017, 14:53
Ответы с готовыми решениями:

Загрузка системы
Ребятки, нужен ваш совет. Установил систему на один из жёстких дисков (есть SSD и HDD). Так вот,...

Загрузка системы
Установлена хрюша. При загрузке сначала зависает на синем экране. После же хард-ресета система...

загрузка системы
добрый день, давно хотелось узнать, можно ли сделать что бы windows 7 не грузился,т.е вылазила...

Загрузка системы
Собственно такая проблема - очень долгая загрузка ОС при включении робочого стола, т.е. появился...

5
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
09.06.2017, 14:43 2
Цитата Сообщение от IrinaSilver Посмотреть сообщение
Рассмотрим параллельную систему из m процессоров p1,p2,...,pm, выполняющую n независимых заданий t1,t2,...,tn с временами обработки a1, a2,…,an. Каждый процессор может выполнить любое задание, прерывания запрещены. Требуется указать оптимальное по быстродействию расписание без прерываний.
Сначала отсортируем a1, a2,…,an по убыванию. Далее на первые m процессоров загружаются первые m заданий, потом на первый освободившийся процессор задание t(m+1), на второй – t(m+2) пока не будут загружены все n заданий. Для исходного расписания считаем длину, т. е. для каждого процессора сумму aj и выбираем максимум среди всех процессоров
Примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
 
inline ostream& operator <<( ostream& out, const vector<int>& obj ) {
   copy( obj.begin(), obj.end(), ostream_iterator<int>( out, " " ) );
   return out << endl;
}
 
int main( int argc, char *argv[] ) {
   const int m = 3;
   vector<int> p( m );
   vector<int> a( { 20, 1, 2, 3, 10, 7, 13, 17 } );
   cout << a;
   sort( a.begin(), a.end(), greater<int>() );
   cout << a;
   while( !a.empty() ) {
      *p.begin() += *a.begin();
      cout << *a.begin() << " => " << p;
      a.erase( a.begin() );
      sort( p.begin(), p.end(), less<int>() );
   }
   cout << "максимальная длина = " << p.back() << endl;
}
Вместе с отладочными данными:
Код
[olej@dell queue]$ ./queue
20 1 2 3 10 7 13 17
20 17 13 10 7 3 2 1
20 => 20 0 0
17 => 17 0 20
13 => 13 17 20
10 => 23 17 20
7 => 24 20 23
3 => 23 23 24
2 => 25 23 24
1 => 24 24 25
максимальная длина = 25
Если вас смущают использование обобщённых алгоритмов STL, то замените их на циклы.
В остальном, думаю, всё понятно.
0
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 3
10.06.2017, 15:39  [ТС] 3
Спасибо за помощь, но почему то при запуске в Microsoft Visual Studio ругается на 17 строчку, что идентификатор не определен
C++
1
greater<int>
0
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
10.06.2017, 17:44 4
Цитата Сообщение от IrinaSilver Посмотреть сообщение
ругается на 17 строчку, что идентификатор не определен
C++
1
#include <functional>
0
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
10.06.2017, 23:09 5
Цитата Сообщение от IrinaSilver Посмотреть сообщение
ругается на 17 строчку, что идентификатор не определен
На меня не ругается - я же вам выполнение компилированного кода показал...
0
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 3
12.06.2017, 14:37  [ТС] 6
как сделать, чтобы вектор пользователь вводил с клавиатуры?

Добавлено через 23 часа 35 минут
скажите пожалуйста, а никак нельзя сделать чтобы после загрузки элемента в вектор p остальные элементы местами не менялись?
0
12.06.2017, 14:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2017, 14:37
Помогаю со студенческими работами здесь

Загрузка системы
Вырезка из справки программы &quot;Планировщик заданий&quot; Необходимо знать в чем будет отличие между...

Не происходит загрузка системы
Все стандартно..Удар по ноутбуку. Удар произошел примерно в область точпада, после этого компьютер...

Долгая загрузка системы
Всем привет! У меня такая проблема. Поставил систему W7x64 на SSD, но при перезагрузке вот это меню...

Долгая загрузка системы
При загрузке системы на черном экране выскакивает: HDD0: ST3250624AS 250 GB Non-RAID ODD0:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru