实验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只能对初始的矩阵进行设置元素,并不能继承改后的矩阵造成影响(这里应该是要深复制吧,但是没头绪,求请教) 
原文地址:https://www.cnblogs.com/kakuiyjl/p/9079146.html