c++简单程序设计-5
生活随笔
收集整理的這篇文章主要介紹了
c++简单程序设计-5
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
編程實驗部分
1.vector3.cpp
#include <iostream> #include <vector> #include <string> using namespace std;// 函數(shù)聲明 void output1(vector<string> &); void output2(vector<string> &); int main() {vector<string>likes, dislikes; // 創(chuàng)建vector<string>對象likes和dislikes likes.push_back("favorite book");// 為vector<string>數(shù)組對象likes添加元素值likes.push_back("music");likes.push_back("film");likes.push_back("anime");cout << "-----I like these-----" << endl;output1(likes);// 調(diào)用子函數(shù)輸出vector<string>數(shù)組對象likes的元素值 dislikes.push_back("sport");// 為vector<string>數(shù)組對象dislikes添加元素值 dislikes.push_back("sportsman");cout << "-----I dislike these-----" << endl;output1(dislikes);// 調(diào)用子函數(shù)輸出vector<string>數(shù)組對象dislikes的元素值 likes.swap(dislikes);// 交換vector<string>對象likes和dislikes的元素值
cout << "-----I likes these-----" << endl;output2(likes);// 調(diào)用子函數(shù)輸出vector<string>數(shù)組對象likes的元素值 cout << "-----I dislikes these-----" << endl;output2(dislikes);// 調(diào)用子函數(shù)輸出vector<string>數(shù)組對象dislikes的元素值 return 0; }// 函數(shù)實現(xiàn) // 以下標(biāo)方式輸出vector<string>數(shù)組對象v的元素值 void output1(vector<string> &v) {int i;for(i=0;i<v.size();i++){cout<<v[i]<<endl;} }// 函數(shù)實現(xiàn) // 以迭代器方式輸出vector<string>數(shù)組對象v的元素值 void output2(vector<string> &v) {int i;for(i=0;i<v.size();i++){cout<<v[i]<<endl;} }
1.vector3.cpp
#include <iostream> #include <vector> #include <string> using namespace std;// 函數(shù)聲明 void output1(vector<string> &); void output2(vector<string> &); int main() {vector<string>likes, dislikes; // 創(chuàng)建vector<string>對象likes和dislikes likes.push_back("favorite book");// 為vector<string>數(shù)組對象likes添加元素值likes.push_back("music");likes.push_back("film");likes.push_back("anime");cout << "-----I like these-----" << endl;output1(likes);// 調(diào)用子函數(shù)輸出vector<string>數(shù)組對象likes的元素值 dislikes.push_back("sport");// 為vector<string>數(shù)組對象dislikes添加元素值 dislikes.push_back("sportsman");cout << "-----I dislike these-----" << endl;output1(dislikes);// 調(diào)用子函數(shù)輸出vector<string>數(shù)組對象dislikes的元素值 likes.swap(dislikes);// 交換vector<string>對象likes和dislikes的元素值
cout << "-----I likes these-----" << endl;output2(likes);// 調(diào)用子函數(shù)輸出vector<string>數(shù)組對象likes的元素值 cout << "-----I dislikes these-----" << endl;output2(dislikes);// 調(diào)用子函數(shù)輸出vector<string>數(shù)組對象dislikes的元素值 return 0; }// 函數(shù)實現(xiàn) // 以下標(biāo)方式輸出vector<string>數(shù)組對象v的元素值 void output1(vector<string> &v) {int i;for(i=0;i<v.size();i++){cout<<v[i]<<endl;} }// 函數(shù)實現(xiàn) // 以迭代器方式輸出vector<string>數(shù)組對象v的元素值 void output2(vector<string> &v) {int i;for(i=0;i<v.size();i++){cout<<v[i]<<endl;} }
?
?2. 6-17的修改
#include<iostream> using namespace std;int main(){ //法1 int i=9; int *p;p=&i;cout<<"The value at p:"<<*p;return 0; }int main(){ //法2 int i=9; int *p=&i;cout<<"The value at p:"<<*p;return 0; }int main(){ //法3 int i; int *p=&i;*p=9;cout<<"The value at p:"<<*p;return 0; } //原題指針沒有初始化會隨機指向某處內(nèi)存,導(dǎo)致程序崩潰 //根據(jù)書上的模板寫了三種方法3. 6-18的修改
#include<iostream> using namespace std;int fnl(){int *p=new int(5);return *p;delete p; //原程序未用delete加以釋放,會導(dǎo)致內(nèi)存泄漏 }int main(){int a=fnl();cout<<"the value of a is:"<<a;return 0; }4.動態(tài)矩陣類Matrix
?
//matrix.h #ifndef MATRIX_H #define MATRIX_H class Matrix { public:Matrix(int n); // 構(gòu)造函數(shù),構(gòu)造一個n*n的矩陣 Matrix(int n, int m); // 構(gòu)造函數(shù),構(gòu)造一個n*m的矩陣 Matrix(const Matrix &X); // 復(fù)制構(gòu)造函數(shù),使用已有的矩陣X構(gòu)造 ~Matrix(); //析構(gòu)函數(shù) void setMatrix(const float *pvalue); // 矩陣賦初值,用pvalue指向的內(nèi)存塊數(shù)據(jù)為矩陣賦值 void printMatrix() const; // 顯示矩陣inline float &element(int i, int j) { return *(p + ((i - 1)*cols) + j - 1); }; //返回矩陣第i行第j列元素的引用inline float element(int i, int j) const ;// 返回矩陣第i行第j列元素的值 void setElement(int i, int j, int value) ; //設(shè)置矩陣第i行第j列元素值為valueinline int getLines() const { return lines; }; //返回矩陣行數(shù) inline int getCols() const { return cols; }; //返回矩陣列數(shù) private:int lines; // 矩陣行數(shù)int cols; // 矩陣列數(shù) float *p; // 指向存放矩陣數(shù)據(jù)的內(nèi)存塊的首地址 }; #endif?
//main.cpp #include "Matrix.h" #include<iostream> using namespace std; int main() {Matrix A(3);Matrix B(3, 2);Matrix C(B);const float a[9] = { 1,2,3,4,5,6,7,8,9 }, b[6] = { 10,20,30,40,50,60 };A.setMatrix(a);B.setMatrix(b);C.setMatrix(b);cout << "矩陣A為:" << endl;A.printMatrix();cout << "矩陣B為:" << endl;B.printMatrix();cout << "B的復(fù)制構(gòu)造函數(shù)矩陣C為:" << endl;C.printMatrix();float *x = &A.element(1, 1);cout << "矩陣A第1行第1列元素的引用:" << x<<endl;cout << "矩陣第1行第1列元素的值:" << A.element(1, 1) << endl;A.setElement(1, 1, 6);A.setElement(2, 1, 6);A.setElement(3, 1, 6);cout << "矩陣A的第1列全設(shè)為6:" << endl;A.printMatrix();cout << "A的行列分別為:" << A.getLines() << " " << A.getCols() << endl;cout << "B的行列分別為:" << B.getLines() << " " << B.getCols() << endl; } //matrix.cpp #include "Matrix.h" #include<iostream> using namespace std;Matrix::Matrix(int n) : lines(n) { // 構(gòu)造函數(shù),構(gòu)造一個n*n的矩陣cols = n;p = new float[lines*cols]; }Matrix::Matrix(int n,int m) : lines(n),cols(m) { // 構(gòu)造函數(shù),構(gòu)造一個n*m的矩陣p = new float[lines*cols]; }Matrix::Matrix(const Matrix &X): lines(X.lines),cols (X.cols){ //復(fù)制構(gòu)造函數(shù)的實現(xiàn)p = new float[lines*cols]; }Matrix::~Matrix() { //析構(gòu)函數(shù)delete[]p; }void Matrix::setMatrix(const float *pvalue) { // 矩陣賦初值,用pvalue指向的內(nèi)存塊數(shù)據(jù)為矩陣賦值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;} }inline float Matrix::element(int i, int j) const { // 返回矩陣第i行第j列元素的值 return *(p + ((i - 1)*cols) + j - 1); }void Matrix::setElement(int i, int j, int value) { //設(shè)置矩陣第i行第j列元素值為value*(p + ((i - 1)*cols) + j - 1) = value; }
?
期中考試:https://www.cnblogs.com/tensheep/p/9079345.html
實驗總結(jié)與體會:
書上有關(guān)vector模板的介紹還是太少了
我找了一些概括了vector模板的用法的CSDN博客
實驗是大概完成了,但迭代器方式的輸出還有些疑問
這次實驗最難寫的就是最后一題了
寫的過程中經(jīng)常遇見無法解析的外部符號的錯誤
我查了些資料,也看了看其他同學(xué)的博客
發(fā)現(xiàn)只要把matrix.cpp里的函數(shù)放進matrix.h里就行了
雖然我并不知道原因...
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/tensheep/p/9073851.html
總結(jié)
以上是生活随笔為你收集整理的c++简单程序设计-5的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3Dmax软件安装问题解决方法
- 下一篇: 更新一些CAD中比较容易混淆的概念