zoukankan      html  css  js  c++  java
  • Problem E: 向量的运算

     

    Problem E: 向量的运算

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 2238  Solved: 1347
    [Submit][Status][Web Board]

    Description

    编写类Vector,用于表示一个向量。显然:

    1. 它有三个数据成员,假定均为int类型的量,表示3个方向上的分量。

    2. 定义其无参构造函数,初始化三个分量为0。

    3.定义带参构造函数,用于初始化向量。

    4. 重载+、-、*、<<和>>运算符。其中“+”和“-”不改变操作数的值,只是返回运算结果;“*”实现两种乘法,包括数乘及叉积。

    Input

    输入有多行,第一行M>0,表示有M个测试用例,之后有M行。

    每行包括7个部分:前3个表示一个向量的三个分量,中间3个表示另一个向量的三个分量,最后一个为一个int类型的数。

    分量的顺序按照i、j、k给出。

    Output

    输出见样例。其中:如果某个分量为0,则不输出该数量,除非所有分量均为0,则输出0。如果某个分量为负数,则不应输出其前面的“+”号。

    Sample Input

    7
    1 1 1 1 1 1 3
    1 2 3 3 2 1 4
    -1 -2 -3 -3 -2 -1 10
    1 2 3 -1 2 3 5
    1 2 3 1 -2 3 6
    1 2 3 1 2 -3 9
    1 2 3 -1 -2 -3 5
    

      

    Sample Output

     

    HINT

     

    Append Code

    append.cc
    int main()
    {
        Vector vec1, vec2, vec3;
        int cases, n;
        cin>>cases;
        cout<<"vect+vec2	n*vec1	vec1*vec2
    ";
        for (int i = 0; i < cases; i++)
        {
            cin>>vec1>>vec2>>n;
            vec3 = vec1 + vec2;
            cout<<vec3<<"	";
            vec3 = vec1 * n;
            cout<<vec3<<"	";
            vec3 = vec1 * vec2;
            cout<<vec3<<endl;
        }
        return 0;
    }
    

      

    #include <iostream>
    using namespace std;
    class Vector
    {
    public :
        int x, y, z;
        Vector(int a=0, int b=0, int c=0):x(a), y(b), z(c){}
        Vector &operator+(Vector &p)
        {
            Vector temp;
            temp.x=x+p.x;
            temp.y=y+p.y;
            temp.z=z+p.z;
            return temp;
        }
        Vector &operator-(Vector &p)
        {
            Vector temp;
            temp.x=x-p.x;
            temp.y=x-p.y;
            temp.z=x-p.z;
            return temp;
        }
        Vector operator*(Vector &p)
        {
            return Vector(y*p.z-z*p.y, z*p.x-x*p.z, x*p.y-y*p.x);
        }
        Vector &operator*(int n)
        {
            Vector temp;
            temp.x=x*n;
            temp.y=y*n;
            temp.z=z*n;
            return temp;
        }
        friend istream &operator>>(istream &is, Vector &p)
        {
            int a, b, c;
            is>>a>>b>>c;
            p.x=a; p.y=b; p.z=c;
            return is;
        }
        friend ostream &operator<<(ostream &os, Vector &p)
        {
            if(p.x!=0)
            {
                if(p.x==1)
                os<<"i";
                else if(p.x==-1)
                os<<"-i";
                else
                os<<p.x<<"i";
            }
    
            if(p.y>0)
            {
               if(p.x!=0)
               {
                   if(p.y==1)
                   os<<"+"<<"j";
                   else
                   os<<"+"<<p.y<<"j";
               }
    
               if(p.x==0)
                os<<p.y<<"j";
            }
            else if(p.y<0)
            {
                if(p.y==-1)
                   os<<"-j";
                else
                   os<<p.y<<"j";
            }
            if(p.z>0)
            {
                if(p.x==0&&p.y==0)
                {
                    if(p.z==1)
                    os<<"k";
                    else
                    os<<p.z<<"k";
                }
    
                else
                {
                    if(p.z==1)
                    os<<"+"<<"k";
                    else
                    os<<"+"<<p.z<<"k";
                }
    
            }
            else if(p.z<0)
            {
                if(p.z==-1)
                os<<"-k";
                else
                 os<<p.z<<"k";
            }
    
            if(p.x==0&p.y==0&p.z==0)
                os<<0;
                return os;
        }
    
    };
    int main()
    {
        Vector vec1, vec2, vec3;
        int cases, n;
        cin>>cases;
        cout<<"vect+vec2	n*vec1	vec1*vec2
    ";
        for (int i = 0; i < cases; i++)
        {
            cin>>vec1>>vec2>>n;
            vec3 = vec1 + vec2;
            cout<<vec3<<"	";
            vec3 = vec1 * n;
            cout<<vec3<<"	";
            vec3 = vec1 * vec2;
            cout<<vec3<<endl;
        }
        return 0;
    }
    

      

    作者:7oDo

    仅供参考,请勿抄袭。

    Hang Hang Hang !!!

  • 相关阅读:
    【原创】开源Math.NET基础数学类库使用(01)综合介绍
    【原创】开源.NET排列组合组件KwCombinatorics使用(三)——笛卡尔积组合
    【原创】开源.NET排列组合组件KwCombinatorics使用(二)——排列生成
    apply,call,bind的区别
    javascript替换手机号中间4位
    css常见的概念
    关于URL编码/javascript/js url 编码
    jquery判断div滚动条到底部
    javascript中的array对象属性及方法
    localStorage和sessionStorage区别
  • 原文地址:https://www.cnblogs.com/Jie-Fei/p/9130247.html
Copyright © 2011-2022 走看看