Jak napsat C program Mole - hmotnost a koncentraci v Programovací jazyk C ?
- #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;
- }
Learn More :
Czech