首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

TC2.0中有关运行出现floating point error:domain解决方法

2012-02-15 
TC2.0中有关运行出现floating point error:domain写了个程序,运行时出现floatingpointerror:domain源程序

TC2.0中有关运行出现floating point error:domain
写了个程序,运行时出现floating   point   error:domain
源程序如下:       望高手支招
#include   <conio.h>
#define   size   100

main()
{

int   i,j,m,n,pp[size];                                                     /*********变量**************/
float   p[size];                                                                 /**********各单位人数********/
float   seat[size];                                                               /****各单位分配的席位*******/
float   q[size];                                                                 /*******相对公平度***********/
float   max;                                                                         /*****相对公平度的最大值*****/
int   pos;                                                                             /****相对公平度最大的单位****/
int   sum=0;                                                                         /*****已分配席位总数*********/
clrscr();

printf( "Input   the   number   of   units(m):\n ");
scanf( "%d ",&m);                                                                 /***输入参加分配席位的单位数**/
printf( "Input   the   total   number   of   seats(n):\n ");
scanf( "%d ",&n);                                                         /******输入席位总数***********/
printf( "Input   the   number   of   each   unit:\n ");
for(i=0;i <m;i++)
scanf( "%d ",&pp[i]);                                                   /*****输入各单位人数**********/
for(i=0;i <m;i++)
{seat[i]=1.0;p[i]=pp[i];}

while(sum <n-1)                                                               /***循环条件:席位未分配完时**/
{
sum=0;                                                                     /**本次已分配席位总数清空为0**/


for(i=0;i <m;i++)
sum=sum+seat[i];                                               /*****计算本次分配席位总数****/
for(j=0;j <m;j++)
q[j]=pp[j]*pp[j]/(seat[j]*(seat[j]+1));           /*计算各单位相对公平度*/

for(j=0,max=q[0],pos=0;j <n;j++)
if   (q[j]> max)
{
max=q[j];
pos=j;
}                                                                   /*****求相对公平度最大的单位********/
seat[pos]=seat[pos]+1;                                           /*给相对公平度最大的单位增加1个席位*/
}
printf( "people:\n ");
for(i=0;i <m;i++)
printf( "%5d ",pp[i]);                                                   /*****输出各单位人数****/
printf( "\nseat:\n%5d\nresult:\n ",n);                               /*****输出席位总数*****/
for(i=0;i <m;i++)
printf( "     seat[%d]=%.0f\n ",i+1,seat[i]);                 /*******输出分配结果****/
}

[解决办法]
LS的
for(i=0;i <m;i++)
{seat[i]=1.0;p[i]=pp[i];}
这里seat[]数组初始化了。。。
[解决办法]
lz单步跟踪一下,对于这种runtime error,我们没有数据,也帮不了你
[解决办法]
winTC,
没有修改任何代码,
输入 m=3,n=21,pp[3]={103,63,34}
输出:
seat[1]=11
seat[2]=6
seat[3]=4 //这个席位分配和人数比例也吻合

[解决办法]
float p[size];
==》
float p[size]={0.0}; //试试加个初始化看看,是否是 浮点库 的连接问题
[解决办法]
溢出

热点排行