Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 17.03.2011
Сообщений: 11

Составить рецепт получения водного раствора

15.04.2011, 14:47. Показов 1246. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для набора веществ, имеющихся в водных растворах заданных концентраций, составить рецепт получения водного раствора их смеси заданной пропорции. Предполагать, что всегда доступно необходимое количество воды. Пример входных данных:
1:50
2:75
1:100
2:3:3:1000
(первые три пропорции задают концентрации трех веществ в воде; последняя относительные доли трех веществ и воды в искомой смеси)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.04.2011, 14:47
Ответы с готовыми решениями:

Составить программу для получения:
В файле хранится информация о поступивших в ремонт бытовых приборах: тип бытового прибора, год...

Алгоритм получения значения RGB каждого пикселя картинки
Имеется произвольная цветная картинка на компе.Каким образом вытянуть из нее значения RGB каждого...

Метод получения события о закрытии окна Win32 API
Подскажите метод (Win32 API) получения события о закрытии некоторого окна (естественно не моего...

8
 Аватар для NiceGuyEddy
220 / 143 / 35
Регистрация: 25.06.2010
Сообщений: 383
15.04.2011, 15:02
siberian_lynx, не туда по-моему.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
15.04.2011, 15:15
siberian_lynx, тебе программу написать нужно или просто алгоритм составить?
0
0 / 0 / 0
Регистрация: 17.03.2011
Сообщений: 11
15.04.2011, 17:39  [ТС]
алгоритм хотя бы прогу я сам могу написать просто въехать что сделать нужно не могу...
0
15.04.2011, 18:46
 Комментарий модератора 
перенесено в раздел "Алгоритмы"
0
294 / 206 / 2
Регистрация: 20.02.2011
Сообщений: 551
15.04.2011, 23:12
Быр-быр-быр... Что у нас понимается под "концентрациями"? Наверняка весовое соотношение с водой. Если один из исходных растворов был обозначен 1:50, значит, в нем 1 часть вещества (по весу) на 50 частей воды, так? С остальными аналогично. И вот мы хотим состряпать раствор 2:3:3:1000. Без проблем! Смотрим по главным компонентам. Берем 2 части первого раствора (при этом вносим 100 частей воды!), полторы части - второго (вносим 112.5 частей воды) и 3 части третьего (вносим 300 частей воды). Суммируем всю введенную воду - получаем 512.5 частей, а нам надо 1000. Недостающую воду добавляем. Кажись, так?
1
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
16.04.2011, 10:40
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
152
153
154
155
156
157
158
/////////////////////////////////////////////////////////////////////////////////////////
//Для набора веществ, имеющихся в водных растворах заданных концентраций, 
//составить рецепт получения водного раствора их смеси заданной пропорции. 
//Предполагать, что всегда доступно необходимое количество воды. Пример входных данных:
//1:50
//2:75
//1:100
//2:3:3:1000
//(первые три пропорции задают концентрации трех веществ в воде; 
//последняя относительные доли трех веществ и воды в искомой смеси) 
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cmath>
#include <functional>
#include <iostream>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef long long            T_mass;
typedef std::vector<T_mass>  T_masses;
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_water_solution
{
    T_mass  substance_mass_;
    T_mass  water_mass_;
    //-----------------------------------------------------------------------------------
    T_water_solution
        (
            T_mass  substance_mass, 
            T_mass  target_water_mass
        ) 
        : substance_mass_  (substance_mass), 
          water_mass_      (target_water_mass)
    {}
    //-----------------------------------------------------------------------------------
    void  to_substance_mass(T_mass  new_substance_mass)
    {
        T_mass  factor   =   new_substance_mass / substance_mass_;
        substance_mass_  *=  factor;
        water_mass_      *=  factor;
    }
    //-----------------------------------------------------------------------------------
    operator T_mass()
    {
        return  substance_mass_ + water_mass_;
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::vector<T_water_solution>  T_water_solutions;
/////////////////////////////////////////////////////////////////////////////////////////
bool  get_recipe_for_solutions_and_water_mixture
    (
        T_mass              substances_masses_product,
        T_water_solutions&  water_solutions,
        T_masses            target_substances_masses,
        T_mass              target_water_mass,        
        T_mass&             added_water_mass
    ) 
{
    added_water_mass = target_water_mass * substances_masses_product;
    for(size_t  i = 0; i < water_solutions.size(); ++i)
    {
        water_solutions[i].to_substance_mass
            (target_substances_masses[i] * substances_masses_product);
 
        added_water_mass -= water_solutions[i].water_mass_;
    }
 
    return  added_water_mass >= 0;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    for(;;)
    {
        std::cout << "Введите количество растворов: ";
        int  n = 0;
        std::cin >> n;
        if(n <= 0) break;
 
        std::cout << "Введите данные о "
                  << n
                  << " растворах (целые значения):"
                  << std::endl;
 
        T_water_solutions  water_solutions;
        T_mass          substances_masses_product = 1;
        for(int  i = 0; i < n; ++i)
        {
            std::cout << "раствор "
                      << i + 1
                      << ":"
                      << std::endl
                      << '\t'
                      << "масса вещества : ";
 
            T_mass  substance_mass = 0;
            std::cin >> substance_mass;            
            substances_masses_product *= substance_mass;
 
            std::cout << '\t'
                      << "масса воды     : ";
 
            T_mass  water_mass = 0;
            std::cin >> water_mass;            
            water_solutions.push_back( T_water_solution(substance_mass, water_mass) );
            std::cout << std::endl;
        }
        std::cout << "Введите "
                  << n
                  << " масс веществ целевого раствора (целые значения):"
                  << std::endl;
 
        T_masses  target_substances_masses;
        for(int  j = 0; j < n; ++j)
        {
            std::cout << "-> ";
            T_mass  substance_mass = 0;
            std::cin >> substance_mass;            
            target_substances_masses.push_back(substance_mass);            
        }
        std::cout << "Введите массу воды целевого раствора (целое значение): ";
        T_mass  target_water_mass = 0;
        std::cin >> target_water_mass;
        
        T_mass  added_water_mass = 0;
        if( 
            get_recipe_for_solutions_and_water_mixture
                (
                    substances_masses_product,
                    water_solutions,
                    target_substances_masses,
                    target_water_mass,                    
                    added_water_mass
                ) 
          )
        {
            std::cout << std::endl
                      << "Нужно смешать растворы в следующих весовых количествах: "
                      << std::endl;
            std::copy(water_solutions.begin(), water_solutions.end(),
                      std::ostream_iterator<T_mass>(std::cout, "\n"));
            std::cout << "и добавить воды весом " 
                      << added_water_mass
                      << "."
                      << std::endl;
        }
        else
        {
            std::cout << "Раствор заданной концентрации получить невозможно."
                      << std::endl;
        }
        std::cout << std::endl
                  << std::endl
                  << std::endl
                  << std::endl;
    }    
}
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
16.04.2011, 14:54
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 <iostream>
#include <utility>
 
using namespace std;
 
#define FOR(i,a,b) for (int i(a), _n(b); i < _n; ++i)
 
typedef __int64 LL;
typedef std::pair<LL,LL> PII;
 
LL gcd(const LL &a, const LL &b) { return a ? gcd(b%a, a) : b; }
LL lcm(const LL &a, const LL &b) { return a * b / gcd(b%a, a); }
LL lcm(const LL &a, const LL &b, const LL &c) { return lcm(a, lcm(b,c)); }
 
int main(){
    freopen("test.txt", "r", stdin);
 
    LL res = 0;
    PII x[3];
    LL need[4], m[3];
 
    FOR(i,0,3) cin >> x[i].first >> x[i].second;
    FOR(i,0,4) cin >> need[i];
 
    FOR(i,0,3) m[i] = lcm(need[i], x[i].first),
        x[i].first = m[i] / x[i].first,
        need[i] = m[i] / need[i];
    LL mm = lcm(need[0], need[1], need[2]);
    FOR(i,0,3) x[i].first *= mm / need[i],
        res += x[i].second * x[i].first;
 
    if (res > (need[3] *= mm)) cout << "Impossible" << endl;
    else {
        FOR(i,0,3) cout << m[i] << ":";
        cout << "\b and " << need[3] - res << " liters of water" << endl;
    }
}
Добавлено через 39 секунд
Тоже самое, но в целочисленной арифметике (:

Добавлено через 11 минут
http://codepad.org/jM5kguTZ - здесь понятней (:
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
17.04.2011, 11:41
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
/////////////////////////////////////////////////////////////////////////////////////////
//Для набора веществ, имеющихся в водных растворах заданных концентраций, 
//составить рецепт получения водного раствора их смеси заданной пропорции. 
//Предполагать, что всегда доступно необходимое количество воды. Пример входных данных:
//1:50
//2:75
//1:100
//2:3:3:1000
//(первые три пропорции задают концентрации трех веществ в воде; 
//последняя относительные доли трех веществ и воды в искомой смеси) 
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <functional>
#include <iostream>
#include <string>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string          T_str;
typedef long long            T_mass;
typedef std::vector<T_mass>  T_masses;
/////////////////////////////////////////////////////////////////////////////////////////
T_mass  gcd(T_mass  a, T_mass  b)
{
    return  b ? gcd(b, a % b) : a;
}
/////////////////////////////////////////////////////////////////////////////////////////
T_mass  lcm(T_mass  a, T_mass  b)
{
    return  a * b / gcd(a, b); 
}
/////////////////////////////////////////////////////////////////////////////////////////
class  T_water_solution
{
    T_mass          substance_mass_;
    T_mass          water_mass_;
    T_mass          target_substance_mass_;
    
    static  T_mass  solutions_substances_mass_LCM_;    
    static  T_mass  target_masses_GCD_; 
    static  T_mass  added_water_mass_;
    //-----------------------------------------------------------------------------------
public:
    //-----------------------------------------------------------------------------------
    T_water_solution
        (
            T_mass  substance_mass, 
            T_mass  water_mass
        ) 
        : substance_mass_  (substance_mass), 
          water_mass_      (water_mass)          
    {
        T_mass  divisor = gcd(substance_mass_, water_mass_);    
        substance_mass_  /= divisor;    
        water_mass_      /= divisor; 
 
        if(solutions_substances_mass_LCM_ == 0)
        {
            solutions_substances_mass_LCM_ = substance_mass_;
        }
        else
        {
            solutions_substances_mass_LCM_ 
                = lcm(solutions_substances_mass_LCM_, substance_mass_);
        }
    }
    //-----------------------------------------------------------------------------------
    T_mass  get_solution_mass_and_calc_added_water_mass()
    {        
        to_substance_mass( target_substance_mass_ 
                           / target_masses_GCD_ 
                           * solutions_substances_mass_LCM_);
        
        added_water_mass_ -= water_mass_;     
        return  substance_mass_ + water_mass_; 
    }
    //-----------------------------------------------------------------------------------
    static void  clear()
    {
        solutions_substances_mass_LCM_  = 0;
        target_masses_GCD_              = 0;
        added_water_mass_               = 0;
    }
    //-----------------------------------------------------------------------------------
    void  set_target_substance_mass(T_mass  target_substance_mass)
    {
        target_substance_mass_ = target_substance_mass;
        if(target_masses_GCD_ == 0)
        {
            target_masses_GCD_ = target_substance_mass_;
        }
        else
        {
            target_masses_GCD_ = gcd(target_masses_GCD_, target_substance_mass_);
        }
    }
    //-----------------------------------------------------------------------------------
    static void  set_target_water_mass(T_mass  target_water_mass)
    {
        target_masses_GCD_  = gcd(target_masses_GCD_, target_water_mass);
        added_water_mass_   = target_water_mass 
                                  / target_masses_GCD_ 
                                  * solutions_substances_mass_LCM_;
    }
    //-----------------------------------------------------------------------------------
    static T_mass  get_added_water_mass()
    {
        return  added_water_mass_;
    }
    //-----------------------------------------------------------------------------------
private:
    //-----------------------------------------------------------------------------------
    void  to_substance_mass(T_mass  new_substance_mass)
    {
        T_mass  factor   =   new_substance_mass / substance_mass_;
        substance_mass_  *=  factor;
        water_mass_      *=  factor;
    }
    //-----------------------------------------------------------------------------------
};
/////////////////////////////////////////////////////////////////////////////////////////
T_mass  T_water_solution::solutions_substances_mass_LCM_  = 0;
T_mass  T_water_solution::target_masses_GCD_              = 0;    
T_mass  T_water_solution::added_water_mass_               = 0;    
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::vector<T_water_solution>  T_water_solutions;
/////////////////////////////////////////////////////////////////////////////////////////
void  input_mass(T_mass&  mass, const T_str&  prompt, int  ind = 0)
{
    do
    {
        std::cout << prompt;
        if(ind)
        {
            std::cout << ind
                      << ": ";
        } 
        
        std::cin >> mass;
    }while(mass <= 0);
}
/////////////////////////////////////////////////////////////////////////////////////////
bool  input_data(T_water_solutions&  water_solutions)
{
    T_water_solution::clear();
    std::cout << "Введите количество растворов: ";
    int  n = 0;
    std::cin >> n;
    if(n <= 0) return  false;
 
    std::cout << "Введите данные о "
              << n
              << " растворах (натуральные числа):"
              << std::endl;
    
    for(int  i = 0; i < n; ++i)
    {
        std::cout << "раствор "
                  << i + 1
                  << ":"
                  << std::endl;
 
        T_mass  substance_mass = 0;
        input_mass(substance_mass, "\tмасса вещества\t: ");
 
        T_mass  water_mass = 0;
        input_mass(water_mass, "\tмасса воды\t: ");
 
        water_solutions.push_back( T_water_solution(substance_mass, water_mass) );
        std::cout << std::endl;
    }
    std::cout << "Введите "
              << n
              << " масс веществ целевого раствора (натуральные числа):"
              << std::endl;
 
    for(int  j = 0; j < n; ++j)
    {        
        T_mass  substance_mass = 0;
        input_mass(substance_mass, "\t#", j + 1);        
        water_solutions[j].set_target_substance_mass(substance_mass);            
    }
    
    T_mass  target_water_mass = 0;
    input_mass
        (
            target_water_mass, 
            "Введите массу воды целевого раствора (натуральное число): "
        );
    
    T_water_solution::set_target_water_mass(target_water_mass);
    return  true;
}
/////////////////////////////////////////////////////////////////////////////////////////
void  print_result(T_water_solutions&  water_solutions)
{
    std::cout << std::endl
              << "Нужно смешать растворы в следующих весовых количествах: "
              << std::endl;
    std::transform
        (
            water_solutions.begin(), water_solutions.end(),
            std::ostream_iterator<T_mass>(std::cout, "\n"),
            std::mem_fun_ref
                (&T_water_solution::get_solution_mass_and_calc_added_water_mass)
        );
 
    std::cout << "и добавить воды весом " 
              << T_water_solution::get_added_water_mass()
              << "."
              << std::endl;
 
    if(T_water_solution::get_added_water_mass() < 0)
    {
        std::cout << "Т.е. раствор заданной концентрации получить невозможно."
                  << std::endl;
    }
 
    std::cout << std::endl
              << std::endl
              << std::endl
              << std::endl;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    for(;;)
    {
        T_water_solutions  water_solutions;        
        if(!input_data(water_solutions))
        {
            break;
        }
        print_result(water_solutions);       
    }    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.04.2011, 11:41
Помогаю со студенческими работами здесь

SSI получение переменной из get-строки
Добрый день! Использую SSI. &lt;!-- #echo var='QUERY_STRING'--&gt; - получение всего QueryString,...

Получение информации с определенного сайта.
Subj, в следующей задаче: Имеется сайт-форум. Нужно реализовать получение информации(сообщений)...

Нужен ли сервис заказов скачивания файлов и их получения на физических носителях?
Ситуация следующая: Есть web-сервер на котором можно оставлять ссылки на необходимые для вас...

Защита продукта путем получения лицензии
Всем доброго времени суток! Ситуация простая. Написал программу, хочу ее защитить. В связи с...

Алгоритм Дейкстры для получения всех перестановок по алфавиту
Где про него можно прочитать? Или может кто-нибудь объяснит? В поисках везде код на паскале, а мне...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru