作者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