| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2710 人关注过本帖
标题:c++程序Ox0000005,Access Violation
只看楼主 加入收藏
sunyl1989
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-7-5
收藏
 问题点数:0 回复次数:1 
c++程序Ox0000005,Access Violation
来的哥哥都受小弟一拜,下面这段程序出现Unhandled exception inXXX:0x0000005:Access Violation#include <string>。
哥哥程序里面蓝色的部分不用看 就是不断给出一个浮点数m,我想不断将m存入float B[2001][30]中,所以大家直接看红色部分就好了。我发现再屏蔽掉i++这命令时候没问题,我保证没啥语法错误,跪谢啊  
您的帮助可能让我这个苦逼不在苦逼!
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <iomanip>
#include <math.h>
#include <cmath>

using   namespace   std;


float B[2001][30];
double d=3.1750; //截断距离                     
int i=1;
//注:C++规定,数组定义为全局变量或静态变量时,其所有元素的初值都为0;
void f1(float b[][3],int d2, float x1, float x2,float y2, float z3)
{
   float t,m,tem;
    int y=1,i=1;               
    float minr1,minr2,minr3,minr4,minr5,minr6,minr7,minr8,minr9,minr10,minr11,minr12,minr13,minr14,minr15;
    float minr[28];
   
    for(int a=1; a<d2; a++)         
      {   
          int n=0;                           
          for(int c=1; c<d2; c++)            
            {      
                if(c!=a)
                     {                                                                                                                                       
                          minr1=b[a][0]-b[c][0];                           //与c原子的x坐标之差
                          minr2=b[a][1]-b[c][1];                          //与c原子的y坐标之差
                          minr3=b[a][2]-b[c][2];                          //与c原子的z坐标之差      
                          minr4=b[a][0]-b[c][0]+x1;                               //与c原子左方的像c2的x坐标之差
                          minr5=b[a][0]-b[c][0]-x1;                               //与c原子右方的像c1的x坐标之差
                          minr6=b[a][1]-b[c][1]+y2;                       //与c原子下方的像c4的y坐标之差
                          minr7=b[a][1]-b[c][1]-y2;                      //与c原子上方的像c3的y坐标之差
                          minr8=b[a][1]-b[c][1]+x2;                               //与c原子左方c2的像的y坐标之差
                          minr9=b[a][1]-b[c][1]-x2;                               //与c原子右方c1的像的y坐标之差
                          minr10=b[a][1]-b[c][1]+x2-y2;                   //与c原子左上方的像c5的y坐标之差
                          minr11=b[a][1]-b[c][1]+x2+y2;                   //与c原子左下方的像c6的y坐标之差
                          minr12=b[a][1]-b[c][1]-x2+y2;                  //与c原子右下方的像c8的y坐标之差
                          minr13=b[a][1]-b[c][1]-x2-y2;                 //与c原子右上方的像c7的y坐标之差  
                          minr14=b[a][2]-b[c][2]-z3;                              //与c原子上层的像的Z坐标之差
                          minr15=b[a][2]-b[c][2]+z3;                              //与c原子下层的像的Z坐标之差                                            
                              minr[1]=pow(minr1,2)+pow(minr2,2)+pow(minr3,2);
                              minr[2]=pow(minr1,2)+pow(minr6,2)+pow(minr3,2);       // 与下面c4的像的距离                    
                              minr[3]=pow(minr1,2)+pow(minr7,2)+pow(minr3,2);       // 与上面c3的像的距离                  
                              minr[4]=pow(minr4,2)+pow(minr8,2)+pow(minr3,2);       // 与左面的像c2的距离                                            
                              minr[6]=pow(minr4,2)+pow(minr10,2)+pow(minr3,2);      // 与左上面的像c5的距离
                              minr[7]=pow(minr4,2)+pow(minr11,2)+pow(minr3,2);      // 与左下面的像c6的距离
                              minr[5]=pow(minr5,2)+pow(minr9,2)+pow(minr3,2);       // 与右面的像c1的距离  
                              minr[8]=pow(minr5,2)+pow(minr12,2)+pow(minr3,2);      // 与右下面的像c8的距离
                              minr[9]=pow(minr5,2)+pow(minr13,2)+pow(minr3,2);      // 与右上面的像c7的距离
                          minr[10]=pow(minr1,2)+pow(minr2,2)+pow(minr14,2);
                          minr[11]=pow(minr1,2)+pow(minr6,2)+pow(minr14,2);       // 与下面c4的像的距离                    
                          minr[12]=pow(minr1,2)+pow(minr7,2)+pow(minr14,2);       // 与上面c3的像的距离                  
                          minr[13]=pow(minr4,2)+pow(minr8,2)+pow(minr14,2);       // 与左面的像c2的距离                                            
                          minr[14]=pow(minr4,2)+pow(minr10,2)+pow(minr14,2);      // 与左上面的像c5的距离
                          minr[15]=pow(minr4,2)+pow(minr11,2)+pow(minr14,2);      // 与左下面的像c6的距离
                          minr[16]=pow(minr5,2)+pow(minr9,2)+pow(minr14,2);       // 与右面的像c1的距离  
                          minr[17]=pow(minr5,2)+pow(minr12,2)+pow(minr14,2);      // 与右下面的像c8的距离
                          minr[18]=pow(minr5,2)+pow(minr13,2)+pow(minr14,2);      // 与右上面的像c7的距离
                              minr[19]=pow(minr1,2)+pow(minr2,2)+pow(minr15,2);
                              minr[20]=pow(minr1,2)+pow(minr6,2)+pow(minr15,2);       // 与下面c4的像的距离                    
                              minr[21]=pow(minr1,2)+pow(minr7,2)+pow(minr15,2);       // 与上面c3的像的距离                  
                              minr[22]=pow(minr4,2)+pow(minr8,2)+pow(minr15,2);       // 与左面的像c2的距离                                            
                              minr[23]=pow(minr4,2)+pow(minr10,2)+pow(minr15,2);      // 与左上面的像c5的距离
                              minr[24]=pow(minr4,2)+pow(minr11,2)+pow(minr15,2);      // 与左下面的像c6的距离
                              minr[25]=pow(minr5,2)+pow(minr9,2)+pow(minr15,2);       // 与右面的像c1的距离  
                              minr[26]=pow(minr5,2)+pow(minr12,2)+pow(minr15,2);      // 与右下面的像c8的距离
                              minr[27]=pow(minr5,2)+pow(minr13,2)+pow(minr15,2);      // 与右上面的像c7的距离
                         t=minr[1];                                                   
                         for(int p=1;p<27;p++)
                         {
                             if(t>=minr[p+1])
                             t=minr[p+1];
                         }
                 

   
              m=sqrt(t);
  


              [i]B[a]=m;
              i++;
           
                 }
          }  //c循环for语句的下标大括号  


for (int i2=1;i2<30;i2++)
        {
        for (int j=i2+1;j<30;j++)
                {   
                if (B[a][j]<B[a][i2])
                {
                tem=B[a][i2];B[a][i2]=B[a][j];B[a][j]=tem;
                }
                }
        } //B[2001][30]由小到大排序,B[2001][12]前面为最近的十二个原子距离





    } //此大括号为中心原子a循环的for语句下标               
                        
                                                                  
} //函数f1功能,判定两两成键的原子,并把满足界面原子要求的中心原子序号存入数组 s[y];

      








int main(void)
{  float A[2001][12];
     float x,y,z,v1,v2,v3;
     float a[2001][3];
     float b1,b2;
     float d1,d3,d4,d5;  
     int d2;               
     float e1,e2,e3;
     float k1,k2,k3;
     float g1,g2,g3;
     char c1[12];
     char c2[4];
   
     string c,c3,c4,c5,c6,c7,c8;
        
     int n,k,h;

     ifstream  infile1;
     ofstream  outfile1;
     infile1.open("HISTORY");
     outfile1.open("interfacial");               
   
     for(h=0;h<1;h++)                        //h为构型循环次数,共计5个构型
        {
             infile1>>c1>>d1>>d2>>d3>>d4>>d5   //注:d2是体系中所有的原子个数;
                    >>e1>>e2>>e3
                    >>k1>>k2>>k3
                    >>g1>>g2>>g3;
             for(k=1;k<(d2+1);k++)               
             {
                 infile1>>c2>>n>>b1>>b2
                        >>x>>y>>z
                        >>v1>>v2>>v3;             //读取每个原子的坐标和速度
                        a[k][0]=x;
                        a[k][1]=y;
                        a[k][2]=z;
             }                          //注:此循环用于建立a[100][3]数组,实现将2000原子的坐标依次存在a的二维数组中;
         
   f1(a,(d2+1),e1,e2,k2,g3);
   

         
        for (int r1=1;r1<2001;r1++)
            for (int r2=1;r2<30;r2++)
                {outfile1<<B[r1][r2]<<'\n';}

         
         
  
  
            
   
            outfile1<<'\n';
            outfile1<<'\n';
            outfile1<<'\n';
      
            
            for(int i1=0;i1<(d2+1); i1++)
               for(int j1=0;j1<3; j1++)
               {
                   a[i1][j1]=0;
               }                                            //注:将数组a[2001][3]归零;
            for(int i5=1;i5<(d2+1); i5++)
               for(int j5=0;j5<30; j5++)
               {
                   B[i5][j5]=0;
               }                                           //注:将数组B[2001][20]归零;  
         
        }//构型循环
    outfile1.close();
    infile1.close();
return 0;
}//主函数



搜索更多相关主题的帖子: include 哥哥 
2012-07-05 16:06
sunyl1989
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-7-5
收藏
得分:0 
问题解决了,是i一直累加的问题,把i=1的定义放到a循环里面就好了、、、
2012-07-05 16:59
快速回复:c++程序Ox0000005,Access Violation
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028858 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved