实验5。。因为时间紧凑,我就直接放代码啦。。。就不多bb啦。。。
这是第一个实验,大概就是对vector的一个运用吧,这里有一个迭代器的新概念,总之不是很难理解
#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
likes.push_back("white night");
likes.push_back("心做し");
likes.push_back("have no");
likes.push_back("ai");
likes.push_back("basketball");
likes.push_back("Iverson");// 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc)
// 补足代码
// 。。。
cout << "-----I like these-----" << endl;
output1(likes);
output2(likes);
// 调用子函数输出vector<string>数组对象likes的元素值
// 补足代码
// 。。。
dislikes.push_back("homework");
dislikes.push_back("raining");
dislikes.push_back("defeat");
dislikes.push_back("being alone");// 为vector<string>数组对象dislikes添加元素值
// 补足代码
// 。。。
cout << "-----I dislike these-----" << endl;
output1(dislikes);
output2(dislikes);// 调用子函数输出vector<string>数组对象dislikes的元素值
// 补足代码
// 。。。
likes.swap(dislikes);
// 交换vector<string>对象likes和dislikes的元素值
// 补足代码
// 。。。
cout << "-----I likes these-----" << endl;
output1(likes);// 调用子函数输出vector<string>数组对象likes的元素值
// 补足代码
// 。。。
cout << "-----I dislikes these-----" << endl;
output1(dislikes);// 调用子函数输出vector<string>数组对象dislikes的元素值
// 补足代码
// 。。。
return 0;
}
// 函数实现
// 以下标方式输出vector<string>数组对象v的元素值
void output1(vector<string> &v) {
int l=v.size();
for(int i=0;i<l;i++)
cout<<v[i]<<endl;// 补足程序
// 。。。
}
// 函数实现
// 以迭代器方式输出vector<string>数组对象v的元素值
void output2(vector<string> &v) {
vector<string>::iterator i;
for(i=v.begin();i!=v.end();++i)
cout<<*i<<endl;// 补足程序
// 。。。
}
好的然后是两道书上的题目,这两题的难度不算大,完成如下
#include<iostream>
using namespace std;
int fn1()
{
int *p=new int(5);
int b=*p;
delete p; //错区在于未释放内存
return b;
}
int main()
{
int a=fn1();
cout<<"the value of a is :"<<a;
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int *p;
// *p=9;//错误在于指针没有分配空间,没有指向地址
p=new int (2);
*p=9 ;
cout<<"The value at p:"<<*p;
delete p;
return 0;
}
接下来是一道。。。。我觉得我做出来的但是系统一直出现“xxx”is used but never defined,这样子错误的一个题。。。emmmm到现在也没有解决,希望大佬们可以帮我看看错误在哪里
matrix.cpp:
#include"matrix.h"
#include<iostream>
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];
}
}
Matrix::~Matrix()
{
delete[]p;
}
void Matrix::setMatrix(const float *pvalue) {
for (int i = 0; i < lines*cols; i++)
{
p[i] = pvalue[i];
}
}
void Matrix::printMatrix()const
{
cout<<"the matrix is:"<<endl;
for (int i = 0; i < lines; i++)
{
for (int j = 0; j < cols; j++){
cout << p[i*cols + j]<<" ";
}
cout << endl;
}
}
inline float &Matrix::element(int i, int j)
{
return p[i*cols + j];
}
inline float Matrix::element(int i, int j) const
{
return p[i*cols + j];
}
void Matrix::setElement(int i, int j, int value)
{
p[i*cols + j] = value;
}
inline int Matrix::getLines() const
{
return lines;
}
inline int Matrix::getCols() const
{
return cols;
}
and main.cpp
#include<iostream>
#include<iomanip>
#include"matrix.h"
using namespace std;
int main() {
Matrix a1(4);
Matrix a2(3, 4);
float b1[16], b2[12];
for (int i = 1; i <= 16; i++)
b1[i-1] = (float)i / (float)10;
for (int i = 0; i < 12; i++)
b2[i] = (float)(12 - i) / (float)10;
float *p1 = b1;
float *p2 = b2;
a1.setMatrix(p1);
cout << "a1为" << a1.getLines() << "行" << a1.getCols() << "列的矩阵" << endl;
a1.printMatrix();
a2.setMatrix(p2);
cout << "a2为" << a2.getLines() << "行" << a2.getCols() << "列的矩阵" << endl;
a2.printMatrix();
Matrix a3(a1);
cout << "a3为" << a3.getLines() << "行" << a3.getCols() << "列的矩阵" << endl;
a3.printMatrix();
cout << "------------------" << endl;
a3.setElement(2, 1, 5);
a3.printMatrix();
cout << "改变的元素是" << a3.element(2, 1) << endl;
system("pause");
return 0;
}
因为种种原因(虽然我知道这不能成为借口),这次实验的完成度很低。。。。但是还是希望各位大佬可以不嫌弃我,为我稍微解答一下,靴靴!!