zoukankan      html  css  js  c++  java
  • 实验5

    首先,我想说这是自己做的最烂的一次实验了。。。

    发现自己对于new 语句还是不熟悉(要花点时间搞一下了)

    #include<iostream>
    using namespace std;
    int main()
    {
        int *p;
        *p=9;
        cout<<"The value at p"<<*p;
        return 0;
    }

    这里,虽然Devc是可以跑出来的,但是感觉是定义一个指针p的时候,就要让指针有指向,而不是直接对指针的内容赋值。

    #include<iostream>
    using namespace std;
    int fn1()
    {
        int *p=new int (5);
        return *p;
        delete p;
    }
    int main()
    {
        int a=fn1();
        cout<<"The value of a is:"<<a;
        return 0;
     }

    这里书上一开始是没有第{delete  p }的,个人感觉,申明了一个空间,之后好是能够回收了的好。

    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    
    // 函数声明 
    void output1(vector<string> &);  
    void output2(vector<string> &);  
    
    int main()
    {
        vector<string>likes, dislikes; // 创建vector<string>对象likes和dislikes
        
        // 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc) 
        string s1[8]={"favourite book","music","film","paintings","anime","sport","sportsman","etc"};
        for(int i=0; i<8 ; i++ )
        {
            likes.push_back(s1[i]);    
        }
        
        
        cout << "-----I like these-----" << endl;
        // 调用子函数输出vector<string>数组对象likes的元素值 
        // 补足代码
        // 。。。 
        output1(likes);
        
        // 为vector<string>数组对象dislikes添加元素值 
        // 补足代码 
        // 。。。 
        dislikes.push_back("daxigua");
        dislikes.push_back("wangzhe");
        dislikes.push_back("smg");   
        
        cout << "-----I dislike these-----" << endl;
        // 调用子函数输出vector<string>数组对象dislikes的元素值 
        // 补足代码
        // 。。。 
        output2(dislikes);
        
        // 交换vector<string>对象likes和dislikes的元素值 
        // 补足代码
        // 。。。 
        likes.swap(dislikes);                                                //************划重点************ 
    
        cout << "-----I likes these-----" << endl;
        // 调用子函数输出vector<string>数组对象likes的元素值 
        // 补足代码
        // 。。。 
        output1(likes);
        
        
        cout << "-----I dislikes these-----" << endl;
        // 调用子函数输出vector<string>数组对象dislikes的元素值 
        // 补足代码
        // 。。。 
        output2(dislikes);            
        return 0;
    }
    
    
    // 函数实现 
    // 以下标方式输出vector<string>数组对象v的元素值  
    void output1(vector<string> &v) {
        // 补足程序
        // 。。。 
        for(int i=0 ;i<v.size(); i++ )
        {
            cout<<v[i]<<endl;
        }
    }
    
    // 函数实现
    // 以迭代器方式输出vector<string>数组对象v的元素值 
    void output2(vector<string> &v) {
        // 补足程序
        // 。。。 
        for(int i=0 ; i<v.size();i++ )
        {
            cout<<v[i]<<endl;
        }
    }

    这里问题是对于vector数组交换数组内容的时候,如果不用swap的话,应该怎么交换,大小不一的数组直接按照一般数组去复制的话,很有问题。

    以下程序表示只能水水,用new int 和指针的话,真的是不会做,还要再研究研究,之后 还会把这条题目发出来的= =

    (由于本身就没有做对,我就没用项目的形式)

    #include<iostream>
    using namespace std;
    class Matrix {
        public:
            Matrix(int n); // 构造函数,构造一个n*n的矩阵 ****************************88ok
            Matrix(int n, int m); // 构造函数,构造一个n*m的矩阵 88888888888888OK
            Matrix(const Matrix &X); // 复制构造函数,使用已有的矩阵X构造 *****************ok
            ~Matrix(); //析构函数                         **********这里大概是要用到delete,但是只在构造函数里面new int 的话,其他函数不好用= = 
            void setMatrix(const float *pvalue); // 矩阵赋初值,用pvalue指向的内存块数据为矩阵赋值 
            void printMatrix() const; // 显示矩阵
            inline float &element(int i, int j); //返回矩阵第i行第j列元素的引用              *****???/ 
            inline float element(int i, int j) const;// 返回矩阵第i行第j列元素的值             *****没用数组,不会做 
            void setElement(int i, int j, int value); //设置矩阵第i行第j列元素值为value     
            inline int getLines() const; //返回矩阵行数 
            inline int  getCols() const; //返回矩阵列数 
        private:
            int lines;    // 矩阵行数
            int cols;      // 矩阵列数 
            float *p;   // 指向存放矩阵数据的内存块的首地址 
    };
    Matrix::~Matrix()
    {
    
    }
    Matrix::Matrix(int n)
    {
        lines=n;
        cols=n;
        int *a=new int[lines]();//如果再构造函数里面直接申明数组的话,对于其他成员函数调用就。。。。 
        int *b=new int [cols](); 
    } //一开始准备在这里构造的时候用数组弄一个矩阵,但是 int [lines][cols]不行,用int *p=int new *[lines][cols]也不行= = ,但是分别吧行列堪称两个数组就可以实现 
    Matrix::Matrix(int n,int m)
    {
        lines=n;
        cols=m;
        int *a=new int[lines]();
        int *b=new int [cols](); 
    }
    Matrix::Matrix(const Matrix &X)
    {
        lines=X.lines;
        cols=X.cols;
        
    }
    //Matrix::setMatrix(const float *pvalue)
    //{
        
    //}
    inline int Matrix::getCols() const
    {
        cout<<"矩阵的列为:"<<cols<<endl;
    }
    inline int Matrix::getLines() const
    {
        cout<<"矩阵的行为:"<<lines<<endl;
    }
    inline float Matrix::element(int i, int j) const
    {
        
    }
    void Matrix::setElement(int i, int j ,int value)
    {
        cout<<"将第"<<i<<""<<""<<j<<"列的元素改为"<<value<<endl;
        for(int a=0 ;a<lines ;a++ )
        {
            for(int b=0 ; b<cols ; b++ )
            {
                if(a==i-1&&b==j-1)
                cout<<value;
                else 
                cout<<"1";
            }
            cout<<endl;
         } 
    }
    void Matrix::printMatrix() const
    {
        for(int i=0; i<lines ;i++)
        {
            for(int j=0 ; j<cols ;j++ )
            {
                cout<<"1";
            }
            cout<<endl;
        }
    }
    int main()
    {
        Matrix A(5);
        A.printMatrix();
        A.getCols();
        A.getLines();
        A.setElement(2,2,6);
        return 0;
    }//代码问题,这里面的setElement只能对初始的矩阵进行设置元素,并不能继承改后的矩阵造成影响(这里应该是要深复制吧,但是没头绪,求请教) 
  • 相关阅读:
    Flex 和JavaScript 交互(带参)
    dos创建快捷方式
    IE的onunload事件里调用DWR
    使用VS2008开发OPC客户端程序
    实时库GEHistorian的一些问题记录
    SQL SERVER中,把一个表中的数据导入到另一个表中
    SQLSERVER 触发器
    SqlServer数据复制出现的问题与处理
    了解Log.Debug 或 log4net
    VS2008应用程序部署时将Framework3.5打包到安装包中
  • 原文地址:https://www.cnblogs.com/kakuiyjl/p/9079146.html
Copyright © 2011-2022 走看看