#include #include float Abs (float number) { if (number < 0) number = -number; return number; } int main (void) { float min_reg_power; float deviation_price; float spared_cash_3 = 0; float spared_cash_6 = 0; float spared_cash_12 = 0; float spared_cash_24 = 0; float charge_3 = 0; float charge_6 = 0; float charge_12 = 0; float charge_24 = 0; //float charge_history[744]; int capacity_3 = 30; int capacity_6 = 15; int capacity_12 = 7; int capacity_24 = 3; int power = 1; //int charge = 0; //int charge_history[744]; int energy_counter_3 = 0; int energy_counter_6 = 0; int energy_counter_12 = 0; int energy_counter_24 = 0; int i; int j; FILE* MIN_REG_POWER; FILE* DEVIATION_PRICE; FILE* OUTPUT; FILE* OUTPUT_CHARGE_2018_3; FILE* OUTPUT_CHARGE_2018_6; FILE* OUTPUT_CHARGE_2018_12; FILE* OUTPUT_CHARGE_2018_24; setlocale(LC_NUMERIC, ""); OUTPUT = fopen("output_regulacni.txt","w+"); OUTPUT_CHARGE_2018_3 = fopen("output_charge_2018_3.txt","w+"); OUTPUT_CHARGE_2018_6 = fopen("output_charge_2018_6.txt","w+"); OUTPUT_CHARGE_2018_12 = fopen("output_charge_2018_12.txt","w+"); OUTPUT_CHARGE_2018_24 = fopen("output_charge_2018_24.txt","w+"); if (!OUTPUT || !OUTPUT_CHARGE_2018_3 || !OUTPUT_CHARGE_2018_6 || !OUTPUT_CHARGE_2018_12 || !OUTPUT_CHARGE_2018_24) { printf("OPEN ERROR 1.\n"); return 0; } //2010 MIN_REG_POWER = fopen("regulacni_vykon_2010.txt","r"); DEVIATION_PRICE = fopen("odchylky_ceny_2010.txt","r"); if (!MIN_REG_POWER || !DEVIATION_PRICE) { printf("OPEN ERROR.\n"); return 0; } else { charge_3 = 0; charge_6 = 0; charge_12 = 0; charge_24 = 0; for (i = 1; i <= 8760; ++i) { for (j = 1; j <= 60; ++j) { fscanf(MIN_REG_POWER, "%f ", &min_reg_power); if (min_reg_power < 0) { if (charge_3 < capacity_3) { ++energy_counter_3; charge_3 = charge_3 + power; if (charge_3 > capacity_3) charge_3 = capacity_3; } if (charge_6 < capacity_6) { ++energy_counter_6; charge_6 = charge_6 + power; if (charge_6 > capacity_6) charge_6 = capacity_6; } if (charge_12 < capacity_12) { ++energy_counter_12; charge_12 = charge_12 + power; if (charge_12 > capacity_12) charge_12 = capacity_12; } if (charge_24 < capacity_24) { ++energy_counter_24; charge_24 = charge_24 + power; if (charge_24 > capacity_24) charge_24 = capacity_24; } } if (min_reg_power > 0) { if (charge_3 > 0) { --energy_counter_3; charge_3 = charge_3 - power; if (charge_3 < 0) charge_3 = 0; } if (charge_6 > 0) { --energy_counter_6; charge_6 = charge_6 - power; if (charge_6 < 0) charge_6 = 0; } if (charge_12 > 0) { --energy_counter_12; charge_12 = charge_12 - power; if (charge_12 < 0) charge_12 = 0; } if (charge_24 > 0) { --energy_counter_24; charge_24 = charge_24 - power; if (charge_24 < 0) charge_24 = 0; } } } fscanf(DEVIATION_PRICE, "%f ", &deviation_price); spared_cash_3 = spared_cash_3 + (Abs(energy_counter_3)/60)*power*Abs(deviation_price); spared_cash_6 = spared_cash_6 + (Abs(energy_counter_6)/60)*power*Abs(deviation_price); spared_cash_12 = spared_cash_12 + (Abs(energy_counter_12)/60)*power*Abs(deviation_price); spared_cash_24 = spared_cash_24 + (Abs(energy_counter_24)/60)*power*Abs(deviation_price); energy_counter_3 = 0; energy_counter_6 = 0; energy_counter_12 = 0; energy_counter_24 = 0; } fprintf(OUTPUT, "2010 3 %f\n", spared_cash_3); fprintf(OUTPUT, "2010 6 %f\n", spared_cash_6); fprintf(OUTPUT, "2010 12 %f\n", spared_cash_12); fprintf(OUTPUT, "2010 24 %f\n", spared_cash_24); spared_cash_3 = 0; spared_cash_6 = 0; spared_cash_12 = 0; spared_cash_24 = 0; fclose(MIN_REG_POWER); fclose(DEVIATION_PRICE); } //2011 MIN_REG_POWER = fopen("regulacni_vykon_2011.txt","r"); DEVIATION_PRICE = fopen("odchylky_ceny_2011.txt","r"); if (!MIN_REG_POWER || !DEVIATION_PRICE) { printf("OPEN ERROR.\n"); return 0; } else { charge_3 = 0; charge_6 = 0; charge_12 = 0; charge_24 = 0; for (i = 1; i <= 8760; ++i) { for (j = 1; j <= 60; ++j) { fscanf(MIN_REG_POWER, "%f ", &min_reg_power); if (min_reg_power < 0) { if (charge_3 < capacity_3) { ++energy_counter_3; charge_3 = charge_3 + power; if (charge_3 > capacity_3) charge_3 = capacity_3; } if (charge_6 < capacity_6) { ++energy_counter_6; charge_6 = charge_6 + power; if (charge_6 > capacity_6) charge_6 = capacity_6; } if (charge_12 < capacity_12) { ++energy_counter_12; charge_12 = charge_12 + power; if (charge_12 > capacity_12) charge_12 = capacity_12; } if (charge_24 < capacity_24) { ++energy_counter_24; charge_24 = charge_24 + power; if (charge_24 > capacity_24) charge_24 = capacity_24; } } if (min_reg_power > 0) { if (charge_3 > 0) { --energy_counter_3; charge_3 = charge_3 - power; if (charge_3 < 0) charge_3 = 0; } if (charge_6 > 0) { --energy_counter_6; charge_6 = charge_6 - power; if (charge_6 < 0) charge_6 = 0; } if (charge_12 > 0) { --energy_counter_12; charge_12 = charge_12 - power; if (charge_12 < 0) charge_12 = 0; } if (charge_24 > 0) { --energy_counter_24; charge_24 = charge_24 - power; if (charge_24 < 0) charge_24 = 0; } } } fscanf(DEVIATION_PRICE, "%f ", &deviation_price); spared_cash_3 = spared_cash_3 + (Abs(energy_counter_3)/60)*power*Abs(deviation_price); spared_cash_6 = spared_cash_6 + (Abs(energy_counter_6)/60)*power*Abs(deviation_price); spared_cash_12 = spared_cash_12 + (Abs(energy_counter_12)/60)*power*Abs(deviation_price); spared_cash_24 = spared_cash_24 + (Abs(energy_counter_24)/60)*power*Abs(deviation_price); energy_counter_3 = 0; energy_counter_6 = 0; energy_counter_12 = 0; energy_counter_24 = 0; } fprintf(OUTPUT, "2011 3 %f\n", spared_cash_3); fprintf(OUTPUT, "2011 6 %f\n", spared_cash_6); fprintf(OUTPUT, "2011 12 %f\n", spared_cash_12); fprintf(OUTPUT, "2011 24 %f\n", spared_cash_24); spared_cash_3 = 0; spared_cash_6 = 0; spared_cash_12 = 0; spared_cash_24 = 0; fclose(MIN_REG_POWER); fclose(DEVIATION_PRICE); } //2012 MIN_REG_POWER = fopen("regulacni_vykon_2012.txt","r"); DEVIATION_PRICE = fopen("odchylky_ceny_2012.txt","r"); if (!MIN_REG_POWER || !DEVIATION_PRICE) { printf("OPEN ERROR.\n"); return 0; } else { charge_3 = 0; charge_6 = 0; charge_12 = 0; charge_24 = 0; for (i = 1; i <= 8760; ++i) { for (j = 1; j <= 60; ++j) { fscanf(MIN_REG_POWER, "%f ", &min_reg_power); if (min_reg_power < 0) { if (charge_3 < capacity_3) { ++energy_counter_3; charge_3 = charge_3 + power; if (charge_3 > capacity_3) charge_3 = capacity_3; } if (charge_6 < capacity_6) { ++energy_counter_6; charge_6 = charge_6 + power; if (charge_6 > capacity_6) charge_6 = capacity_6; } if (charge_12 < capacity_12) { ++energy_counter_12; charge_12 = charge_12 + power; if (charge_12 > capacity_12) charge_12 = capacity_12; } if (charge_24 < capacity_24) { ++energy_counter_24; charge_24 = charge_24 + power; if (charge_24 > capacity_24) charge_24 = capacity_24; } } if (min_reg_power > 0) { if (charge_3 > 0) { --energy_counter_3; charge_3 = charge_3 - power; if (charge_3 < 0) charge_3 = 0; } if (charge_6 > 0) { --energy_counter_6; charge_6 = charge_6 - power; if (charge_6 < 0) charge_6 = 0; } if (charge_12 > 0) { --energy_counter_12; charge_12 = charge_12 - power; if (charge_12 < 0) charge_12 = 0; } if (charge_24 > 0) { --energy_counter_24; charge_24 = charge_24 - power; if (charge_24 < 0) charge_24 = 0; } } } fscanf(DEVIATION_PRICE, "%f ", &deviation_price); spared_cash_3 = spared_cash_3 + (Abs(energy_counter_3)/60)*power*Abs(deviation_price); spared_cash_6 = spared_cash_6 + (Abs(energy_counter_6)/60)*power*Abs(deviation_price); spared_cash_12 = spared_cash_12 + (Abs(energy_counter_12)/60)*power*Abs(deviation_price); spared_cash_24 = spared_cash_24 + (Abs(energy_counter_24)/60)*power*Abs(deviation_price); energy_counter_3 = 0; energy_counter_6 = 0; energy_counter_12 = 0; energy_counter_24 = 0; } fprintf(OUTPUT, "2012 3 %f\n", spared_cash_3); fprintf(OUTPUT, "2012 6 %f\n", spared_cash_6); fprintf(OUTPUT, "2012 12 %f\n", spared_cash_12); fprintf(OUTPUT, "2012 24 %f\n", spared_cash_24); spared_cash_3 = 0; spared_cash_6 = 0; spared_cash_12 = 0; spared_cash_24 = 0; fclose(MIN_REG_POWER); fclose(DEVIATION_PRICE); } //2013 MIN_REG_POWER = fopen("regulacni_vykon_2013.txt","r"); DEVIATION_PRICE = fopen("odchylky_ceny_2013.txt","r"); if (!MIN_REG_POWER || !DEVIATION_PRICE) { printf("OPEN ERROR.\n"); return 0; } else { charge_3 = 0; charge_6 = 0; charge_12 = 0; charge_24 = 0; for (i = 1; i <= 8760; ++i) { for (j = 1; j <= 60; ++j) { fscanf(MIN_REG_POWER, "%f ", &min_reg_power); if (min_reg_power < 0) { if (charge_3 < capacity_3) { ++energy_counter_3; charge_3 = charge_3 + power; if (charge_3 > capacity_3) charge_3 = capacity_3; } if (charge_6 < capacity_6) { ++energy_counter_6; charge_6 = charge_6 + power; if (charge_6 > capacity_6) charge_6 = capacity_6; } if (charge_12 < capacity_12) { ++energy_counter_12; charge_12 = charge_12 + power; if (charge_12 > capacity_12) charge_12 = capacity_12; } if (charge_24 < capacity_24) { ++energy_counter_24; charge_24 = charge_24 + power; if (charge_24 > capacity_24) charge_24 = capacity_24; } } if (min_reg_power > 0) { if (charge_3 > 0) { --energy_counter_3; charge_3 = charge_3 - power; if (charge_3 < 0) charge_3 = 0; } if (charge_6 > 0) { --energy_counter_6; charge_6 = charge_6 - power; if (charge_6 < 0) charge_6 = 0; } if (charge_12 > 0) { --energy_counter_12; charge_12 = charge_12 - power; if (charge_12 < 0) charge_12 = 0; } if (charge_24 > 0) { --energy_counter_24; charge_24 = charge_24 - power; if (charge_24 < 0) charge_24 = 0; } } } fscanf(DEVIATION_PRICE, "%f ", &deviation_price); spared_cash_3 = spared_cash_3 + (Abs(energy_counter_3)/60)*power*Abs(deviation_price); spared_cash_6 = spared_cash_6 + (Abs(energy_counter_6)/60)*power*Abs(deviation_price); spared_cash_12 = spared_cash_12 + (Abs(energy_counter_12)/60)*power*Abs(deviation_price); spared_cash_24 = spared_cash_24 + (Abs(energy_counter_24)/60)*power*Abs(deviation_price); energy_counter_3 = 0; energy_counter_6 = 0; energy_counter_12 = 0; energy_counter_24 = 0; } fprintf(OUTPUT, "2013 3 %f\n", spared_cash_3); fprintf(OUTPUT, "2013 6 %f\n", spared_cash_6); fprintf(OUTPUT, "2013 12 %f\n", spared_cash_12); fprintf(OUTPUT, "2013 24 %f\n", spared_cash_24); spared_cash_3 = 0; spared_cash_6 = 0; spared_cash_12 = 0; spared_cash_24 = 0; fclose(MIN_REG_POWER); fclose(DEVIATION_PRICE); } //2014 MIN_REG_POWER = fopen("regulacni_vykon_2014.txt","r"); DEVIATION_PRICE = fopen("odchylky_ceny_2014.txt","r"); if (!MIN_REG_POWER || !DEVIATION_PRICE) { printf("OPEN ERROR.\n"); return 0; } else { charge_3 = 0; charge_6 = 0; charge_12 = 0; charge_24 = 0; for (i = 1; i <= 8760; ++i) { for (j = 1; j <= 60; ++j) { fscanf(MIN_REG_POWER, "%f ", &min_reg_power); if (min_reg_power < 0) { if (charge_3 < capacity_3) { ++energy_counter_3; charge_3 = charge_3 + power; if (charge_3 > capacity_3) charge_3 = capacity_3; } if (charge_6 < capacity_6) { ++energy_counter_6; charge_6 = charge_6 + power; if (charge_6 > capacity_6) charge_6 = capacity_6; } if (charge_12 < capacity_12) { ++energy_counter_12; charge_12 = charge_12 + power; if (charge_12 > capacity_12) charge_12 = capacity_12; } if (charge_24 < capacity_24) { ++energy_counter_24; charge_24 = charge_24 + power; if (charge_24 > capacity_24) charge_24 = capacity_24; } } if (min_reg_power > 0) { if (charge_3 > 0) { --energy_counter_3; charge_3 = charge_3 - power; if (charge_3 < 0) charge_3 = 0; } if (charge_6 > 0) { --energy_counter_6; charge_6 = charge_6 - power; if (charge_6 < 0) charge_6 = 0; } if (charge_12 > 0) { --energy_counter_12; charge_12 = charge_12 - power; if (charge_12 < 0) charge_12 = 0; } if (charge_24 > 0) { --energy_counter_24; charge_24 = charge_24 - power; if (charge_24 < 0) charge_24 = 0; } } } fscanf(DEVIATION_PRICE, "%f ", &deviation_price); spared_cash_3 = spared_cash_3 + (Abs(energy_counter_3)/60)*power*Abs(deviation_price); spared_cash_6 = spared_cash_6 + (Abs(energy_counter_6)/60)*power*Abs(deviation_price); spared_cash_12 = spared_cash_12 + (Abs(energy_counter_12)/60)*power*Abs(deviation_price); spared_cash_24 = spared_cash_24 + (Abs(energy_counter_24)/60)*power*Abs(deviation_price); energy_counter_3 = 0; energy_counter_6 = 0; energy_counter_12 = 0; energy_counter_24 = 0; } fprintf(OUTPUT, "2014 3 %f\n", spared_cash_3); fprintf(OUTPUT, "2014 6 %f\n", spared_cash_6); fprintf(OUTPUT, "2014 12 %f\n", spared_cash_12); fprintf(OUTPUT, "2014 24 %f\n", spared_cash_24); spared_cash_3 = 0; spared_cash_6 = 0; spared_cash_12 = 0; spared_cash_24 = 0; fclose(MIN_REG_POWER); fclose(DEVIATION_PRICE); } //2015 MIN_REG_POWER = fopen("regulacni_vykon_2015.txt","r"); DEVIATION_PRICE = fopen("odchylky_ceny_2015.txt","r"); if (!MIN_REG_POWER || !DEVIATION_PRICE) { printf("OPEN ERROR.\n"); return 0; } else { charge_3 = 0; charge_6 = 0; charge_12 = 0; charge_24 = 0; for (i = 1; i <= 8760; ++i) { for (j = 1; j <= 60; ++j) { fscanf(MIN_REG_POWER, "%f ", &min_reg_power); if (min_reg_power < 0) { if (charge_3 < capacity_3) { ++energy_counter_3; charge_3 = charge_3 + power; if (charge_3 > capacity_3) charge_3 = capacity_3; } if (charge_6 < capacity_6) { ++energy_counter_6; charge_6 = charge_6 + power; if (charge_6 > capacity_6) charge_6 = capacity_6; } if (charge_12 < capacity_12) { ++energy_counter_12; charge_12 = charge_12 + power; if (charge_12 > capacity_12) charge_12 = capacity_12; } if (charge_24 < capacity_24) { ++energy_counter_24; charge_24 = charge_24 + power; if (charge_24 > capacity_24) charge_24 = capacity_24; } } if (min_reg_power > 0) { if (charge_3 > 0) { --energy_counter_3; charge_3 = charge_3 - power; if (charge_3 < 0) charge_3 = 0; } if (charge_6 > 0) { --energy_counter_6; charge_6 = charge_6 - power; if (charge_6 < 0) charge_6 = 0; } if (charge_12 > 0) { --energy_counter_12; charge_12 = charge_12 - power; if (charge_12 < 0) charge_12 = 0; } if (charge_24 > 0) { --energy_counter_24; charge_24 = charge_24 - power; if (charge_24 < 0) charge_24 = 0; } } } fscanf(DEVIATION_PRICE, "%f ", &deviation_price); spared_cash_3 = spared_cash_3 + (Abs(energy_counter_3)/60)*power*Abs(deviation_price); spared_cash_6 = spared_cash_6 + (Abs(energy_counter_6)/60)*power*Abs(deviation_price); spared_cash_12 = spared_cash_12 + (Abs(energy_counter_12)/60)*power*Abs(deviation_price); spared_cash_24 = spared_cash_24 + (Abs(energy_counter_24)/60)*power*Abs(deviation_price); energy_counter_3 = 0; energy_counter_6 = 0; energy_counter_12 = 0; energy_counter_24 = 0; } fprintf(OUTPUT, "2015 3 %f\n", spared_cash_3); fprintf(OUTPUT, "2015 6 %f\n", spared_cash_6); fprintf(OUTPUT, "2015 12 %f\n", spared_cash_12); fprintf(OUTPUT, "2015 24 %f\n", spared_cash_24); spared_cash_3 = 0; spared_cash_6 = 0; spared_cash_12 = 0; spared_cash_24 = 0; fclose(MIN_REG_POWER); fclose(DEVIATION_PRICE); } //2016 MIN_REG_POWER = fopen("regulacni_vykon_2016.txt","r"); DEVIATION_PRICE = fopen("odchylky_ceny_2016.txt","r"); if (!MIN_REG_POWER || !DEVIATION_PRICE) { printf("OPEN ERROR.\n"); return 0; } else { charge_3 = 0; charge_6 = 0; charge_12 = 0; charge_24 = 0; for (i = 1; i <= 8760; ++i) { for (j = 1; j <= 60; ++j) { fscanf(MIN_REG_POWER, "%f ", &min_reg_power); if (min_reg_power < 0) { if (charge_3 < capacity_3) { ++energy_counter_3; charge_3 = charge_3 + power; if (charge_3 > capacity_3) charge_3 = capacity_3; } if (charge_6 < capacity_6) { ++energy_counter_6; charge_6 = charge_6 + power; if (charge_6 > capacity_6) charge_6 = capacity_6; } if (charge_12 < capacity_12) { ++energy_counter_12; charge_12 = charge_12 + power; if (charge_12 > capacity_12) charge_12 = capacity_12; } if (charge_24 < capacity_24) { ++energy_counter_24; charge_24 = charge_24 + power; if (charge_24 > capacity_24) charge_24 = capacity_24; } } if (min_reg_power > 0) { if (charge_3 > 0) { --energy_counter_3; charge_3 = charge_3 - power; if (charge_3 < 0) charge_3 = 0; } if (charge_6 > 0) { --energy_counter_6; charge_6 = charge_6 - power; if (charge_6 < 0) charge_6 = 0; } if (charge_12 > 0) { --energy_counter_12; charge_12 = charge_12 - power; if (charge_12 < 0) charge_12 = 0; } if (charge_24 > 0) { --energy_counter_24; charge_24 = charge_24 - power; if (charge_24 < 0) charge_24 = 0; } } } fscanf(DEVIATION_PRICE, "%f ", &deviation_price); spared_cash_3 = spared_cash_3 + (Abs(energy_counter_3)/60)*power*Abs(deviation_price); spared_cash_6 = spared_cash_6 + (Abs(energy_counter_6)/60)*power*Abs(deviation_price); spared_cash_12 = spared_cash_12 + (Abs(energy_counter_12)/60)*power*Abs(deviation_price); spared_cash_24 = spared_cash_24 + (Abs(energy_counter_24)/60)*power*Abs(deviation_price); energy_counter_3 = 0; energy_counter_6 = 0; energy_counter_12 = 0; energy_counter_24 = 0; } fprintf(OUTPUT, "2016 3 %f\n", spared_cash_3); fprintf(OUTPUT, "2016 6 %f\n", spared_cash_6); fprintf(OUTPUT, "2016 12 %f\n", spared_cash_12); fprintf(OUTPUT, "2016 24 %f\n", spared_cash_24); spared_cash_3 = 0; spared_cash_6 = 0; spared_cash_12 = 0; spared_cash_24 = 0; fclose(MIN_REG_POWER); fclose(DEVIATION_PRICE); } //2017 MIN_REG_POWER = fopen("regulacni_vykon_2017.txt","r"); DEVIATION_PRICE = fopen("odchylky_ceny_2017.txt","r"); if (!MIN_REG_POWER || !DEVIATION_PRICE) { printf("OPEN ERROR.\n"); return 0; } else { charge_3 = 0; charge_6 = 0; charge_12 = 0; charge_24 = 0; for (i = 1; i <= 8760; ++i) { for (j = 1; j <= 60; ++j) { fscanf(MIN_REG_POWER, "%f ", &min_reg_power); if (min_reg_power < 0) { if (charge_3 < capacity_3) { ++energy_counter_3; charge_3 = charge_3 + power; if (charge_3 > capacity_3) charge_3 = capacity_3; } if (charge_6 < capacity_6) { ++energy_counter_6; charge_6 = charge_6 + power; if (charge_6 > capacity_6) charge_6 = capacity_6; } if (charge_12 < capacity_12) { ++energy_counter_12; charge_12 = charge_12 + power; if (charge_12 > capacity_12) charge_12 = capacity_12; } if (charge_24 < capacity_24) { ++energy_counter_24; charge_24 = charge_24 + power; if (charge_24 > capacity_24) charge_24 = capacity_24; } } if (min_reg_power > 0) { if (charge_3 > 0) { --energy_counter_3; charge_3 = charge_3 - power; if (charge_3 < 0) charge_3 = 0; } if (charge_6 > 0) { --energy_counter_6; charge_6 = charge_6 - power; if (charge_6 < 0) charge_6 = 0; } if (charge_12 > 0) { --energy_counter_12; charge_12 = charge_12 - power; if (charge_12 < 0) charge_12 = 0; } if (charge_24 > 0) { --energy_counter_24; charge_24 = charge_24 - power; if (charge_24 < 0) charge_24 = 0; } } } fscanf(DEVIATION_PRICE, "%f ", &deviation_price); spared_cash_3 = spared_cash_3 + (Abs(energy_counter_3)/60)*power*Abs(deviation_price); spared_cash_6 = spared_cash_6 + (Abs(energy_counter_6)/60)*power*Abs(deviation_price); spared_cash_12 = spared_cash_12 + (Abs(energy_counter_12)/60)*power*Abs(deviation_price); spared_cash_24 = spared_cash_24 + (Abs(energy_counter_24)/60)*power*Abs(deviation_price); energy_counter_3 = 0; energy_counter_6 = 0; energy_counter_12 = 0; energy_counter_24 = 0; } fprintf(OUTPUT, "2017 3 %f\n", spared_cash_3); fprintf(OUTPUT, "2017 6 %f\n", spared_cash_6); fprintf(OUTPUT, "2017 12 %f\n", spared_cash_12); fprintf(OUTPUT, "2017 24 %f\n", spared_cash_24); spared_cash_3 = 0; spared_cash_6 = 0; spared_cash_12 = 0; spared_cash_24 = 0; fclose(MIN_REG_POWER); fclose(DEVIATION_PRICE); } //2018 MIN_REG_POWER = fopen("regulacni_vykon_2018.txt","r"); DEVIATION_PRICE = fopen("odchylky_ceny_2018.txt","r"); if (!MIN_REG_POWER || !DEVIATION_PRICE) { printf("OPEN ERROR.\n"); return 0; } else { charge_3 = 0; charge_6 = 0; charge_12 = 0; charge_24 = 0; for (i = 1; i <= 8760; ++i) { for (j = 1; j <= 60; ++j) { fscanf(MIN_REG_POWER, "%f ", &min_reg_power); if (min_reg_power < 0) { if (charge_3 < capacity_3) { ++energy_counter_3; charge_3 = charge_3 + power; if (charge_3 > capacity_3) charge_3 = capacity_3; } if (charge_6 < capacity_6) { ++energy_counter_6; charge_6 = charge_6 + power; if (charge_6 > capacity_6) charge_6 = capacity_6; } if (charge_12 < capacity_12) { ++energy_counter_12; charge_12 = charge_12 + power; if (charge_12 > capacity_12) charge_12 = capacity_12; } if (charge_24 < capacity_24) { ++energy_counter_24; charge_24 = charge_24 + power; if (charge_24 > capacity_24) charge_24 = capacity_24; } } if (min_reg_power > 0) { if (charge_3 > 0) { --energy_counter_3; charge_3 = charge_3 - power; if (charge_3 < 0) charge_3 = 0; } if (charge_6 > 0) { --energy_counter_6; charge_6 = charge_6 - power; if (charge_6 < 0) charge_6 = 0; } if (charge_12 > 0) { --energy_counter_12; charge_12 = charge_12 - power; if (charge_12 < 0) charge_12 = 0; } if (charge_24 > 0) { --energy_counter_24; charge_24 = charge_24 - power; if (charge_24 < 0) charge_24 = 0; } } fprintf(OUTPUT_CHARGE_2018_3, "%f\n", charge_3); fprintf(OUTPUT_CHARGE_2018_6, "%f\n", charge_6); fprintf(OUTPUT_CHARGE_2018_12, "%f\n", charge_12); fprintf(OUTPUT_CHARGE_2018_24, "%f\n", charge_24); } fscanf(DEVIATION_PRICE, "%f ", &deviation_price); spared_cash_3 = spared_cash_3 + (Abs(energy_counter_3)/60)*power*Abs(deviation_price); spared_cash_6 = spared_cash_6 + (Abs(energy_counter_6)/60)*power*Abs(deviation_price); spared_cash_12 = spared_cash_12 + (Abs(energy_counter_12)/60)*power*Abs(deviation_price); spared_cash_24 = spared_cash_24 + (Abs(energy_counter_24)/60)*power*Abs(deviation_price); energy_counter_3 = 0; energy_counter_6 = 0; energy_counter_12 = 0; energy_counter_24 = 0; } fprintf(OUTPUT, "2018 3 %f\n", spared_cash_3); fprintf(OUTPUT, "2018 6 %f\n", spared_cash_6); fprintf(OUTPUT, "2018 12 %f\n", spared_cash_12); fprintf(OUTPUT, "2018 24 %f\n", spared_cash_24); spared_cash_3 = 0; spared_cash_6 = 0; spared_cash_12 = 0; spared_cash_24 = 0; fclose(MIN_REG_POWER); fclose(DEVIATION_PRICE); } fclose(OUTPUT); fclose(OUTPUT_CHARGE_2018_3); fclose(OUTPUT_CHARGE_2018_6); fclose(OUTPUT_CHARGE_2018_12); fclose(OUTPUT_CHARGE_2018_24); return 0; }