| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 797 人关注过本帖
标题:C++多文件
只看楼主 加入收藏
qingfeng888
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-7-16
收藏
 问题点数:0 回复次数:6 
C++多文件
我的三个程序文件,1.CPP,2.CPP,3.CPP可为什莫编译第二个时总出错:unexpected  end of file found,程序如下:

//1.CPP
#include<iostream.h>
#include<math.h>
class matrix
{public:matrix(int dims=2);
        ~matrix();
        void setmatrix(double*rmatr);
        void printm();
protected:
         int index;
         double *matrixa;
};
class linequ:public matrix
{
public:
          linequ(int dims);
          ~linequ();
          void setlinequ(double*a,double*b);
          void printl();
          int solve();
          void showx();
private:
          double *sums;
          double *solu;
};
//2.cpp
#include "1.CPP"
void matrix::setmatrix(double *rmatr)//设置矩阵
{
    for(int i=0;i<index*index;i++)//矩阵成员赋初值
        *(matrixa+i)=rmatr[i];
}
matrix::matrix(int dims)//矩阵matrix类的构造函数
{index=dims;
matrixa=new double[index*index];
}
matrix::~matrix()//矩阵matrix类的析构函数
{delete[]matrixa;}
void matrix::printm()//显示矩阵的元素
{cout<<"the matrix is:"<<endl;
for(int i=0;i<index;i++)
{for(int j=0;j<index;j++)
      cout<<*(matrixa+i*index+j)<<" ";
  cout<<endl;
}
}
linequ::linequ(int dims):matrix(dims)//派生类linequ的构造函数
{sums=new double[dims];
solu=new double[dims];
}
linequ::~linequ()//派生类linequ的析构函数
{delete[]sums;
 delete[]solu;
}
void linequ::setlinequ(double*a,double*b)//设置线性方程组
{setmatrix(a);                         //调用基类函数
for(int i=0;i<index;i++)
sums[i]=b[i];
}
void linequ::printl()//显示线性方程组
{cout<<"the line equation is:"<<endl;
for(int i=0;i<index;i++)
{for( int j=0;j<index;j++)
      cout<<*(matrixa+i*index+j)<<" ";
      cout<<" "<<sums[i]<<endl;
}
}
void linequ::showx()//输出方程的解
{cout<< "the result is:"<<endl;
for(int i=0;i<index;i++)
{ cout<<"x["<<i<<"]="<<solu[i]<<endl;
}
 }
 int linequ::solve()//全选主元高斯消去法解方程
 {
 int*js,l,k,i,j,is,p,q;
 double d,t;
 js=new int[index];
 l=1;
 for(k=0;k<index;k++)//消去过程
 {d=0.0;
 for(i=k;i<=index-1;i++)
      for(j=0;j<=index-1;j++)
      {t=fabs(matrixa[i*index+j]);
      if(t>d)
      {d=t;js[k]=j;is=i;}
      }
      if (d+l==0)
          l=0;
      else
      {if(js[k]!=k)
      for(i=0;i<=index;i++)
      {p=i*index+k;q=i*index+js[k];
      t=matrixa[p];matrixa[p]=matrixa[q];matrixa[q]=t;
      }
      if (is!=k)
      {for(j=k;j<=index-1;j++)
      {p=k*index+j;    q=is*index+j;
       t=matrixa[p];matrixa[q]=matrixa[q];matrixa[q]=t;
         }
      t=sums[k];sums[k]=sums[is];sums[is]=t;
      }
      }
      if(l==0)
      {delete[]js;cout<<"fail"<<endl;
      return(0);}
      d=matrixa[k*index+k];
      for(j=k+1;j<=index-1;j++)
      {p=k*index+j;matrixa[p]=matrixa[p]/d;
      sums[k]=sums[k]/d;
      for(i=k+1;i<=index-1;i++)
      {for(j=k+1;j<=index-1;j++)
      {p=i*index+j;
      matrixa[p]=matrixa[p]-matrixa[i*index+k]*matrixa[k*index+j];}
      sums[i]=sums[i]-matrixa[i*index+k]*sums[k];
      }
      }
      d=matrixa[(index-1)*index+index-1];
      if (fabs(d)+1.0==1.0)
      {delete[]js;cout<<"fail"<<endl;
      return(0);}
      solu[index-1]=sums[index-1]/d;//回代过程
      for(i=index-2;i>=0;i--)
      {t=0.0;
      for(j=i+1;j<=index-1;j++)
          t=t+matrixa[i*index+j]*solu[j];
      solu[i]=solu[i]-t;}
      js[index-1]=index-1;
      for(k=index-1;k>=0;k--)
          if(js[k]!=k)
          {t=solu[k];solu[k]=solu[js[k]];solu[js[k]]=t;}
          delete[]js;
          return(1);
 };
//3.cpp
#include"1.CPP"
void main()
{double a[]={0.2368,0.2471,0.2568,1.2671,
             0.1968,0.2071,1.2168,0.2271,
             0.1581,1.1675,0.1768,0.1871,
             1.1161,0.1254,0.1397,0.1490};
double b[4]={1.8471,1.7471,1.6471,1.5471};
linequ equl(4);
equl.setlinequ(a,b);
equl.printl();
if(equl.solve())
equl.showx();
else
cout<<"fail"<<endl;
};
请高手指教,谢谢,急!
搜索更多相关主题的帖子: 文件 
2008-07-29 18:18
很远的那颗星
Rank: 2
等 级:新手上路
威 望:4
帖 子:544
专家分:0
注 册:2008-6-30
收藏
得分:0 
在出错的那个文件看一下括号匹配不?

Fighting~~~~~~~~
2008-07-29 18:57
hurtsky
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2008-7-10
收藏
得分:0 
楼上说得有理,这种错误一般都是括号问题,在出错的文件后加个大括号试试,编码时习惯很重要。
2008-07-29 20:08
Fancylovingu
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-7-28
收藏
得分:0 
大括号掉了一个
大括号掉了一个,还有我不知道你为什么喜欢总在结尾加分号!!!!!2.cpp和3.cpp你认为在结尾加分号合适吗?
2008-07-29 21:42
qingfeng888
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-7-16
收藏
得分:0 
真诚感谢各位指教,我是C++新手,请大家多多关照,这么快就回复,感觉真的很有学习氛围,,以后会常来的,谢谢!
2008-07-29 22:51
很远的那颗星
Rank: 2
等 级:新手上路
威 望:4
帖 子:544
专家分:0
注 册:2008-6-30
收藏
得分:0 
C++新手,倒是有必要注意几点,我猜你用的书都是老古董了,竟然还用iostream.h这个头文件.
建议用这个
#include<iostream>
加上下面这句.
using namespace std;
主函数写成这样void main(){}是错误的了,很多编译器已不再支持.
建议这样用
int main()   //或int main(void)
{
   ...
   ...
   return 0;
}

还有,你要注意你一下你写代码的风格.

Fighting~~~~~~~~
2008-07-29 23:53
hero2007
Rank: 1
来 自:湖北武汉
等 级:新手上路
威 望:1
帖 子:130
专家分:0
注 册:2007-3-22
收藏
得分:0 
类似于文章的排版。
注意缩进……
2008-07-30 00:37
快速回复:C++多文件
数据加载中...
 
   



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

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