Я написал c-скрипт, который создает текстовый файл для другого приложения. Число с плавающей запятой «b» получает очень высокое значение, и я не уверен, почему. У меня почти идентичный файл, в котором этого не происходит. Я новичок в C, поэтому любая помощь была бы оценена - я ценю, что это может быть очень простая ошибка. Код ниже.Число с плавающей запятой, принимающее неожиданно высокое значение
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#define LARGESTR 1000
#define INITIALTIME 40
void clear_string(char *s,int l)
{
int i;
for(i=0; i<l; i++)
s[i]='\0';
}
int main(void)
{
char buffer[LARGESTR];
int ramp_flow = 5, car_count_seg1 = 45, car_count_seg2 = 45, car_count_seg3 = 45, fw_upstream_queue = 20, onramp_queue = 60, a;
float outflow_count, percentout = 0.7, b;
//Total Input to system
for(a=(INITIALTIME + 10); a<(INITIALTIME + 250); a+=10) {
if((a>=10) && (a<600)) {
b=b+1.39+0.556;
}
if((a>=600) && (a<1200)) {
b=b+(((a*9.167)-5000)/360)+(((a*1.67)-800)/360);
}
if((a>=1200) && (a<2700)) {
b=b+16.67+3.33;
}
if((a>=2700) && (a<3300)) {
b=b+(((a*(-10))+33000)/360)+(((a*(-2))+6600)/360);
}
if((a>=3300) && (a<4800)) {
}
}
printf("%f\n", b);
b = b + car_count_seg1 + car_count_seg2 + car_count_seg3 + fw_upstream_queue + onramp_queue;
printf("%f\n", b);
outflow_count = b*percentout;
printf("%f\n", outflow_count);
FILE *fp;
fp=fopen("1rampproblem.pddl","w+");
clear_string(buffer,LARGESTR);
sprintf(buffer,"\n(define (problem trafficjuncprob)\n(:domain traffic-junction)\n(:objects)\n(:init");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (outflow-count) 0)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (critical-density) 45)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (maximum-density) 270)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (maximum-flow) 20)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (time) %d)",INITIALTIME);
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (zero) 0)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (toggle) 1)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (count) 0)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (ramp-flow) %d)",ramp_flow);
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (ramp-flow-realised) 0)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (car-count-seg1) %d)",car_count_seg1);
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (car-count-seg2) %d)",car_count_seg2);
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (car-count-seg3) %d)",car_count_seg3);
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (maxflow-0-1) 0)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (maxflow-1-2) 0)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (maxflow-2-3) 0)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (maxflow-3-4) 0)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (flow-0-1) 0)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (flow-1-2) 0)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (flow-2-3) 0)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (flow-3-4) 0)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (fw-upstream-queue) %d)",fw_upstream_queue);
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(= (onramp-queue) %d)",onramp_queue);
fprintf(fp,"%s",buffer);
fprintf(fp,"\n)\n\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(:goal (> (outflow-count) %f)\n)\n", outflow_count);
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
clear_string(buffer,LARGESTR);
sprintf(buffer,"(:metric minimize (total-time))\n)");
fprintf(fp,"%s",buffer);
fprintf(fp,"\n");
fclose(fp);
return 0;
}
Я печатаю значение 'b' после первого цикла for и очень большое здесь – james
Я имею в виду программу c. Я также знаю, что c я кодировал его несколько раз раньше - я просто застрял в этой проблеме. Не все являются экспертами. Вы должны начать где-то – james
Игнорируя разницу между скомпилированным языком и интерпретируемым языком, вы должны прекратить писать программы и начать изучать и понимать эти понятия. –