「システム工学(ファジーなんちゃら)-20100629」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
<p>#include <stdio.h><br />
#include <stdlib.h></p>
<p>double f(double c){<br />
if((0<=c)&&(c<=50)){<br />
return 1.0/50*c;}<br />
else if(50<c){<br />
return 1.0;}<br />
return -1.0;<br />
}<br />
double g(double c){<br />
if((0<=c)&&(c<=20)){<br />
return 1.0;}<br />
else if((20<c)&&(c<=40)){<br />
return -1.0/20*c+2.0;}<br />
else if(40<c){<br />
return 0.0;}<br />
return -1.0;<br />
}<br />
double p(double x){<br />
if((0<=x)&&(x<=20)){<br />
return 0.0;}<br />
else if((20<x)&&(x<=40)){<br />
return 1.0/20*x-1.0;}<br />
else if((40<x)&&(x<=60)){<br />
return -1.0/20*x+3.0;}<br />
else if(60<x){<br />
return 0.0;}<br />
return -1.0;<br />
}<br />
double q(double x){<br />
if((0<=x)&&(x<=40)){<br />
return 0.0;}<br />
else if((40<x)&&(x<=60)){<br />
return 1.0/20*x-2.0;}<br />
else if((60<x)&&(x<=80)){<br />
return -1.0/20*x+4.0;}<br />
else if(80<x){<br />
return 0.0;}<br />
return -1.0;<br />
}<br />
double min(double a,double b){<br />
if(a<=b){return a;}<br />
else if(b<a){return b;}<br />
return -1;<br />
}<br />
double max(double a,double b){<br />
if(a<=b){return b;}<br />
else if(b<a){return a;}<br />
return -1;<br />
}<br />
double s(double c,double x){<br />
return max(min(f(c),p(x)),min(g(c),q(x)));<br />
}<br />
double ans(double w,double st,double en,double c){<br />
double i=st,s1=0.0,s2=0.0;<br />
while(i<=en){<br />
s1=s1+s(c,i);<br />
i=i+w;<br />
}<br />
i=st;<br />
while(i<=en){<br />
s2=s2+(i*s(c,i));<br />
i=i+w;<br />
}<br />
return s2/s1;<br />
}<br />
int main(void) {<br />
double c,w;<br />
printf("c=");<br />
scanf("%lf", &c);<br />
printf("w=");<br />
scanf("%lf", &w);<br />
printf("ans=%lf", ans(w,0,100,c));<br />
return 0;<br />
}</p>
<p>#include <stdio.h><br />
#include <stdlib.h></p>
<p>double f(double c){<br />
if((0<=c)&&(c<=50)){<br />
return 1.0/50*c;}<br />
else if(50<c){<br />
return 1.0;}<br />
return -1.0;<br />
}<br />
double g(double c){<br />
if((0<=c)&&(c<=20)){<br />
return 1.0;}<br />
else if((20<c)&&(c<=40)){<br />
return -1.0/20*c+2.0;}<br />
else if(40<c){<br />
return 0.0;}<br />
return -1.0;<br />
}<br />
double p(double x){<br />
if((0<=x)&&(x<=20)){<br />
return 0.0;}<br />
else if((20<x)&&(x<=40)){<br />
return 1.0/20*x-1.0;}<br />
else if((40<x)&&(x<=60)){<br />
return -1.0/20*x+3.0;}<br />
else if(60<x){<br />
return 0.0;}<br />
return -1.0;<br />
}<br />
double q(double x){<br />
if((0<=x)&&(x<=40)){<br />
return 0.0;}<br />
else if((40<x)&&(x<=60)){<br />
return 1.0/20*x-2.0;}<br />
else if((60<x)&&(x<=80)){<br />
return -1.0/20*x+4.0;}<br />
else if(80<x){<br />
return 0.0;}<br />
return -1.0;<br />
}<br />
double min(double a,double b){<br />
if(a<=b){return a;}<br />
else if(b<a){return b;}<br />
return -1;<br />
}<br />
double max(double a,double b){<br />
if(a<=b){return b;}<br />
else if(b<a){return a;}<br />
return -1;<br />
}<br />
double s(double c,double x){<br />
return max(min(f(c),p(x)),min(g(c),q(x)));<br />
}<br />
double ans(double w,double st,double en,double c){<br />
double i=st,s1=0.0,s2=0.0;<br />
while(i<=en){<br />
s1=s1+s(c,i);<br />
i=i+w;<br />
}<br />
i=st;<br />
while(i<=en){<br />
s2=s2+(i*s(c,i));<br />
i=i+w;<br />
}<br />
return s2/s1;<br />
}<br />
int main(void) {<br />
double c,w;<br />
printf("c=");<br />
scanf("%lf", &c);<br />
printf("w=");<br />
scanf("%lf", &w);<br />
printf("ans=%lf", ans(w,0,100,c));<br />
return 0;<br />
}</p>
<p>/********************************************/</p>
<p>c=30<br />
w=10<br />
ans=49.615385</p>
<p>c=43<br />
w=10<br />
ans=40.000000</p>
<p>/********************************************/</p>