#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
double m1 = 0, w1 = 0, m2 = 0, w2 = 0, m = 0, w = 0, vys = 0, vys1 = 0;
printf("Hmotnost a koncentrace #1:\n");
if (scanf("%lf %lf", &m1, &w1) != 2 || m1 < 0 || w1 < 0 || w1 > 1) {
printf("Nespravny vstup.\n");
return 0;
}
printf("Hmotnost a koncentrace #2:\n");
if (scanf("%lf %lf", &m2, &w2) != 2 || m2 < 0 || w2 < 0 || w2 > 1) {
printf("Nespravny vstup.\n");
return 0;
}
printf("Hmotnost a koncentrace vysledku:\n");
if (scanf("%lf %lf", &m, &w) != 2 || m < 0 || w < 0 || w > 1) {
printf("Nespravny vstup.\n");
return 0;
}
if (m1 + m2 < m || round(1e12 * (m1 * w1)) + round(1e12 * (m2 * w2)) < round(1e12 * (m * w))) {
printf("Nelze dosahnout.\n");
return 0;
}
if (w1 == w2) {
if (m1 < m && m2 < m) {
if(m1>m2){
vys=m1;
vys1=m-m1;
}
else{
vys = m - m1;
vys1 = m1;
}
printf("%f x #1 + %f x #2 \n", fabs(vys), fabs(vys1));
} else if (m1 < m && m2 > m) {
vys = m1;
vys1 = m - m1;
printf("%f x #1 + %f x #2 \n", fabs(vys), fabs(vys1));
} else {
vys = 0;
vys1 = m;
printf("%f x #1 + %f x #2 \n", fabs(vys), fabs(vys1));
}
} else {
if (w1 == w) {
if (m == m1) {
vys = m;
vys1 = 0;
printf("%f x #1 + %f x #2 \n", fabs(vys), fabs(vys1));
return 0;
}
else if (m < m1) {
vys = m;
vys1 = 0;
printf("%f x #1 + %f x #2 \n", fabs(vys), fabs(vys1));
return 0;
} else if (m > m1) {
printf("Nelze dosahnout.\n");
return 0;
}
}
vys = ((w * m) - (w2 * m)) / (w1 - w2);
vys1 = m - vys;
if (((vys >= 0) && (vys <= m1)) && (((vys1 >= 0) && (vys1 <= m2)))) {
printf("%f x #1 + %f x #2 \n", fabs(vys), fabs(vys1));
return 0;
}
else if((vys = m1) || (vys = m2)){
printf("%f x #1 + %f x #2 \n", fabs(vys), fabs(vys1));
return 0;
}
vys = ((w * m) - (w1 * m)) / (w2 - w1);
vys1 = m - vys;
if (((vys >= 0) && (vys <= m1)) && (((vys1 >= 0) && (vys1 <= m2)))) {
printf("%f x #1 + %f x #2 \n", fabs(vys), fabs(vys1));
return 0;
}
else if((vys = m1) || (vys = m2)){
printf("%f x #1 + %f x #2 \n", fabs(vys), fabs(vys1));
return 0;
}
else {
printf("Nelze dosahnout.\n");
}
}
return 0;
}