雾里看花花儿 2013-10-06 13:41 采纳率: 0%
浏览 1851

求助! 刚开始学C++,勉强写了这个程序,希望有大神帮忙改一下下~~

#include "stdafx.h"
#include "cstring"
#include "cstdio"
#include "iostream"

using namespace std;

class Vect{
private:
int *comp;//用于储存向量中的各个分量;
size_t len;//向量长度;
static int counter;//储存在Add中抛出错误的个数
public:
//平凡构造函数。数组data中的数据即为向量的每个分向量值;
Vect(size_t n=0,int *data=NULL){
if(comp!=NULL){
len=n;
*comp=*data;}
}
//复制构造函数;深复制;
Vect(){
size_t n;size_t i=0;
n=length();
for(i=0;i<n;i++){
comp[i]=comp[i];
}
}
~Vect(){}//析构函数;

         size_t length();//计算向量的长度;
         bool empty();//向量判空;
         void clear();//删除向量,并将长度置0;
         void show();//显示向量;

         //友元函数
         friend void Add(const Vect&,const Vect&,Vect&);
         friend void Throw();
         //两个向量相加,计算结果储存在v3中;如果两个向量长度不相等,则抛出异常;
         //友元结束

};
int Vect::counter=0;
size_t Vect::length(){
int i=0;
if(comp[0]!='\0'){
while(comp[i]!='\0')i++;}
else return 0;
return i;
}
bool Vect::empty(){
size_t n,i=0;
n=length();
if(comp[i]==0)i++;
if(i<n-1){
cout<<"this oprand is not empty"<<endl;
return true;}
else{
cout<<"this oprand is empty"<<endl;
return false;}
}
void Vect::clear(){
if(!empty())return;
size_t i=0,n=length();
for(i=0;i<n;i++){
comp[i]=0;
}
len=0;
return;
}
void Vect::show(){
size_t i=0,n=length();
cout<<"this vector is:(";
for(i=0;i<n-1;i++){
cout<<comp[i]<<",";}
cout<<comp[n-1]<<")";
return;
}
void Add(const Vect& v1,const Vect& v2,Vect& v3){
Vect& v11=Vect(v1);
Vect& v21=Vect(v2);
size_t n1=v11.length();
size_t n2=v21.length();
if(n1!=n2){
Throw();
++Vect::counter;}
for(size_t i=0;i<n1;i++){
v3.comp[i]=v11.comp[i]+v21.comp[i];
v3.len=n1;
}
return;
}
void Throw(){
cout<<"the two oprands have diffrent length."<<endl;
return;
}
int main(){
cout<<"hello world!"<<endl;
int d1[3]={1,2,3};
int d2[3]={2,4,3};
int d3[3]={0,0,0};
Vect v1(3,d1),v2(3,d2),v3(3,d3);
Add(v1,v2,v3);
return 0;
}
这个程序写的勉强,自知问题颇多,希望有大神能帮忙改一改,谢谢!关于好多C++类的东西,我都还不是很多,在调用的时候,不止怎么用。有些东西涉及了C,但C不是学的很踏实,希望能弥补一下~谢谢啦~

  • 写回答

1条回答 默认 最新

  • Eleven 2015-01-04 11:35
    关注

    可以先看看C++ Primer一书

    评论

报告相同问题?

悬赏问题

  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 spring后端vue前端
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题