Rating@Mail.ru

Форум по операционной системе GNU/Linux и свободному программному обеспечению


Текущее время: 11 дек 2017, 12:08

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу Пред.  1, 2, 3, 4, 5
Автор Сообщение
 Заголовок сообщения: Re: примеры задач при изучении C++
Непрочитанное сообщениеДобавлено: 09 июн 2017, 13:33 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10248
Откуда: Харьков
Olej писал(а):
Вот ещё десятка 2 задач на использование STL / Boost, которая на сегодня (после C++03) является просто составной частью стандарта (стандартной библиотеки) C++ : Начала STL и контейнры C++.
Объяснять не хочется ... кому нужно - посмотрит сам.

Вот хорошая задача попалась:
Цитата:
Рассмотрим параллельную систему из m процессоров p1,p2,...,pm, выполняющую n независимых заданий t1,t2,...,tn с временами обработки a1, a2,…,an. Каждый процессор может выполнить любое задание, прерывания запрещены. Требуется указать оптимальное по быстродействию расписание без прерываний.
Сначала отсортируем a1, a2,…,an по убыванию. Далее на первые m процессоров загружаются первые m заданий, потом на первый освободившийся процессор задание t(m+1), на второй – t(m+2) пока не будут загружены все n заданий. Для исходного расписания считаем длину, т. е. для каждого процессора сумму aj и выбираем максимум среди всех процессоров

Хорошая не тем, что сложная - ничего сложного там нет - а тем, что даёт повод записать её как можно более кратко через обобщённые алгоритмы STL.


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: примеры задач при изучении C++
Непрочитанное сообщениеДобавлено: 09 июн 2017, 15:34 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10248
Откуда: Харьков
Olej писал(а):
Цитата:
Рассмотрим параллельную систему из m процессоров p1,p2,...,pm, выполняющую n независимых заданий t1,t2,...,tn с временами обработки a1, a2,…,an. Каждый процессор может выполнить любое задание, прерывания запрещены. Требуется указать оптимальное по быстродействию расписание без прерываний.
Сначала отсортируем a1, a2,…,an по убыванию. Далее на первые m процессоров загружаются первые m заданий, потом на первый освободившийся процессор задание t(m+1), на второй – t(m+2) пока не будут загружены все n заданий. Для исходного расписания считаем длину, т. е. для каждого процессора сумму aj и выбираем максимум среди всех процессоров

Хорошая не тем, что сложная - ничего сложного там нет - а тем, что даёт повод записать её как можно более кратко через обобщённые алгоритмы STL.

Код:
#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;
}

И вот как это выполняется (с отладочными выводами ... без них вся программа вообще записывается в 8 строк):
Код:
[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


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: примеры задач при изучении C++
Непрочитанное сообщениеДобавлено: 13 июн 2017, 20:04 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10248
Откуда: Харьков
Вот ещё одна любопытная, как мне кажется, задачка:
Цитата:
Программа читает текстовый файл (имя с расширением .dat, заданное в командной строке запуска).
После этого программа:
- выводит текст на экран дисплея;
- определяет количество символов в каждом слове;
- выбирает для показа самое короткое слово;
- выбранное слово выделяется цветом в выводимом тексте;
- при очередном нажатии клавиши Enter выделение перемещается на следующее по длине слово.

Но, поскольку эта задача описана в отдельной теме, касающейся цвета вывода, то см. комментарии по ней там: отображение цветом в терминале.


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу Пред.  1, 2, 3, 4, 5

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
[ Time : 0.433s | 19 Queries | GZIP : On ]