Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825

Среднее арифметическое (интересный вариант)

22.11.2016, 11:49. Показов 1730. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем суть в том, что у нас есть бочки с жидкостью (Для понимания пусть будет жидкий азот)

допустим 3 штуки

8л 4л 2л

И подковырочка. Если из 1 бочки переливать жидкость в другую, то 50% будет испаряться

*****

Т.е на вход нам подают

3 50
8 4 2

Где 3 - кол-во бочек, 50 - % испарения
И нам нужно вычислить какое максимальное одинаковое число мы можем получить в каждой из бочек (С наименьшими потерями конечно)

В нашем случае получится по 4
*****

Число не обязательно должно быть целым.. (% и количество бочек может меняться в зависимости от условия)
Мне кажется тут должна быть какая то формула..
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.11.2016, 11:49
Ответы с готовыми решениями:

найти среднее арифметическое (нужен самый простой вариант)
Найти среднее арифметическое введенных пользователем чисел

Найти среднее арифметическое квадратов и среднее арифметическое абсолютных значений двух вещественных чисел
Всем здрасте помогите плиз. Дается два вещественных числа. Найти среднее арифметическое их квадратов и среднее арифметическое их абсолютных...

Вычислите среднее арифметическое положительных и среднее арифметическое отрицательных чисел
Дано n вещественных чисел,которые вводятся с клавиатуры. Вычислите среднее арифметическое положительных и среднее арифметическое...

21
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
22.11.2016, 16:57
Лучший ответ Сообщение было отмечено MakcPletnev как решение

Решение

Цитата Сообщение от MakcPletnev Посмотреть сообщение
Мне кажется тут должна быть какая то формула..
Ну да, система линейных уравнений, которую потом можно решать любыми способами, хоть гауссом, например.
Для трех бочек будет система из двух линейных уравнений с двумя неизвестными.
Если содержимое бочек обозначить через A, B, C в порядке убывания, а заданный процент испарения через P, а искомую величину через max, то получим:
max = A - x,
где
x = ((1 + k)*A - B - kC) / (k^2 + k + 1),
где k = (100 - P) / 100.
1
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
22.11.2016, 17:01  [ТС]
Mr.X, так.. А как быть если бочек больше? По условию у нас может быть до 10000 штук..

Добавлено через 2 минуты
Как программно решить такую задачу..
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
22.11.2016, 17:28
Цитата Сообщение от MakcPletnev Посмотреть сообщение
Как программно решить такую задачу..
Ну, можно выравнивать не все сразу, а по очереди. Сначала сравнять две первые. Затем три, и так далее.
1
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
22.11.2016, 17:33  [ТС]
Mr.X, точно. Спасибо

Добавлено через 4 минуты
Mr.X, хотя... что то не понятно..
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
22.11.2016, 17:45
Цитата Сообщение от MakcPletnev Посмотреть сообщение
хотя... что то не понятно..
Ну, пусть у нас первые n бочек содержат A единиц жидкости. Выравниваем содержимое со следующей бочкой, в которой B единиц. Из каждой с A берем x единиц и переливаем в B.
Получим:
A - x = B + n*k*x,
где k - коэффициент испарения.
Отсюда получим
x = (A - B) / (1 + n*k),
а содержимое A1 каждой из n + 1 бочек будет равно:
A1 = A - x.
1
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
22.11.2016, 17:48  [ТС]
Mr.X, дак в бочках то не обязательно по А жидкости

Бочек может быть 10 с
9 8 7 6 5 4 3 2 1 0 жидкостью ..
Вы вроде пишите на плюсах, накидайте пожалуйста общий код)
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
22.11.2016, 19:33
Ой, пардон, вышеизложенная гипотеза была ложной. Таким способом у нас одни и те же порции жидкости будут переливаться по нескольку раз, вызывая лишние испарения, и мы оптимального результата не достигнем.
1
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
23.11.2016, 12:08  [ТС]
Mr.X, другого варианта нет)?

Добавлено через 18 секунд
Все же интересно решение данной задачи
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.11.2016, 17:05
Цитата Сообщение от MakcPletnev Посмотреть сообщение
Mr.X, другого варианта нет)?
Вот это, по-моему, точно он!
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
///////////////////////////////////////////////////////////////////////////////
//1.
///////////////////////////////////////////////////////////////////////////////
//Т.е на вход нам подают
 
//3 50
//8 4 2
 
//Где 3 - кол-во бочек, 50 - % испарения
//И нам нужно вычислить какое максимальное одинаковое число мы можем
//получить в каждой из бочек (С наименьшими потерями конечно)
 
//По условию у нас может быть до 10000 штук.
///////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <vector>
///////////////////////////////////////////////////////////////////////////////
typedef std::vector     < double    >   T_values;
typedef long long                       T_int;
///////////////////////////////////////////////////////////////////////////////
int     get_rand_val_in_segment
    (
        T_int   min,
        T_int   max
    )
{
    return  rand() % ( max - min + 1 ) + min;
}
///////////////////////////////////////////////////////////////////////////////
T_values    get_rand_values( T_int  n )
{
    const   T_int   min     =   1;
    const   T_int   max     =   1000;
 
    T_values    res(n);
 
    for( auto   &   val     :   res )
    {
        val     =   get_rand_val_in_segment     (
                                                    min,
                                                    max
                                                );
    }//for
 
    return  res;
}
///////////////////////////////////////////////////////////////////////////////
T_int   get_rand_percent()
{
    return  get_rand_val_in_segment( 0, 100 );
}
///////////////////////////////////////////////////////////////////////////////
double  get_max_average
    (
        T_values    const   &   values,
        double                  percent
    )
{
    auto    values_sort     =   values;
 
    std::sort
        (
            values_sort.begin       (),
            values_sort.end         (),
            std::greater< T_int >   ()
        );
 
    auto    k   =   (100 - percent) / 100;
 
    double  sum{};
 
    for( auto   val     :   values_sort )
    {
        sum     +=  val;
    }
 
    double  sum_L       {};
    double  sum_R       { sum };
 
    T_int   count_L     {};
    T_int   count_R     {   values_sort.size()  };
    double  res         {};
 
    for( size_t  i{}; i < values_sort.size() - 1; ++i )
    {
        sum_L   +=  values_sort[i];
        sum_R   -=  values_sort[i];
 
        ++count_L;
        --count_R;
 
        auto    x   =       ( count_R * sum_L   -   count_L * sum_R )
                        /   ( count_R           +   count_L * k     );
 
        auto    average_val     =   ( sum_L - x ) / count_L;
 
        if  (
                    average_val     <=  values_sort[i]
                &&  average_val     >=  values_sort[i + 1]
 
                &&  (
                            i               ==  0
                        ||  average_val     >   res
                    )
            )
        {
            res     =   average_val;
        }//if
    }//for
 
    return      res;
}
///////////////////////////////////////////////////////////////////////////////
void    print_values( T_values  const   &   values )
{
    for( auto   val     :   values )
    {
        std::cout   <<  val <<  '\t';
    }
    std::cout   <<  std::endl;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    srand(unsigned(time(0)));
 
    std::cout   <<  "n\t\t= ";
    T_int   n{};
    std::cin    >>  n;
 
    auto            values          =   get_rand_values     (n);
    auto            percent         =   get_rand_percent    ();
 
    auto            max_average     =   get_max_average     (
                                                                values,
                                                                percent
                                                            );
 
    if  (
            n   <   100
        )
    {
        print_values( values );
    }
 
    std::cout   <<  "p\t\t= "           <<  percent         <<  std::endl
                <<  "max_average\t= "   <<  max_average     <<  std::endl;
}
1
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
28.11.2016, 16:33  [ТС]
Mr.X, никак не могу разобраться:
Миниатюры
Среднее арифметическое (интересный вариант)  
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
28.11.2016, 16:43
Попробуйте добавить #include <functional>
1
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
28.11.2016, 17:15  [ТС]
MrGluck, разобрался) Спасибо!

Добавлено через 31 минуту
Mr.X, потестировал в тех вариантах что я дал выводит верные ответы, но допустим в варианте

5 штук, 26 %
42 65 23 43 64

Выданный ответ не верный:
45.4152
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.11.2016, 18:32
Цитата Сообщение от MakcPletnev Посмотреть сообщение
Выданный ответ не верный:
45.4152
Почему неверный? А какой же верный по-вашему?
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
28.11.2016, 20:36  [ТС]
Mr.X, ну задача в систему не заходит Какой верный я не знаю)
Так же алгоритм выводит неверно, если всего 1 бочка, но это частный случай
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.11.2016, 20:43
Цитата Сообщение от MakcPletnev Посмотреть сообщение
задача в систему не заходит
А где вы тестируете?
1
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
28.11.2016, 20:45  [ТС]
Mr.X, по тестам,в закрытой системе. Правильных ответов там не выдает. Есть разве что список тестов
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.11.2016, 21:30
Цитата Сообщение от MakcPletnev Посмотреть сообщение
по тестам,в закрытой системе.
Тогда давайте таки начнем с условия задачи. Приведите его уже в точности так, как оно сформулировано в вашей закрытой системе.
1
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
28.11.2016, 21:32  [ТС]
Mr.X, отправил его вам в лс. Просьба не раскрывать задание в исходном виде
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.11.2016, 21:56
Цитата Сообщение от MakcPletnev Посмотреть сообщение
отправил его вам в лс
А, ну теперь понятно почему это решение не засчитывается. В условии требуется выводить 6 знаков после точки. Добавьте, и будет работать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.11.2016, 21:56
Помогаю со студенческими работами здесь

Найти среднее арифметическое значение четных элементов и среднее арифметическое нечетных элементов и сравнить их между собой
Найти среднее арифметическое значение четных элементов и среднее арифметическое нечетных элементов и сравнить их между собой. Вот часть...

Вычислить среднее арифметическое и среднее геометрическое нечетных чисел, кратных 7 в диапазоне от M1 до M2
Вычислить среднее арифметическое и среднее геометрическое нечетных чисел, кратных 7 в диапазоне от M1 до M2

Даны два целых числа; найти их среднее арифметическое, их среднее геометрическое
Даны два целых числа найти их среднее арифмитическое их среднее геометрическое Заголовок темы продумываем

Найти среднее геометрическое и среднее арифметическое элементов главной диагонали матрицы
Написать функцию которая находит среднее геометрические и среднее арифметические элементы главной диагонали матрицы, заполнить и выполнить...

Вычислить среднее арифметическое и среднее геометрическое положительных элементов матрицы
Составить функцию что вычесляет среднее арифметическое и среднее геометрическое положительных элементов матрицы.Помогите пожалуйста


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru