目录
2.2
//2.2
#include<iostream>
#include<vector>
#include<limits.h>
#include<string>
using namespace std;
// p(n) = n(3n-1)/2
bool pentagonal_list(vector<int>& p1, int size) //传入vector数组的引用,在函数中直接对实参进行操作
{
if (size * (3 * size - 1) / 2 > INT_MAX)
{
cout << "overflow" << endl;
return false;
}
else
{
for (int i = 1; i <= size; i++)
{
p1[i - 1] = i * (3 * i - 1) / 2;
}
return true;
}
}
void print_list(vector<int> p1, string s1, int size)
{
cout << "数列的类型:" << s1 << endl;
for (int i = 0; i < size; i++)
{
cout << p1[i] << " ";
}
}
int main()
{
int size;
cout << "请输入数组的大小:";
cin >> size;
vector<int>v1(size);
//构造数列
pentagonal_list(v1, size);
//输出
print_list(v1, "Pentagonal", size);
system("pause");
return 0;
}
程序运行结果:
2.3
//2.3
#include<iostream>
#include<string>
#include<vector>
#include<limits.h>
using namespace std;
void print_list(vector<int> p1, string s1, int size)
{
cout << "数列的类型:" << s1 << endl;
for (int i = 0; i < size; i++)
{
cout << p1[i] << " ";
}
}
inline bool judge_list(int size)
{
if (size * (3 * size - 1) / 2 > INT_MAX)
{
return false;
}
return true;
}
bool pentagonal_list(vector<int>& p1, int size)
{
if (!judge_list(size))
{
cout << "overflow" << endl;
return false;
}
else
{
for (int i = 1; i <= size; i++)
{
p1[i - 1] = i * (3 * i - 1) / 2;
}
}
}
int main()
{
int size;
cout << "请输入数组的大小:";
cin >> size;
vector<int>v1(size);
//构造数列
pentagonal_list(v1, size);
//输出
print_list(v1, "Pentagonal", size);
system("pause");
return 0;
}
程序运行结果:
2.4
//2.4
#include<iostream>
#include<vector>
using namespace std;
const vector<int>* Pentagonal_list(int size)
{
int n = 5;
static vector<int>P1(n);
if (n < size)
{
P1.resize(size);
for (int i = 1; i <= size; i++)
{
P1[i - 1] = i * (3 * i - 1) / 2;
}
}
else
{
for (int i = 1; i <= n; i++)
{
P1[i - 1] = i * (3 * i - 1) / 2;
}
}
return &P1;
}
int locate_ele(const vector<int>* P1,int pos)
{
return (*P1)[pos];
}
int main()
{
int size;
cout << "输入数列的长度:";
cin >> size;
const vector<int>* V1 = Pentagonal_list(size);
int position;
cout << "输入一个位置:";
cin >> position;
cout << "数列中该位置对应的数为:" << locate_ele(V1, position-1);
system("pause");
return 0;
}
1.通过vector的内置函数 "resize()" 来完成vector数组的扩充
参考文章:(59条消息) C++容器------vector 的扩容函数使用篇_Misszhoudandan的博客-CSDN博客_c++ vector扩容机制
2.5
//2.5
#include<iostream>
#include<vector>
#include<string>
using namespace std;
void max(int a, int b)
{
int M = (a > b) ? a : b;
cout << M << "是最大数" << endl;
}
void max(double a, double b)
{
int M = (a > b) ? a : b;
cout << M << "是最大数" << endl;
}
void max(string a, string b)
{
string M = (a > b) ? a : b;
cout << M << "是ASCII码值最大的字符串" << endl;
}
void max(vector<int>v1)
{
int M = 0;
for (int i = 0; i < v1.size(); i++)
{
if (v1[i] > M)
{
M = v1[i];
}
}
cout << M << "是最大数" << endl;
}
void max(vector<double>v1)
{
double M = 0;
for (int i = 0; i < v1.size(); i++)
{
if (v1[i] > M)
{
M = v1[i];
}
}
cout << M << "是最大数" << endl;
}
void max(vector<char>v1)
{
char M = 0;
for (int i = 0; i < v1.size(); i++)
{
if (v1[i] > M)
{
M = v1[i];
}
}
cout << M << "是最大字符" << endl;
}
void max(int a[], int size)
{
int M = 0;
for (int i = 0; i < size; i++)
{
if (a[i] > M)
{
M = a[i];
}
}
cout << M << "是最大数" << endl;
}
void max(double a[], int size)
{
double M = 0;
for (int i = 0; i < size; i++)
{
if (a[i] > M)
{
M = a[i];
}
}
cout << M << "是最大数" << endl;
}
void max(char a[], int size)
{
char M = 0;
for (int i = 0; i < size; i++)
{
if (a[i] > M)
{
M = a[i];
}
}
cout << M << "是最大字符" << endl;
}
int main()
{
max(4, 10);
max(2.8, 7.1);
max("GodFishhhh", "AFish");
vector<int>v1(5);
v1[0] = 5;
v1[1] = 20;
v1[2] = 50;
v1[3] = 30;
v1[4] = 15;
max(v1);
vector<double>v2(5);
v2[0] = 5.6;
v2[1] = 20.9;
v2[2] = 50.1;
v2[3] = 30.4;
v2[4] = 15.8;
vector<char>v3(5);
v3[0] = 'a';
v3[1] = 'u';
v3[2] = 'p';
v3[3] = 'y';
v3[4] = 'z';
max(v2);
max(v3);
int a[5] = { 10,6,8,1,3 };
double b[5] = { 1.1,6.2,8.3,9.1,5.3 };
char c[5] = { 'c','d','u','o','p' };
max(a, 5);
max(b, 5);
max(c, 5);
system("pause");
return 0;
}
2.6
//2.6
#include<iostream>
#include<vector>
#include<string>
using namespace std;
//模板函数的重载
//两个参数
template<typename T1, typename T2>
void max(T1 a, T2 b)
{
T1 M = (a > b) ? a : b;
cout << M << "是最大数" << endl;
}
template<typename T4>
void max(T4 a[], int size)
{
T4 M = 0;
for (int i = 0; i < size; i++)
{
if (a[i] > M)
{
M = a[i];
}
}
cout << M << "是最大数" << endl;
}
//一个参数
template<typename T3>
void max(vector<T3> v1)
{
T3 M = 0;
for (int i = 0; i < v1.size(); i++)
{
if (v1[i] > M)
{
M = v1[i];
}
}
cout << M << "是最大数" << endl;
}
int main()
{
max(4, 10);
max(2.8, 7.1);
max("GodFishhhh", "AFish");
vector<int>v1(5);
v1[0] = 5;
v1[1] = 20;
v1[2] = 50;
v1[3] = 30;
v1[4] = 15;
max(v1);
vector<double>v2(5);
v2[0] = 5.6;
v2[1] = 20.9;
v2[2] = 50.1;
v2[3] = 30.4;
v2[4] = 15.8;
vector<char>v3(5);
v3[0] = 'a';
v3[1] = 'u';
v3[2] = 'p';
v3[3] = 'y';
v3[4] = 'z';
max(v2);
max(v3);
int a[5] = { 10,6,8,1,3 };
double b[5] = { 1.1,6.2,8.3,9.1,5.3 };
char c[5] = { 'c','d','u','o','p' };
max(a, 5);
max(b, 5);
max(c, 5);
system("pause");
return 0;
}