zoukankan      html  css  js  c++  java
  • Chapter 11 homework


    1.
    #include <iostream>
    #include <fstream>
    #include <ctime>
    #include "vector.h"
    
    int main()
    {
        using namespace std;
        using VECTOR::Vector;
        ofstream of;
        of.open("result.txt");
    
        srand(time(0));
        double direction;
        Vector step;
        Vector result(0.0,0.0);
        unsigned int steps = 0;
        double target;
        double dstep;
        cout <<"Enter target distance ( q to quit ): ";
        cin >> target;
        cout << "Enter step length: ";
        cin >> dstep;
        of << "Target Distance : " << target << ", Step Size: " << dstep << endl;
    
        for(steps = 0; result.magval() < target; steps++)
        {
            direction = rand() % 360;
            step.reset (dstep, direction, Vector::POL);
            result = result + step;
            of << steps << ": "<< result << endl;
        }
        of << "After " << steps << " steps, the subject has the following location:
    ";
        of << result <<endl;
        result.polar_mode();
        of << " or
    " << result << endl;
        of << "Average outward distance per step = "
                 << result.magval()/steps << endl;
        steps = 0;
        result.reset(0.0, 0.0);
        cout << "Bye!
    ";
        cin.clear();
        while(cin.get() != '
    ')
            continue;
        of.close();
        return 0;
    }

    ======================================== 答案 =========================================

    #include <iostream>
    #include <fstream>
    #include <limits>
    #include "TVector.h"
    
    using namespace std;
    using namespace n_vector;
    
    
    int
    main (void) 
    { 
    ofstream    of;
    of.open("output.txt");
    
    while (true) {
    double    setp;
    double    distance;
    unsigned    cnt_steps = 0;
    
    cout << "输入步长:";
    cin >> setp;
    if (!cin || setp <= 0) {
    break;
    }
    cin.clear();    // 清空输入缓冲区错误标志位
    cin.ignore(std::numeric_limits<std::streamsize>::max(), '
    ');    // 清空输入缓冲区内容
    
    cout << "输入距离:";
    cin >> distance;
    if (!cin || distance <= 0) {
    break;
    }
    cin.clear();    // 清空输入缓冲区错误标志位
    cin.ignore(std::numeric_limits<std::streamsize>::max(), '
    ');    // 清空输入缓冲区内容
    
    of << "开始>>>>>>>>>>" << endl;
    TVector    vec(0, 0, TVector::POL);
    srand((unsigned)time(nullptr));
    while (vec.getLength() < distance) {
    vec += TVector(setp, rand()%361, TVector::POL);
    of << cnt_steps++ << "" << vec << endl;
    }
    of << "结束<<<<<<<<<<" << endl;
    of << "距离" << distance << ",步长" << setp << ",历经" << cnt_steps << "步走完,终点坐标" << vec << endl;
    of << "==========
    " << endl;
    }
    
    of.close();
    
    
    cout << endl;
    return (0);
    }

    2.答案

    double setp;
    double distance;
    int times;
    int max_setps = 0;
    int min_setps = numeric_limits<unsigned>::max();

    int sum_setps = 0;
    ......
     for (int i = 0; i < times; ++i) {
                int cnt_steps = 0;
                TVector vec(0, 0, TVector::POL);
    
                cout << i << ":";
                while (vec.getLength() < distance) {
                    vec += TVector(setp, rand()%360, TVector::POL);
                    ++cnt_steps;
                }
                cout << cnt_steps << "steps to " << vec << endl;
    
                if (cnt_steps > max_setps) {
                    max_setps = cnt_steps;    // get max step
                }
                if (cnt_steps < min_setps) {
                    min_setps = cnt_steps;    // get min step
                }
                sum_setps += cnt_steps;       // total steps
            }

     7.  11_7_complex0.h


    #ifndef E11_7_COMPLEX0_H
    #define E11_7_COMPLEX0_H
    
    #include <iostream>
    class Complex
    {
    private:
        double m_a;
        double m_c;
    public:
        Complex();  //default constructor
        ~Complex();
        Complex(double x1, double y1 );  // constructor
        //operator overloading
        Complex operator+(const Complex & t) const;
        Complex operator-(const Complex & t) const;
        Complex operator*(double n) const;
        Complex operator*(const Complex & t) const;
        Complex operator~() const;
        //friend
        friend std::ostream & operator<<(std::ostream & os, const Complex & v);
        friend std::istream & operator>>(std::istream & is, Complex & t);
        friend Complex operator*(double m, const Complex & t);
    };
    #endif //E11_7_COMPLEX0_H
    complex0.h

    11_7_comlpex0.cpp


    #include "complex0.h"
    using std::endl;
    Complex::Complex()
    {
        m_a = m_c = 0.0;
    }
    
    Complex::~Complex() {}
    
    Complex::Complex(double x1, double y1)
    {
        m_a = x1;
        m_c = y1;
    }
    
    Complex Complex::operator+(const Complex &t) const
    {
        return Complex(t.m_a + m_a, t.m_c + m_c);
    }
    
    Complex Complex::operator-(const Complex & t) const
    {
        return Complex(m_a - t.m_a, m_c - t.m_c);
    }
    
    Complex Complex::operator*(double n) const
    {
        return Complex(m_a * n, m_c * n);
    }
    
    Complex Complex::operator*(const Complex & t) const
    {
        return Complex(t.m_a * m_a - t.m_c * m_c, t.m_c * m_a + t.m_a * m_c);
    }
    Complex Complex::operator~() const
    {
        return Complex(m_a, -m_c);
    }
    //friend
    std::ostream &operator<<(std::ostream & os, const Complex & v)
    {
        os << "( " << v.m_a <<", " << v.m_c <<"i )" << endl;
    }
    
    std::istream &operator>>(std::istream & is, Complex & t)
    {
        std::cout << "Real: ";
        is >> t.m_a;
        std::cout << "Imaginary: ";
        is >> t.m_c;
    }
    
    Complex operator*(double m, const Complex & t)
    {
        return Complex(t.m_a * m, t.m_c * m);
    }
    complex0.h

    11_7_main.cpp


    #include <iostream>
    using namespace std;
    #include "complex0.h"
    
    int main()
    {
        Complex a(3.0, 4.0);
        Complex c;
        cout << "Enter a complex number (q to quit):
    ";
        while (cin >> c)
        {
            cout << "c is " << c << '
    ';
            cout << "complex conjugate is " << ~c << '
    ';
            cout << "a is " << a << '
    ';
            cout << "a + c is " << a + c << '
    ';
            cout << "a - c is " << a - c << '
    ';
            cout << "a * c is " << a * c << '
    ';
            cout << "2 * c is " << 2 * c << '
    ';
            cout << "Enter a complex number ( q to quit):
    ";
        }
        cout << "Done!
    ";
        return 0;
    }
    main.cpp
  • 相关阅读:
    springboot-6-整合jdbc
    springboot-4-整合fastjson
    Python决策树可视化:GraphViz's executables not found的解决方法
    pandas的行列显示不全的解决方法
    3(1).特征选择---过滤法(特征相关性分析)
    3(2).特征选择---包装法
    seaborn矩阵图组合图---热力图heatmap、聚类图clustermap
    3(3).特征选择---嵌入法(特征重要性评估)
    datetime,Timestamp和datetime64之间转换
    Spring配置文件总结
  • 原文地址:https://www.cnblogs.com/TadGuo/p/8590298.html
Copyright © 2011-2022 走看看