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

    ex3

    • 代码补充如下
    #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
    	string ch,ch1;
    	// 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc)
    	cout<<"为likes添加元素,输入-1结束"<<endl; 
    	while(cin>>ch,ch!="-1")
    	{
    		likes.push_back(ch);
    	 } 
    	// 补足代码 
    	cout << "-----I like these-----" << endl;
    	// 调用子函数输出vector<string>数组对象likes的元素值 
    	output1(likes);
    	// 补足代码
    	// 为vector<string>数组对象dislikes添加元素值
    	cout<<"为dislikes添加元素,输入-1结束"<<endl;
    	while(cin>>ch1,ch1!="-1"){
    		dislikes.push_back(ch1);
    	} 
    	// 补足代码
    	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(auto e:v)
    	{
    		cout<<e<<endl;
    	}
    } 
    

    习题6-17

    • 源码
    #include<iostream>
    using namespace std;
    int main(){
    	int *p;//指针指向地址不明,应该赋初始地址 
    	*p=9;
    	cout<<"The value at p:"<<*p;
    	return 0;
    } 
    
    • 修改
    #include<iostream>
    using namespace std;
    int main(){
            int a;
    	int *p=&a;
    	*p=9;
    	cout<<"The value at p:"<<*p;
    	return 0;
    } 
    

    习题6-18

    • 源码
    #include<iostream>
    using namespace std;
    int fn1(){
    	int *p=new int(5);//分配的内存没有释放
    	return *p;
    } 
    int main()
    {
    	int a=fn1();
    	cout<<"The value of a is:"<<a;
    	return 0;
    } 
    
    • 修改
    #include<iostream>
    using namespace std;
    int* fn1(){
    	int *p=new int(5);
    	return p;
    } 
    int main()
    {
    	int *a=fn1();
    	cout<<"The value of a is:"<<*a;
    	delete a;
    	return 0;
    } 
    

    Matrix类

    • Matrix.h
    #ifndef MATRIX_H
    #define MATRIX_H
    class Matrix {
    public:
    	Matrix(int n); // 构造函数,构造一个n*n的矩阵 
    	Matrix(int n, int m); // 构造函数,构造一个n*m的矩阵 
    	Matrix(const Matrix &X); // 复制构造函数,使用已有的矩阵X构造 
    	~Matrix(); //析构函数 
    	void setMatrix(const float *pvalue); // 矩阵赋初值,用pvalue指向的内存块数据为矩阵赋值 
    	void printMatrix() const; // 显示矩阵
    	inline float &element(int i, int j)//返回矩阵第i行第j列元素的引用
    	{
    		float& num = p[(i - 1)*cols + j - 1];
    		return num;
    	}
    	inline float element(int i, int j) const// 返回矩阵第i行第j列元素的值 
    	{
    		return p[(i - 1)*cols + j - 1];
    	}
    	void setElement(int i, int j, int value); //设置矩阵第i行第j列元素值为value
    	inline int getLines() const //返回矩阵行数 
    	{
    		return lines;
    	}
    	inline int  getCols() const //返回矩阵列数
    	{
    		return cols;
    	}
    private:
    	int lines;    // 矩阵行数
    	int cols; 	 // 矩阵列数 
    	float *p;   // 指向存放矩阵数据的内存块的首地址 
    };
    #endif
    
    • Matrix.cpp
    #include "matrix.h"
    #include<iostream>
    #include<vector>
    using namespace std;
    Matrix::Matrix(int n):lines(n),cols(n)
    {
    	p = new float[lines*cols];
    }
    Matrix::Matrix(int n, int m) : lines(n), cols(m) {
    	p = new float[lines*cols];
    }
    Matrix::Matrix(const Matrix &X) {
    	lines = X.lines;
    	cols = X.cols;
    	p = new float[X.lines*X.cols];
    	for (int i = 0; i < (X.lines*X.cols);i++)
    	{
    		p[i] = X.p[i];
    	}
    }
    void Matrix::setMatrix(const float *pvalue) {
    	for (int i = 0; i < lines*cols; i++)
    	{
    		p[i] = pvalue[i];
    	}
    }
    void Matrix::printMatrix()const {
    	for (int i = 0; i < lines; i++)
    	{
    		for (int j = 0; j < cols; j++)
    		{
    			cout << p[i*cols + j]<<" ";
    		}
    		cout << endl;
    	}
    }
    void Matrix::setElement(int i, int j, int value) {
    	p[(i - 1)*cols + j - 1] = value;
    }
    Matrix::~Matrix()
    {
    	delete[] p;
    }
    
    • main.cpp
    #include<iostream>
    #include"matrix.h"
    using namespace std;
    int main()
    {
    	Matrix m1(5), m2(3, 4);
    	float num[12], num1[25];
    	for (int i = 0; i < 12; i++)
    	{
    		num[i] = i + 1;
    	}
    	for (int i = 0; i < 25; i++)
    	{
    		num1[i] = i + 1;
    	}
    	m1.setMatrix(num1);
    	m2.setMatrix(num);
    	cout << "矩阵m1为" << m1.getLines() << "行" << m1.getCols() << "列矩阵:"<<endl;
    	m1.printMatrix();
    	cout << "矩阵m2为" << m2.getLines() << "行" << m2.getCols() << "列矩阵:" << endl;
    	m2.printMatrix();
    	m1.setElement(1, 2, 10);
    	m1.setElement(3, 4, 20);
    	m2.setElement(2, 2, 22);
    	m2.setElement(3, 4, 19);
    	cout << "矩阵m1为" << m1.getLines() << "行" << m1.getCols() << "列矩阵:" << endl;
    	m1.printMatrix();
    	cout << "矩阵m2为" << m2.getLines() << "行" << m2.getCols() << "列矩阵:" << endl;
    	m2.printMatrix();
        return 0;
    }
    

    期中

  • 相关阅读:
    241. Different Ways to Add Parentheses java solutions
    89. Gray Code java solutions
    367. Valid Perfect Square java solutions
    46. Permutations java solutions
    116. Populating Next Right Pointers in Each Node java solutions
    153. Find Minimum in Rotated Sorted Array java solutions
    判断两颗树是否相同
    求二叉树叶子节点的个数
    求二叉树第k层的结点个数
    将二叉排序树转换成排序的双向链表
  • 原文地址:https://www.cnblogs.com/flyingbrid-nest/p/9062616.html
Copyright © 2011-2022 走看看