实验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;
}

期中

posted @ 2018-05-22 20:42  flyingbrid  阅读(91)  评论(0编辑  收藏  举报