每次程序运行到这段程序之后就跳出:系统严重错误,遇到问题要关闭!
哪位牛人帮帮忙,看看程序是不是有什么地方写错了!谢谢
type *RVAL = new type [NUM];
type *temp= new type [NUM];
n = 100;
k = 5;
//产生20组随机数组输出结果和时间
  for(int i=1;i<=20;i++)
     
 
  {  for(int j=0; j<n; j++)
  { srand((unsigned)time(NULL));
RVAL[j].value = 30*(rand()/65535.0);
    RVAL[j].weight = 30*(rand()/65535.0);
    RVAL[j].density = VAL[j].value/VAL[j].weight;
    RVAL[j].flag = 0;
  }
       MergeSort( RVAL,temp,0, n-1 );         
     begin = clock();
    FindValue(VAL,k,n,MAXW );  //找出n个自然数中k个数的所有组合序列
                                 后把最优的序列输出
     end = clock();
     rtime = end - begin;
     cout<<"所用时间为:"<<rtime<<endl;
    }

解决方案 »

  1.   

    srand((unsigned)time(NULL)); 你的种子放了无数个呀
    种子应该放在循环体外
      

  2.   

    RVAL[j].density = VAL[j].value/VAL[j].weight;
    VAL[j].weight有没有可能是0呢?如果是就会出错的
      

  3.   

    程序改为:
    n = 100;
    k = 5;
    //产生20组随机数组输出结果和时间
                srand((unsigned)time(NULL));
      for(int i=1;i<=20;i++)
      {type *RVAL = new type [NUM];
                 type *temp= new type [NUM];
       
     
        for(int j=0; j<n; j++)
      { 
        RVAL[j].value = 30*(rand()/65535.0);
        RVAL[j].weight = 30*(rand()/65535.0);
        RVAL[j].density = RVAL[j].value/RVAL[j].weight;
        RVAL[j].flag = 0;
      }
           MergeSort( RVAL,temp,0, n-1 );         
         begin = clock();
        FindValue(RVAL,k,n,MAXW );  //找出n个自然数中k个数的所有组合序列
                                     后把最优的序列输出
         end = clock();
         rtime = end - begin;
         cout<<"所用时间为:"<<rtime<<endl;
         delete [] RVAL;
         delete [] temp;
        }
    单步执行到调用FindValue(RVAL,k,n,MAXW );  的时候跳出这样的错误:
    unhandled exception in backpack.exe; 0xc0000005:Access violation
    这是怎么回事啊?
      

  4.   

    FindValue();这个函数会不会有问题,调进去,再看看那里错。
      

  5.   

    type *RVAL = new type [20][100];
    type *temp= new type [20][100];
    n = 100;
    k = 5;
    //产生20组随机数组输出结果和时间
    for(int i=1;i<=20;i++)
    {  
       for(int j=0; j<n; j++)
       { 
          srand((unsigned)time(NULL));
          RVAL[i][j]->value = 30*(rand()/65535.0);
          RVAL[i][j]->weight = 30*(rand()/65535.0);
          RVAL[i][j]->density = RVAL[i][j]->value/RVAL[i][j]->weight;
          RVAL[i][j]->flag = 0;
        }
        MergeSort( RVAL,temp,0, n-1 );
             
        begin = clock();
        FindValue(RVAL,k,n,MAXW );  //找出n个自然数中k个数的所有组合序列
                                     后把最优的序列输出
        end = clock();
        rtime = end - begin;
        cout<<"所用时间为:"<<rtime<<endl;
    }
      

  6.   

    按上述改了之后出错了:F:\WORK\BACKPACK\backpack.cpp(257) : error C2440: 'initializing' : cannot convert from 'struct type (*)[100]' to 'struct type *'FindValue(RVAL,k,n,MAXW )函数如果不是用随机生成的数据,直接手工输入一些数组运行可以输出正确结果,该函数应该没有什么问题吧。这种情况还可能是哪什么方面出错啊?