第五次实验

Posted 20178303034nb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五次实验相关的知识,希望对你有一定的参考价值。

1.
#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("favorite book"); likes.push_back("music"); likes.push_back("film"); likes.push_back("paintings"); // 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc) v.push_back("favorite book") likes.push_back("anime"); likes.push_back("sport");// 补足代码 // 。。。 cout << "-----I like these-----" << endl; output1(likes);// 调用子函数输出vector<string>数组对象likes的元素值 // 补足代码 // 。。。 dislikes.push_back("diklieks books"); dislikes.push_back("diklieks music"); dislikes.push_back("diklieks film"); // 为vector<string>数组对象dislikes添加元素值 // 补足代码 // 。。。 cout << "-----I dislike these-----" << endl; output1(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) { for(int i=0;i<v.size();i++){ cout<<v[i]<<" "; cout<<endl; } // 补足程序 // 。。。 } // 函数实现 // 以迭代器方式输出vector<string>数组对象v的元素值 void output2(vector<string> &v) { vector<string>::iterator i; for(i=v.begin();i!=v.end();i++) { cout<<*i<<" "; } cout<<endl; // 补足程序 // 。。。 }

技术分享图片

2.1.正确的解法:

#include<iostream>
using namespace std;
int main(){
int a;
int *p=&a;
a=9;
cout<<"the value at p :"<<*p;
return 0;
}技术分享图片

错的地方在于,*p是一个指针,还没有地址不能给他赋值。

2.正确的解法:

技术分享图片

这个题的错误之处在于,new后应有delete如果不加则会导致内存泄漏。

3.

3,#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){return *(p+i*cols+j);} //返回矩阵第i行第j列元素的引用
  inline float element(int i, int j) const{return *(p+i*cols+j);}// 返回矩阵第i行第j列元素的值 
  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

#include"matrix.h"
#include<iostream>
using namespace std;
 Matrix::Matrix(int n):lines(n),cols(n){} 
 Matrix::Matrix(int n, int m):lines(n),cols(m){} 
 Matrix::~Matrix(){
 }
 Matrix::Matrix(const Matrix &X){
  lines=X.lines;
  cols=X.cols;
  p=X.p;
 }
  void Matrix::setMatrix(const float *pvalue){
  p=(float*)pvalue;
 } 
 void Matrix::printMatrix() const{
  for(int i=0;i<lines;i++){ 
   for(int j=0;j<cols;j++)
     cout<<element(i,j)<<" ";
     cout<<endl;} 
 }

 void Matrix::setElement(int i, int j, int value){
  p[i*lines+j]=value;
 }

 

#include"matrix.h"
#include<iostream>
using namespace std;
int main ()
{
 Matrix a(3);
 Matrix b(2,3);
 float e[]={1,2,3,4,5,6,7,8,9};
 float *d=e;
 a.setMatrix(d);
 Matrix c(a);
 a.printMatrix();
 c.printMatrix();
 cout<<a.element(2,2)<<endl;
 a.setElement(2,2,1);
 cout<<a.element(2,2)<<endl;
 cout<<c.getLines()<<c.getCols()<<endl;
 return 0;
}

技术分享图片

反思:这次作业感觉比较难,花费了大量时间还是有跟多地方不会做。










以上是关于第五次实验的主要内容,如果未能解决你的问题,请参考以下文章

第五次实验

20165210 Java第五次实验报告

《Java程序设计》第五次实验实验报告

第五次作业

第五次实验(数组实验)

JLU数据结构荣誉课第五次上机实验