作者executor1107 (計概讓人起笑...)
看板NSYSU-CSE97
標題Re: [作業] [計概] Work9
時間Thu Dec 16 01:45:10 2004
※ 引述《Isuzel (Isuzel)》之銘言:
函數引數要加資料型態
並且在input、swap裡面的length跟在main裡面的length是三個陣列而非同一個喔!
=====================================================================
#include<stdio.h>
#include<stdlib.h>
//Mean to trying the block of input
void input(
length[0],length[1],length[2])
{
......
.....
}
//swap the number to the longest>medium>shortest.
void swap(
length[0],length[1],length[2])
{
.......
.......
}
.....
........
void main()
{
FILE *finput,*foutput;
int
length[],division;
input(
length[0],length[1],length[2])//look into the first function "input"
swap(
length[0],length[1],length[2])// look into the second function "swap"
........
.......
}
===================以下為新版===============
完成
但是有bug de不起來:(
Illegal use of floating point是什麼啊?...
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//Mean to trying the block of input
void input(float *length)
{
do{
do{
printf("Please enter the number of the first length:\n");
scanf("%f",&length[0]);
if(length[0]<0)
printf("Please enter a positive number.\n");
}while(length[0]<0);
do{
printf("Please enter the number of the second length:\n");
scanf("%f",&length[1]);
if(length[1]<0)
printf("Please enter a positive number.\n");
}while(length[1]<0);
do{
printf("Please enter the number of the third length:\n");
scanf("%f",&length[2]);
if(length[2]<0)
printf("Please enter a positive number.\n");
}while(length[2]<0);
}while(length[0]+length[1]<length[2]||length[2]+length[0]<length[1]||length[1]+length[2]<length[0]);
// return length;
}
//swap the number to the longest>medium>shortest.
void swap(float *length)
{
float temp,i;
for(i=0;i<3;i++){
if(length[i+1]>length[i]){
temp=length[i];
length[i]=length[i+1];
length[i+1]=temp;
}
}
// return length;
}
//enter the number which would divide the longest length.
void input2(float *division)
{
printf("Input the number which you wish the longest length be divided to:");
scanf("%f",&division);
if(division<0)
printf("Please enter a positive number.\n");
// return division;
}
//calculate the answer
void calculate(float *length,float *division,float *total)
{
//length[0]最長邊(c),length[1]為a,length[2]為b
float i;
float qouter,longg,*answer;
float x=((length[1]*length[1]-length[2]*length[2])/length[0]+length[0])/2,
y=(length[0]-(length[1]*length[1]-length[2]*length[2])/length[0])/2,
z=sqrt(length[1]*length[1]-x*x);
qouter=length[0]/division;
for(i=1;i<division;i++){
//qouter為單位長度"c/輸入的數字"
if(qouter*i<x){
//當qouter*i小於x時:算以x為底的三角形的面積
longg=sqrt(length[1]*length[1]-qouter*i*qouter*i);
answer[i]=longg*qouter;
total=answer[i]+total;
}
//當qouter*i大於x時:算以y為底的三角型的面積
else{
longg=sqrt(length[2]*length[2]-(length[0]-qouter*i)*(length[0]-qouter*i));
answer[i]=longg*qouter;
total=answer[i]+total;
}
}
//return total;
}
void main()
{
FILE *finput,*foutput;
float *length,*total,*division;
int i;
length = (float*) malloc(sizeof(float)*3);
input(length);//look into the first function "input"
swap(length);// look into the second function "swap"
finput=fopen("input.txt","w+");
if(finput != NULL){
for(i=0;i<3;i++)
fprintf(finput,"%f\n",length[i]);
}
else printf("Error 01:Couldn't open input.txt in writing and reading phase.");
foutput=fopen("output.txt","r");
if(finput != NULL){
for(i=0;i<3;i++)
fscanf(foutput,"%f\n",&(length[i]));
}
else printf("Error 02:Couldn't open output.txt in reading phase.");
input2(division);//look into the third function "input2"
calculate(length,division,total);//look into the fourth function "calculate"
printf("The answer is %f.",total);
system("pause");
fclose(finput);
fclose(foutput);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.186.150
--
......ID......
......I am a learning Dancer......
Shake my body through the music...
Dance with the Feel...
This is my ID......
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.186.180