作者zqpm (小民)
看板NSYSU-CSE97
標題Re: [作業] [計概] Work9
時間Thu Dec 16 02:54:19 2004
小弟寫得不好
不過也想來看看各位大大有沒有什麼good idea讓我能再玩這個程式
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int i,j,n;
float temp,side[3],realarea,s,height,x,y,dx;
float area1=0,area2=0;
char buff[10];
FILE *finput,*foutput;
/*輸入三邊長*/
do
{
do
{
printf("請輸入第一邊邊長:");
scanf("%f",&side[0]);
if(side[0]<0)
printf("請重新輸入一個正數:\n");
else
break;
}
while(side[0]<0);
do
{
printf("請輸入第二邊邊長:");
scanf("%f",&side[1]);
if(side[1]<0)
printf("請重新輸入一個正數:\n");
else
break;
}
while(side[1]<0);
do
{
printf("請輸入第三邊邊長:");
scanf("%f",&side[2]);
if(side[2]<0)
printf("請重新輸入一個正數:\n");
else
break;
}while(side[2]<0);
}while(side[0]+side[1]<=side[2] || side[1]+side[2]<=side[0] || side[0]+side[2]<=side[1]);
/*排序(由大到小)*/
for(i=0;i<3;i++)
{
for(j=i+1;j<3;j++)
{
if(side[j]>side[i])
{
temp=side[i];
side[i]=side[j];
side[j]=temp;
}
}
}
printf("以最長邊為底,故底邊為%f\n",side[0]);
/*將排序後的數字寫入*/
finput=fopen("input.txt","w+");
if(finput != NULL)
for(i=0;i<3;i++)
{
fprintf(finput,"%f\t",side[i]);
}
else
printf("無法開啟與寫入input.txt");
/*輸入欲分割的數目*/
do
{
printf("請輸入你欲分割最長邊的段數:");
scanf("%d",&n);
if(n<0)
printf("請重新輸入.");
else
break;
}while(n<0);
printf("你將最長邊分割成%d份\n",n);
/*讀取input.txt內的資料*/
finput=fopen("input.txt","r+");
if(!feof(finput))
{
fscanf(finput,"%s",buff);
side[i]=atof(buff);
}
else
printf("檔案讀取失敗");
/*算真實面積*/
s=(side[0]+side[1]+side[2])/2.;
realarea=pow(s*(s-side[0])*(s-side[1])*(s-side[2]),0.5);
/*以真實面積算出三角形的高再來求矩形和的面積*/
height=realarea*2/side[0];
x=pow((side[1]*side[1]-height*height),0.5);
y=pow((side[2]*side[2]-height*height),0.5);
dx=side[0]/n;
if(n==1)
{
printf("真實面積為:%f\n",realarea);
printf("經由切割再以矩形拼出的面積:%f\n",realarea);
}
else
{
for(i=1;i<n;i++)
{
if(dx*i<x)
area1=area1+dx*dx*height*i/x;
else
break;
}
for(i=1;i<n;i++)
{
if(dx*i<y)
area2=area2+(dx*(y-dx*i)*height/y);
else
break;
}
printf("真實面積為:%f\n",realarea);
printf("經由切割再以矩形拼出的面積:%f\n",area1+area2);
}
/*把資料存入output.txt*/
foutput=fopen("output.txt","w+");
if(foutput != NULL)
fprintf(foutput,"真實面積為:%f,切割後的面積和為:%f\n",realarea,area1+area2);
else
printf("output.txt檔案開啟錯誤");
/*關閉檔案*/
fclose(finput);
fclose(foutput);
system("pause");
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.199.59