Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
IrinaSilver
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 3
#1

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

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

Всем привет. Помогите запрограммировать задачу на С++:
Рассмотрим параллельную систему из 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2017, 14:53
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Загрузка параллельной системы на С++ (C++):

Одномерные Массивы, Заполнение массива с параллельной идентификацией - C++
Здравствуйте, у меня такая задача, Студент сдал 7 экзаменов по программированию,Написать программу которая определяет какой предмет...

Найти минимальную сумму диагонали матрицы, параллельной побочной - C++
помогите найти ошибку 3 день сижу над этим кодом не могу найти ошибку отзовитесь кто-нибудь пожалуйста #include &quot;stdafx.h&quot; ...

Написать сумму всех верхних диагоналей матрицы, параллельной главной - C++
подскажите как мне написать сумму всех верхних диагоналей параллельной главной,вот я уже написал сумму всех нижних диагоналей диагоналей...

Найти среднее арифметическое элементов каждой диагонали матрицы, параллельной побочной - C++
Здравствуйте! Помогите написать 3 программмы на C++ на задачи с двумерными массивами 2. Дана квадратная матрица A порядка M. Найти...

Максимум среди сумм элементов диагоналей, параллельной главной диагонали матрицы - C++
int i,j, max = 0,sum = 0,index = n-1,dlina = 1; while(index) { for(i = 0,j = index; i &lt; dlina; ++i,...

Найти максимальный элемент для каждой диагонали матрицы, параллельной побочной - C++
Дана квадратная матрица A порядка M. Найти максимальный элемент для каждой ее диагонали, параллельной побочной (начиная с одноэлементной...

5
Olej
161 / 170 / 20
Регистрация: 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
IrinaSilver
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 3
10.06.2017, 15:39  [ТС] #3
Спасибо за помощь, но почему то при запуске в Microsoft Visual Studio ругается на 17 строчку, что идентификатор не определен
C++
1
greater<int>
0
gray_fox
What a waste!
1552 / 1257 / 74
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 3
10.06.2017, 17:44 #4
Цитата Сообщение от IrinaSilver Посмотреть сообщение
ругается на 17 строчку, что идентификатор не определен
C++
1
#include <functional>
0
Olej
161 / 170 / 20
Регистрация: 25.03.2012
Сообщений: 712
10.06.2017, 23:09 #5
Цитата Сообщение от IrinaSilver Посмотреть сообщение
ругается на 17 строчку, что идентификатор не определен
На меня не ругается - я же вам выполнение компилированного кода показал...
0
IrinaSilver
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 3
12.06.2017, 14:37  [ТС] #6
как сделать, чтобы вектор пользователь вводил с клавиатуры?

Добавлено через 23 часа 35 минут
скажите пожалуйста, а никак нельзя сделать чтобы после загрузки элемента в вектор p остальные элементы местами не менялись?
0
12.06.2017, 14:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2017, 14:37
Привет! Вот еще темы с ответами:

Найти произведение главной диагонали матрицы и всех диагоналей, параллельной данной - C++
помогите решить.срочно нужно завтра экзамен.плиз. в С++ Заранее спасибо огромное. 1. Определить самое малое и самое большое...

Составить функцию нахождения максимального элемента в диагонали матрицы, параллельной главной диагонали - C++
Составить функцию нахождения максимального элемента в диагонали матрицы, параллельной главной диагонали. Используя эту функцию в матрице...

Найти сумму элементов каждой диагонали, параллельной побочной (начиная с одноэлементной диагонали A1,1) - C++
Matrix83. Дана квадратная матрица A порядка M. Найти сумму элементов каж- дой ее диагонали, параллельной побочной (начиная с одноэлементной...

Составить функцию нахождения максимального элемента Мх в диагонали матрицы, параллельной главной диагонали - C++
Пожалуйста помогите с решением задачи на С++ Составить функцию нахождения максимального элемента Мх в диагонали матрицы, ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru