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

про маршутку - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Собрать все отрицательные элементы выше побочной диагонали http://www.cyberforum.ru/cpp-beginners/thread178186.html
Помогите пожалуйста, суть:. Дана матрица целых чисел. Собрать все отрицательные элементы выше побочной диагонали , получается абсолютно все, и ввод матрицы и вывод на экран все робит, подскажите с...
C++ Выполнить линейное сдвиг элементов массива, расположенных в нечетных позициях Задание вот : Дано натуральное число N и одномерный массив A1, A2, ..., AN символьных элементов. Выполнить линейное сдвиг влево вправо элементов, расположенных в нечетных позициях, на 3 позиции.... http://www.cyberforum.ru/cpp-beginners/thread178178.html
Найти количество полученных групп, содержащих нули. C++
Дан одномерный массив А, состоящий из N элементов. Считаем, что отрицательные элементы разбивают его на группы. Найти количество полученных групп, содержащих нули.
C++ Массивы. Замена элементов.
Дана последовательность из n вещественных чисел. Если в результате замены отрицательных элементов последовательности их квадратами элементы будут образовывать неубывающую последовательность, то...
C++ Файлы и массивы http://www.cyberforum.ru/cpp-beginners/thread178162.html
Всем добрый вечер. Прошу помочь в след. проге. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в...
C++ Найти max и min значения в массиве Подскажите плиз . Задание звучит так : взять произвольный массив из 10 чисел и чтобы программа определила максимум и минимум из этих чисел . Я просто не знаю как правильно цикл составить и какие... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
20.10.2010, 01:54
PointsEqual, программа неправильно работает при вводе значений 4, 4, 1.
Правильное решение:
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
///////////////////////////////////////////////////////////////////////////////////
//В час пик на остановку одновременно подъехали три маршрутных такси, 
//следующие по одному маршруту, в которые тут же набились пассажиры. 
//Водители обнаружили, что количество людей в разных маршрутках разное, 
//и решили пересадить часть пассажиров так, чтобы в каждой маршрутке
//было поровну пассажиров. Требуется определить, какое наименьшее 
//количество пассажиров придется при этом пересадить. 
///////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <numeric>
#include <vector>
///////////////////////////////////////////////////////////////////////////////////
typedef std::vector<int>  T_nums;
///////////////////////////////////////////////////////////////////////////////////
struct T_add_surplus
{
    int  average_val_;
    T_add_surplus(int average_val) : average_val_(average_val)
    {}
    //-----------------------------------------------------------------------------
    int operator() (int sum, int cur_val)
    {
        int surplus = cur_val - average_val_;
        
        return sum + (surplus > 0 ? surplus : 0);
    }
};
///////////////////////////////////////////////////////////////////////////////////
int  replaced_passengers_count(T_nums  nums)
{
    int sum = std::accumulate(nums.begin(), nums.end(), 0);
    if(sum % nums.size() != 0)
    {
        return -1;
    }
    int average_val = sum / nums.size();
    return std::accumulate(nums.begin(), nums.end(), 0, T_add_surplus(average_val));
}
///////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    for(;;)
    {
        std::cout << "Введите количество маршруток: ";
        int n;
        std::cin >> n;
        if(n <= 0)
        {
            break;
        }
        
        T_nums  nums(n);
        std::cout << "Введите число пассажиров в каждой маршрутке: "
                  << std::endl;
        for(int i = 0; i < n; ++i)
        {
            std::cout << "#"
                      << i + 1
                      << ": ";
            std::cin >> nums[i];
        }
        int res = replaced_passengers_count(nums);
        if(res < 0)
        {
            std::cout << "Нет решения.";
        }
        else
        {
            std::cout << "Чтобы в маршрутках пассажиров было поровну, нужно пересадить "
                      << res
                      << " пассажиров.";
 
        }
        std::cout << std::endl
                  << std::endl
                  << std::endl
                  << std::endl;    
    }
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru