精华内容
下载资源
问答
  • 6-9 二维向量相加(C++ 运算符重载) (10分) 裁判测试程序样例中展示的是一段二维向量类TDVector的定义以及二维向量求和的代码,其中缺失了部分代码,请补充完整,以保证测试程序正常运行。 函数接口定义: 提示:...

    6-9 二维向量相加(C++ 运算符重载) (10分)
    裁判测试程序样例中展示的是一段二维向量类TDVector的定义以及二维向量求和的代码,其中缺失了部分代码,请补充完整,以保证测试程序正常运行。

    函数接口定义:

    提示:需要补充的函数有:

    1. 带参构造函数
    2. getX
    3. getY
    4. setX
    5. setY
    6. 运算符重载函数

    判测试程序样例:
    #include
    #include
    using namespace std;
    class TDVector{
    private:
    double x;
    double y;
    public:
    TDVector(){
    x = y = 0;
    }
    你提交的代码将被嵌在这里(替换本行内容)
    };
    int main(){
    TDVector a;
    double x, y;
    cin >> x >> y;
    TDVector b(x, y);
    cin >> x >> y;
    TDVector c;
    c.setX(x);
    c.setY(y);
    TDVector d;
    d = a + b + c;
    cout << fixed << setprecision(2) << d.getX() << ’ ’ << d.getY();
    return 0;
    }

    输入样例:
    1.1 2.2
    3.3 4.4

    输出样例:
    4.40 6.60

    我的代码:

    TDVector(double a,double b)   
    {
        x=a,y=b;
        }
    void setX(double a)
    {
        x=a;
        }
    void setY(double b)
    {
        y=b;
        }
    double getX()
    {
        return x;
        }
    double getY()
    {
        return y;
        }
    TDVector operator+(TDVector &a)
    {
        TDVector c;    
        c.x = this->x + a.x;    
        c.y = this->y + a.y;    
        return c;
        }
    展开全文
  • 6-1 函数重载实现两数相加 (15分) 设计一个重载函数add,该函数有两个参数,可以实现两个类型相同的参数相加的操作,函数返回相加的结果。两个参数可以是整数、实数和字符串,但必须保证两个参数类型相同。 裁判...

    6-4 二维向量相加(C++ 运算符重载) (10分)

    裁判测试程序样例中展示的是一段二维向量类TDVector的定义以及二维向量求和的代码,其中缺失了部分代码,请补充完整,以保证测试程序正常运行。

    函数接口定义:

    提示:需要补充的函数有:
    1. 带参构造函数
    2. getX
    3. getY
    4. setX
    5. setY
    6. 运算符重载函数
    

    裁判测试程序样例:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    class TDVector{
    private:
        double x;
        double y;
    public:
        TDVector(){
            x = y = 0;
        }
    /**    你提交的代码将被嵌在这里(替换本行内容)  **/
    };
    int main(){
        TDVector a;
        double x, y;
        cin >> x >> y;
        TDVector b(x, y);
        cin >> x >> y;
        TDVector c;
        c.setX(x);
        c.setY(y);
        TDVector d;
        d = a + b + c;
        cout << fixed << setprecision(2) << d.getX() << ' ' << d.getY();
        return 0;
    }
    

    输入样例:

    1.1 2.2
    3.3 4.4
    

    输出样例:

    4.40 6.60

    代码实现:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    class TDVector{
    private:
        double x;
        double y;
    public:
        TDVector(){
            x = y = 0;
        }
    /**    你提交的代码将被嵌在这里(替换本行内容)  **/
    	TDVector(double x_,double y_):x(x_),y(y_)
    	{
    		
    	}
    	double getX()
    	{
    		return x;
    	}
    	double getY()
    	{
    		return y;
    	}
    	void setX(double a)
    	{
    		x=a;
    	}
    	void setY(double b)
    	{
    		y=b;
    	}
    	TDVector operator +( TDVector c)
    		{
    			this->x=this->x+c.x;
    			this->y=this->y+c.y;
    			return *this;
    		}
    };
    int main(){
        TDVector a;
        double x, y;
        cin >> x >> y;
        TDVector b(x, y);
        cin >> x >> y;
        TDVector c;
        c.setX(x);
        c.setY(y);
        TDVector d;
        d = a + b + c;
        cout << fixed << setprecision(2) << d.getX() << ' ' << d.getY();
        return 0;
    }
    


     

     

     

     

    展开全文
  • 6-2 二维向量定义及相加(Java) (10 分) 裁判测试程序样例中展示的是一段二维向量类TDVector的定义以及二维向量求和的Java代码,其中缺失了部分代码,请补充完整,以保证测试程序正常运行。 函数接口定义: 提示:...

    6-2 二维向量定义及相加(Java) (10 分)

    裁判测试程序样例中展示的是一段二维向量类TDVector的定义以及二维向量求和的Java代码,其中缺失了部分代码,请补充完整,以保证测试程序正常运行。

    函数接口定义:

    提示:需要补充的成员方法有:
    1. 无参构造方法
    2. 带参构造方法
    3. getX
    4. getY
    5. setX
    6. setY
    7. add方法
    

    裁判测试程序样例:

    import java.util.Scanner;
    class TDVector {
        private double x;
        private double y;
        public String toString() {
            return "("+this.x+","+this.y+")";
        }
    
        /** 你所提交的代码将被嵌在这里(替换此行) **/
    
    }
    public class Main {
        public static void main(String[] args) {
            TDVector a = new TDVector();  /* 无参构造,向量的x和y默认为0 */
            Scanner sc = new Scanner(System.in);
            double x,y,z;
            x = sc.nextDouble();
            y = sc.nextDouble();
            z = sc.nextDouble();        
            TDVector b = new TDVector(x, y);  /* 按照参数构造向量的x和y */
            TDVector c = new TDVector(b);  /* 按照向量b构造向量 */
            a.setY(z);
            System.out.println(a);
            System.out.println(b);
            System.out.println(c);
            c.setX(z);
            a = b.add(c);
            System.out.println(a);
            System.out.println("b.x="+b.getX()+" b.y="+b.getY());
            sc.close();
        }
    }
    

    输入样例:

    3.14 1.9 2.72
    

    输出样例:

    (0.0,2.72)
    (3.14,1.9)
    (3.14,1.9)
    (5.86,3.8)
    b.x=3.14 b.y=1.9
    

    Solution:

    public TDVector(){
    }
    
    public TDVector(TDVector a){
    	x=a.x;
    	y=a.y;
        
    }
    public TDVector(double a,double b){
        this.x=a;
        this.y=b;
    }
    public void setX(double a)
    {
        this.x=a;
        }
    public void setY(double b)
    {
        this.y=b;
        }
    public double getX()
    {
        return x;
        }
    public double getY()
    {
        return y;
        }
    
    public TDVector add(TDVector p)
    {
        TDVector c= new TDVector();   
        c.x = this.x + p.x;   
        c.y = this.y + p.y;    
        return c;
        }
    
    
    展开全文
  • 两个二维向量相加,得到新的二维向量(使用__add__方法) 支持数乘运算(使用__mul__方法) 编程 Step 1 初始化 使用__init__和__str__方法,当输入:print V2(1.1, 2.2)时,打印: V2[1.10, 2.20] 程序设计 class

    目标

    定义一个 Python 类名为 V2,用于表示二维向量,支持下列向量运算:

    • 由两个实数创建一个二维向量:如:v = V2(1.1, 2.2)
    • 将一个向量转换为字符串形式(使用__str__方法)
    • 分解(得到x和y的值)
    • 两个二维向量相加,得到新的二维向量(使用__add__方法)
    • 支持数乘运算(使用__mul__方法)

    编程

    Step 1 初始化

    使用__init____str__方法,当输入:print V2(1.1, 2.2)时,打印:

    V2[1.10, 2.20]
    

    程序设计

    class V2():
    	x=0
    	y=0
    	def __init__(self, xVal,yVal):
    		self.x = xVal
    		self.y = yVal
    	def __str__(self):
    		return "V2[%.2f, %.2f]" % (self.x, self.y)
    

    效果:

    >>> print(V2(1.1,2.2))
    V2[1.10, 2.20]
    >>> 
    

    Step 2 getX和getY

    程序设计

    class V2():
    	x=0
    	y=0
    	def __init__(self, xVal,yVal):
    		self.x = xVal
    		self.y = yVal
    	def __str__(self):
    		return "V2[%.2f, %.2f]" % (self.x, self.y)
    	def getX(self):
    		return self.x
    	def getY(self):
    		return self.y
    

    效果:

    >>> v.getX()
    1.0
    >>> v.getY()
    2.0
    >>> print(v)
    V2[1.00, 2.00]
    >>> 
    

    Step 3 add和mul

    程序设计

    版本一:

    class V2():
    	x=0
    	y=0
    	def __init__(self, xVal,yVal):
    		self.x = xVal
    		self.y = yVal
    	def __str__(self):
    		return "V2[%.2f, %.2f]" % (self.x, self.y)
    	def getX(self):
    		return self.x
    	def getY(self):
    		return self.y
    	def add(self, v):
    		return "[%.2f, %.2f]" % (self.x+v.x, self.y+v.y)
    	def mul(self, k):
    		return "[%.2f, %.2f]" % (self.x*k, self.y*k)
    

    验证:

    >>> a=V2(1.0,2.0)
    >>> b=V2(2.2,3.3)
    >>> print(a.add(b))
    [3.20, 5.30]
    >>> print(a.mul(2))
    [2.00, 4.00]
    >>> print(a.add(b).mul(-1))
    Traceback (most recent call last):
      File "<pyshell#205>", line 1, in <module>
        print(a.add(b).mul(-1))
    AttributeError: 'str' object has no attribute 'mul'
    

    问题:

    add() 返回的是字符串,无法继续进行。

    解决:返回一个二维向量即可

    版本二:

    class V2():
    	x=0
    	y=0
    	def __init__(self, xVal,yVal):
    		self.x = xVal
    		self.y = yVal
    	def __str__(self):
    		return "V2[%.2f, %.2f]" % (self.x, self.y)
    	def getX(self):
    		return self.x
    	def getY(self):
    		return self.y
    	def add(self, v):
    		return V2(self.x+v.x,self.y+v.y)
    	def mul(self, k):
    		return V2(self.x*k,self.y*k)
    

    验证:

    >>> a=V2(1.0,2.0)
    >>> b=V2(2.2,3.3)
    >>> print(a.add(b).mul(-1))
    V2[-3.20, -5.30]
    

    Step 4 重载运算符

    使用 __add____mul__

    示例:

    >>> print V2(1.1, 2.2) + V2(3.3, 4.4)
    V2[4.4,6.6]
    

    程序设计

    class V2():
    	x=0
    	y=0
    	def __init__(self, xVal,yVal):
    		self.x = xVal
    		self.y = yVal
    	def __str__(self):
    		return "V2[%.2f, %.2f]" % (self.x, self.y)
    	def getX(self):
    		return self.x
    	def getY(self):
    		return self.y
    	def add(self, v):
    		return V2(self.x+v.x,self.y+v.y)
    	def mul(self, k):
    		return V2(self.x*k,self.y*k)
    	def __add__(self, v):
    		return self.add(v)
    	def __mul__(self, v):
    		return self.mul(v)
    

    验证:

    >>> a=V2(1.0,2.0)
    >>> b=V2(2.2,3.3)
    >>>> print(a+b)
    V2[3.20, 5.30]
    >>> print(V2(1.1, 2.2) + V2(5, 6))
    V2[6.10, 8.20]
    >>> print(V2(1.1, 2.2) * 2)
    V2[2.20, 4.40]
    

    测试程序:

    生成0~10内随即小数,保留两位

    round(random.uniform(0,10),2)
    

    单次测试

    def unitTestV2():
    	import random
    	a=round(random.uniform(0,10),2)
    	b=round(random.uniform(0,10),2)
    	v1 = V2(a,b)
    	a=round(random.uniform(0,10),2)
    	b=round(random.uniform(0,10),2)
    	v2 = V2(a,b)
    	print(v1)
    	print(v2)
    	k = random.randint(0,9)
    	print("k = %d\n" %(k))
    	print("add test:")
    	addV = v1 + v2
    	if (addV.x == (v1.x + v2.x)) and (addV.y == (v1.y + v2.y)):
    		print("add test OK!!!")
    		print(addV)
    	else:
    		print("add test Error!!!")
    	print("\n")
    	print("mul test:")
    	mulV1=v1 * k
    	if (mulV1.x == (v1.x * k)) and (mulV1.y == (v1.y * k)):
    		print("mul v1 test OK!!!")
    		print(mulV1)
    	else:
    		print("mul v1 test Error!!!")
    	
    	mulV2=v2 * k
    	if (mulV2.x == (v2.x * k)) and (mulV2.y == (v2.y * k)):
    		print("mul v2 test OK!!!")
    		print(mulV2)
    	else:
    		print("mul v2 test Error!!!")
    

    多次测试

    >>> def lotTest(n):
    	times = n
    	while n:
    		print("------------------test %d--------------" %(times-n+1))
    		unitTestV2()
    		n=n-1
    

    结果

    >>> lotTest(5)
    ------------------test 1--------------
    V2[6.39, 4.87]
    V2[8.20, 8.90]
    k = 7
    
    add test:
    add test OK!!!
    V2[14.59, 13.77]
    
    
    mul test:
    mul v1 test OK!!!
    V2[44.73, 34.09]
    mul v2 test OK!!!
    V2[57.40, 62.30]
    ------------------test 2--------------
    V2[0.16, 1.44]
    V2[3.65, 5.84]
    k = 0
    
    add test:
    add test OK!!!
    V2[3.81, 7.28]
    
    
    mul test:
    mul v1 test OK!!!
    V2[0.00, 0.00]
    mul v2 test OK!!!
    V2[0.00, 0.00]
    ------------------test 3--------------
    V2[1.82, 4.23]
    V2[0.90, 0.51]
    k = 2
    
    add test:
    add test OK!!!
    V2[2.72, 4.74]
    
    
    mul test:
    mul v1 test OK!!!
    V2[3.64, 8.46]
    mul v2 test OK!!!
    V2[1.80, 1.02]
    ------------------test 4--------------
    V2[8.21, 9.14]
    V2[6.22, 0.88]
    k = 8
    
    add test:
    add test OK!!!
    V2[14.43, 10.02]
    
    
    mul test:
    mul v1 test OK!!!
    V2[65.68, 73.12]
    mul v2 test OK!!!
    V2[49.76, 7.04]
    ------------------test 5--------------
    V2[8.58, 7.01]
    V2[1.22, 5.70]
    k = 4
    
    add test:
    add test OK!!!
    V2[9.80, 12.71]
    
    
    mul test:
    mul v1 test OK!!!
    V2[34.32, 28.04]
    mul v2 test OK!!!
    V2[4.88, 22.80]
    
    展开全文
  • 二维向量计算 向量加法 在二维坐标中 A点的坐标是(4,5),B点坐标是(2,2),那么ab向量就是A点的坐标减去B点的坐标,计 算如下(4-2,5-2)=(2,3)。 同样的,两个向量相加的时候也就是坐标的各个轴上的值...
  • 向量的常用定义#include &lt;bits/stdc++.h&gt; using namespace std; struct Point { double x,y; Point(double x=0,double y=0):x(x),y(y) {} }; typedef Point Vector ;...///两个向量相加 ...
  • 数学之向量一、向量1、什么是向量2、向量的形式3、向量的大小4、向量的方向、向量运算1、向量相减2、向量相加3、向量与标量的乘除法4、点乘5、叉乘三角函数1、角的度量单位2、三角函数3、反三角函数如何改变...
  • DirectX 向量

    2012-11-06 23:28:40
    向量: 有大小和方向的量。...二维向量 D3DXVECTOR2 三维向量 D3DXVECTOR3 四维向量 D3DXVECTOR4 向量相加,相减,相乘等直接使用 三维向量长度计算: FLOAT D3DXVec3Length( CONST D3DXVECTOR3 *pV ); 二维
  • 下面通过一个向量相加的程序来了解OpenCL . 有A,B两个四维向量,相加后值存在C向量里,openCL根据用户提供的维数,将向量分解成多个任务分发给DSP进行并行计算。 openCL程序分为两个部份,一部份是内核代码,负责...
  • Revit作为一款三建模软件,表达的是各种结构的空间...向量相加 AngleOnPlaneTo 向量和指定平面的夹角 AngleTo 两个向量之间的夹角 CrossProduct 两个向量之间的叉乘(结果为两个向量构成平面的法向量,遵守右
  • 机器学习() 线性代数-向量 对于机器学习来说,数学很重要,即使你已经把大学阶段...比如说,一个班级里所有学生的身高、体重、年龄数据,可以把数据记为三维向量(height,weight,age),这个班级有4门考试,可以把学...
  • 向量

    2015-08-08 13:26:02
    二维、三维空间中有相应的几何意义,可以继续往高维推广。向量加法对应维度相加向量乘法内积两向量内积为对应分量乘积的和。向量a⃗与b⃗\vec a与\vec b对应两个行矩阵A与B,那么 a⃗⋅b⃗=AT⋅B\vec a\cdot \vec...
  • Lua-元表

    2020-06-30 22:36:40
    比如:在C++或者Java中经常需要将一个坐标封装成一个二维向量的结构体,然后在里面重载一些加减的操作, 因为普通的加减是对于两个数字的,但是当你想让两个二维向量相加的时候,需要将X相加,然后Y相加,然后返回一...
  • 模板:二维计算几何

    2017-12-07 00:35:15
    二维几何 点和向量化为坐标Coord进行运算,使用stl中的容器complex实现(参考地址)。 复数相乘的几何意义为长度相乘,极角相加。 用直线上的一点p和方向向量v表示一条经过p的直线,直线上的所有点q满足q=p+t...
  • 向量(Vector):一列数 矩阵(Matrix):二维向量 张量(Tensor):三维向量 机器学习的核心只不过向量、矩阵、张量之间的相乘与相加
  • 向量相加和数乘 向量的线性组合 仿射组合:如果线性组合的系数a1,a2,...am的和等于1,那么它就是仿射组合,即 a1 + a2 + ... + am = 1 凸组合:满足仿射组合的条件,且 ai >= 0 (i = 1,2,...,m) 向量的度量...
  • D3DX向量函数

    2007-07-26 13:39:00
    D3DX向量函数1:D3DXVec2Add():两个二维向量相加;D3DXVec3Add():D3DXVec4Add(): 2:D3DXVec2BaryCentric():利用给定的三个二维向量点,及f和g的值,得出Barycentric coordinates;D3DXVec3BaryCentric():D3DXVec4...
  • K-means 算法是一种简单...简单来说就是把一个分到一个类中的所有数据点的每一维相加,得一个向量。然后,该向量的每一除以该类的点的个数。这样得的向量就是该类的中心(centroid). 算法的思路如下: 1. 初始...
  • 图中第一个列表有两行 我们说它是二维向量,第二个列表有四行,我们说他是四维向量 向量的运算 向量加法:@向量加法 将对应的行相加 (将向量w的起点平移到向量V的终点) (可以理解为从原点先向右走一步,向上两...
  • 向量点乘与叉乘

    2017-09-12 10:18:00
    二维空间中,一个向量可以用一对x和y来表示。例如由点(1,3)到(5,1的向量可以用(4,-2)来表示。这里大家要特别注意,我这样说并不代表向量定义了起点和终点。向量仅仅定义方向和长度。向量加法 向量也支持各种...
  • 01-向量究竟是什么?

    2021-02-08 10:26:25
    处在平面中的向量是二维的、处在空间中的向量是三维的。 计算机专业 向量是有序的数字列表(数字顺序不可颠倒)。 向量是一个列表。 数学家 试图概括两种观点。 可以是任何东西,只要保证两个向量相加以及数字与...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 140
精华内容 56
关键字:

二维向量相加