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

Написать количество предприятий типа А и Б через К лет.

08.04.2013, 22:41. Показов 744. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дано Н предприятий типа А и М предприятий типа Б. За год создается от 0 до 3 предприятий типа А. За срок от 1-5 лет предприятие А превращается в предприятие Б. Чере 2-4 года предприятие Б делится на предприятие А и Б. Написать количество предприятий типа А и Б через К лет.

Добавлено через 57 секунд
Никак ничего придумать не могу.В этом алгоритме рандом нужен или нет???Помогите пожалуйста!!! Благодарность гарантирую
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2013, 22:41
Ответы с готовыми решениями:

Рассчитать величину вклада через заданное количество лет
Вечер добрый! Прошу помощи, товарищи! Составить программу для решения приведенной ниже задачи...

Вычислить, сколько роботов будет через определенное количество лет
Есть определенное количество роботов (ввести с клавиатуры). В начале года они делятся на группы по...

Выяснить сколько кроликов будет у общины через заданное количество лет
Вы произвели большое впечатление на старейшину, он понял, что такому человеку как вы стоит...

Выяснить, сколько кроликов будет у общины через заданное количество лет
Вы произвели большое впечатление на старейшину, он понял, что такому человеку как вы стоит...

10
2 / 2 / 1
Регистрация: 23.11.2011
Сообщений: 87
08.04.2013, 22:45 2
чистая математика, нарисуйте на бумажке, что будет с разными входными данными, и посмотрите на закономерность, плюс в инете подобных заданий решено не мало.

P.S. гарантирую
0
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 6
08.04.2013, 22:50  [ТС] 3
Понимаешь, если бы там было какое-нибудь точное число, но там от 0-3 от 1 до 5 и т.д Тут рандом в алгоритме или нет???
0
2 / 2 / 1
Регистрация: 23.11.2011
Сообщений: 87
08.04.2013, 23:12 4
Как вариант использовать парметры, составь уравнение с парметрами или систему, диапазоны знаешь, наверняка они будут иметь пересечения, возможно, необходимо получить "общий" параметр, которому и задавать потом рандом.
0
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 6
08.04.2013, 23:22  [ТС] 5
Да я уже запарился нефига не получается
0
2 / 2 / 1
Регистрация: 23.11.2011
Сообщений: 87
08.04.2013, 23:36 6
Ну тогда жди математиков кстати попробуй на мат форум написать...
0
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 6
09.04.2013, 01:00  [ТС] 7
на мат не пишут ничего
0
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
09.04.2013, 05:58 8
я думаю, от вас требуется простое моделирование на основе рандомных параметров.
0
_
317 / 151 / 27
Регистрация: 08.10.2011
Сообщений: 432
09.04.2013, 11:34 9
оно?
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
 
inline int getAPeriod() { return rand() % 5 + 1; }
inline int getBPeriod() { return rand() % 3 + 2; }
 
int main()
{
//  srand( time( 0 ) );
 
    int H, M;
    int K;
    vector< int > A;
    vector< int > B;
 
    cin >> H >> M >> K;
 
    for ( int j = 0; j < H; ++j )
        A.push_back( getAPeriod() );
    make_heap( A.begin(), A.end(), greater< int >() );
    for ( int j = 0; j < M; ++j )
        B.push_back( getBPeriod() );
    make_heap( B.begin(), B.end(), greater< int >() );
 
    for ( int i = 1; i < K; ++i )
    {
        while ( A.size() > 0 && A.front() == i )
        {
            pop_heap( A.begin(), A.end(), greater< int >() );
            A.pop_back();
            B.push_back( getBPeriod() + i );
            push_heap( B.begin(), B.end(), greater< int >() );
        }
        while ( B.size() > 0 && B.front() == i )
        {
            pop_heap( B.begin(), B.end(), greater< int >() );
            B.back() = getBPeriod() + i;
            push_heap( B.begin(), B.end(), greater< int >() );
            A.push_back( getAPeriod() + i );
            push_heap( A.begin(), A.end(), greater< int >() );
        }
    }
 
    cout << "A: " << A.size() << endl;
    cout << "B: " << B.size() << endl;
 
    return 0;
}
Добавлено через 53 минуты
Упс, забыл про добавление 0-3 предприятий типа А.
Допишите сами, тут всё легко, заодно и поймете как программа работает

Добавлено через 57 минут
Версия 2 (с турбонаддувом и учетом всех условий):
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
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <cstdlib>
using namespace std;
 
inline int getAPeriod() { return rand() % 5 + 1; }
inline int getBPeriod() { return rand() % 3 + 2; }
 
int main()
{
    int H, M, K;
 
    cin >> H >> M >> K;
 
    int *AtoB = new int [ K + 5 ]; //магическое число 5 зависит от периодов преобразования предприятий (максимальный срок)
    int *BtoAB = new int [ K + 5 ];
    int A = H;
    int B = M;
 
    for ( int i = 0; i < K; ++i ) { AtoB[ i ] = 0, BtoAB[ i ] = 0; }
    for ( int j = 0; j < H; ++j ) ++AtoB[ getAPeriod() ];
    for ( int j = 0; j < M; ++j ) ++BtoAB[ getBPeriod() ];
 
    for ( int i = 0, m; i < K; ++i )
    {
        m = rand() % 4;
        for ( int j = 0; j < m; ++j ) // добавляем 0-3 предприятия типа А
            ++AtoB[ getAPeriod() + i ];
        A += m;
        for ( int j = 0; j < AtoB[ i ]; ++j ) // преобразуем предприятия типа А в В
        {
            ++BtoAB[ getBPeriod() + i ];
        }
        A -= AtoB[ i ];
        B += AtoB[ i ];
        for ( int j = 0; j < BtoAB[ i ]; ++j ) // делим предприятие типа В на А и В
        {
            ++BtoAB[ getBPeriod() + i ];
            ++AtoB[ getAPeriod() + i ];
        }
        A += BtoAB[ i ];
    }
 
    cout << "A: " << A
        << "\nB: " << B << endl;
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 6
09.04.2013, 12:29  [ТС] 10
не работает((( Милион ошибок пишет

Добавлено через 1 минуту
Подожди у тебя какой компилятор???

Добавлено через 8 минут
РАБОТАЕТ!!!))))))
0
_
317 / 151 / 27
Регистрация: 08.10.2011
Сообщений: 432
09.04.2013, 12:32 11
Цитата Сообщение от dmitrii131 Посмотреть сообщение
не работает((( Милион ошибок пишет
пытайтесь снова и снова, однажды вам удастся запустить эту программу. может нужен легкий танец с бубном?
Цитата Сообщение от dmitrii131 Посмотреть сообщение
Подожди у тебя какой компилятор???
запускал на mingw и на Borland C++ compiler. на 99.9% уверен, что запустится и на VC++
0
09.04.2013, 12:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2013, 12:32
Помогаю со студенческими работами здесь

Определить, через сколько лет средняя продолжительность жизни превысит 60 лет
Средняя продолжительность жизни населения региона равна А лет. Ожидается ее ежегодный рост на р %...

Через сколько лет совпадут все три характеристики предприятий?
Народ плиз помогите решить одну задачку!!! Для некоторого предприятия каждый второй год является...

Написать программу, позволяющую графически находить количество лет
Цена первой детали – 100 рублей. Второй детали – 1000 рублей. Первая деталь дорожает на X процентов...

Написать программу, вычисляющую количество полных лет человека на определенную дату.
Заранее очень благодарен за помощь. А то что-то не могу разобраться:(...


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

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