学习Essential C++的例子
来源:互联网 发布:鲷鱼烧机器 淘宝 编辑:程序博客网 时间:2024/05/17 17:18
#include <vector>
#include <string>
#include <iostream>
//#include <cstdlib>
using namespace std;
int main()
{
int elem_vals[18]={1,2,3,3,4,7,2,5,12,3,6,10,4,9,16,5,12,22};
vector<int> fibonacci(elem_vals,elem_vals+3);
vector<int> lucas(elem_vals+3,elem_vals+6);
vector<int> pell(elem_vals+6,elem_vals+9);
vector<int> trigangular(elem_vals+9,elem_vals+12);
vector<int> square(elem_vals+12,elem_vals+15);
vector<int> pentagonal(elem_vals+15,elem_vals+18);
vector<int> *seq_addr[6]={&fibonacci,&lucas,&pell,&trigangular,&square,&pentagonal};
srand(6);
int seq_index=rand()%6;
vector<int> *curvector=seq_addr[seq_index];
return 0;
}
//////////////////////////////////////////////////////////
#include <iostream>
#include <vector>
#include <conio.h>
#include <fstream>
using namespace std;
void display( vector<int>);
void swap( int&, int& );
void bubble_sort( vector<int>&,ofstream*);
int main()
{
int ia[8]={8,34,3,13,1,21,5,2};
vector<int> vec(ia,ia+8 );
ofstream ofil("data.txt");
cout<<"vector before sort:/t";
display( vec );
cout<<" vector after sorted:/t";
bubble_sort( vec ,&ofil);
display( vec );
getch();
return 0;
}
void display( vector<int> vec )
{
for (int ix=0;ix<vec.size();++ix )
cout<<vec[ix]<<' ';
cout<<endl;
}
void swap( int &val1, int &val2 )
{
int temp;
temp = val1;
val1 = val2;
val2 = temp;
}
void bubble_sort( vector<int> &vec,ofstream *ofil=0)
{
for (int ix=0;ix<vec.size();++ix)
for (int jx=ix+1;jx<vec.size();++jx)
if (vec[ix] > vec[jx])
{
*ofil<<"about to call swap ix="<<ix<<"jx="<<jx<<"/tswapping"
<<vec[ix]<<"with"<<vec[jx]<<endl;
swap( vec[ix], vec[jx]);
}
}
////////////////////////
#include <iostream>
#include <vector>
#include <conio.h>
#include <fstream>
using namespace std;
void display( vector<int> vec )
{
for (int ix=0;ix<vec.size();++ix )
cout<<vec[ix]<<' ';
cout<<endl;
}
void swap( int &val1, int &val2 )
{
int temp;
temp = val1;
val1 = val2;
val2 = temp;
}
void bubble_sort( vector<int> &vec,ostream &ofil=cout)
{
for (int ix=0;ix<vec.size();++ix)
for (int jx=ix+1;jx<vec.size();++jx)
if (vec[ix] > vec[jx])
{
ofil<<"about to call swap ix="<<ix<<"jx="<<jx<<"/tswapping"
<<vec[ix]<<"with"<<vec[jx]<<endl;
swap( vec[ix], vec[jx]);
}
}
int main()
{
int ia[8]={8,34,3,13,1,21,5,2};
vector<int> vec(ia,ia+8 );
ofstream ofil("data.txt");
cout<<"vector before sort:/t";
display( vec );
cout<<" vector after sorted:/t";
// bubble_sort( vec ); //使用默认值
bubble_sort( vec ,ofil); //使用默认值
display( vec );
getch();
return 0;
}
//////////////////////
#include <stdio.h>
int a[20]; file://定义一个数组,该数组的用来存放6个数列的数。
int i; file://定义全局变量 i;方便6个函数用做循环。
int w,e; file://定义全局变量 w e,用来记录做对的次数和做错的次数。
int l,k,j,h,q,f; file://定义全局变量l k j h q f,分别记录没个数列使用的次数。
main()
{ int a,b;
welcome(); file://欢迎界面。
system("cls"); file://清屏。
do
{srand((unsigned)time(NULL)); file://添加新的种子,以便rand()可以随机取出不同的值。
a=rand()%6; file://随机取得一个0--5之间的数。
switch(a) file://随机选择数列。
{
case 0:fib();break;
case 1:luc();break;
case 2:pel();break;
case 3:tri();break;
case 4:squ();break;
case 5:pen();break;
} gameover(); file://使游戏结束的提示。
} while(getch()!=' '); file://一但按下空格,就推出循环。
printf("Fibonacci的个数:%d/n",l); file://打印 Fibonacci的个数。
printf("Lucas的个数:%d/n",k); file://打印 Lucas的个数。
printf("Pell的个数:%d/n",j); file://打印 Pell的个数。
printf("Triangular的个数:%d/n",h); file://打印 Triangular的个数。
printf("Square的个数:%d/n",q); file://打印 Square的个数。
printf("Pentagonal的个数:%d/n",f); file://打印 Pentagonal的个数。
printf("一共做对的个数:%d/n",w); // 一共做对的个数。
getch();
}
int sj() file://此函数用来随机选取一个1到10的整数数。
{ int n1;
srand((unsigned)time(NULL));
n1=abs(rand()%10)+1;
return n1;
}
/* Fibonacci数列*/
/*首先给这个数列的第一个和第二个树加上特定的值,然后根据数列的算法把所有的值全部添加到数组a[]中*/
fib()
{ a[0]=1; a[1]=1; file://列的第一个和第二个数加上特定的值1。
for(i=0;i<20;i++)
{a[i+2]=a[i+1]+a[i]; } file://该数列的算法。
printf3(); l++; file://随机打印该数列的3个数,记录次数。
}
/* Lucas数列*/
/*首先给这个数列的第一个和第二个树加上特定的值,然后根据数列的算法把所有的值全部添加到数组a[]中*/
luc()
{ a[0]=1; a[1]=3; file://列的第一个和第二个数加上特定的值1和3。
for(i=0;i<20;i++)
{a[i+2]=a[i+1]+a[i]; } file://该数列的算法。
printf3(); k++; file://随机打印该数列的3个数, 记录次数。
}
/* Pell数列*/
/*首先给这个数列的第一个和第二个树加上特定的值,然后根据数列的算法把所有的值全部添加到数组a[]中*/
pel()
{
a[0]=1; a[1]=2; file://列的第一个和第二个数加上特定的值1和2。
for(i=1;i<20;i++)
{a[i+2]=2*a[i+1]+a[i]; } file://该数列的算法。
printf3();j++; file://随机打印该数列的3个数,记录次数。
}
/* Triangular数列*/
/*首先给这个数列的第一个和第二个树加上特定的值,然后根据数列的算法把所有的值全部添加到数组a[]中*/
tri()
{
a[0]=1; file://列的第一个数加上特定的值1。
for(i=0;i<20;i++)
{a[i+1]=a[i]+i+2; } file://该数列的算法。
printf3();h++; file://随机打印该数列的3个数,记录次数。
}
/* Square数列*/
/*首先给这个数列的第一个和第二个树加上特定的值,然后根据数列的算法把所有的值全部添加到数组a[]中*/
squ()
{
for(i=0;i<20;i++)
{a[i]=(i+1)*(i+1); } file://该数列的算法。
printf3();q++; file://随机打印该数列的3个数,记录次数。
}
/*Pentagonal数列*/
/*首先给这个数列的第一个和第二个树加上特定的值,然后根据数列的算法把所有的值全部添加到数组a[]中*/
pen()
{
for(i=0;i<20;i++)
{a[i]=((i+1)*(3*i+2))/2; } file://该数列的算法。
printf3();f++; file://随机打印该数列的3个数,记录次数。
}
printf3() file://随机打印函数
{
int b,c;
b=sj(); file://随机取得的数。
printf("欢迎使用猜数字游戏/n");
printf("%d %d %d 答案:%d/n",*(a+b),*(a+(b+1)),*(a+(b+2)),*(a+(b+3)));
printf("请您输出第4个数!谢谢/n");
scanf("%d",&c); file://判断游戏者是否做对游戏。
if(c==*(a+(b+3))) file://如果做对就记录下次数
{printf("恭喜您答对了/n"); w++;}
else file://否则 记录错的次数。
{printf("好笨哦!/n");e++;}
getch();
system("cls");
}
welcome() file://欢迎界面
{
printf("欢迎进入猜数字游戏/n");
printf("本游戏规则如下:/n");
printf("在游戏开始后,系统将自动输出3个数字/n");
printf("请您根据这3个数的运算规则输入第4个数,/n");
printf("在每次游戏结束后可按空格退出。/n");
printf("按任意键进入游戏/n");
getch();
}
gameover() file://提示。
{
printf("退出请按空格,继续请按其他键/n");
}
///////////////////////////////////////////////////////////////////
/*将pentagonal求值函数分为两个,其中之一为inline,用来检验合法性,合理且未被计算过,便调用第二个函数,执行求值工作*/
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void pentagonal_num(vector<int> &vec, int pos);
void display(const vector<int> &vec);
inline bool is_size_ok(vector<int> &vec,int size);
void main()
{
vector<int> pent;
if (is_size_ok(pent,0))
display(pent);
if (is_size_ok(pent,6))
display(pent);
if (is_size_ok(pent,18))
display(pent);
if (is_size_ok(pent,72))
display(pent);
}
bool is_size_ok(vector<int> &vec, int size)
{
const int max_size=64;
if (size<=0||size>max_size)
{
cout<<"requested size is not supported:"<<size<<endl;
return false;
}
if (vec.size()<size)
pentagonal_num(vec, size);
return true;
}
void pentagonal_num(vector<int> &vec, int pos)
{
for (int ix=vec.size()+1; ix<=pos; ++ix)
{vec.push_back((ix * (3*ix-1))/2);}
}
void display(const vector<int> &vec)
{
for (int ix=0; ix<vec.size(); ++ix)
cout<<vec[ix]<<' ';
cout<<endl;
}
/////////////////////////////////////////////////////////
#pragma warning (disable:4786)
#include <iostream>
#include <vector>
#include <string>
using namespace std;
template <typename elemtype>
inline elemtype* beginme(vector<elemtype> &vec)
{
return vec.empty() ? 0 : &vec[0] ;
}
template <typename elemtype>
inline elemtype* endme(vector<elemtype> &vec)
{
return vec.empty() ? 0 : &vec[vec.size()] ;
}
template <typename elemtype>
elemtype *find( elemtype *first, elemtype *last, elemtype &value )
{
if( ! first || ! last )
return 0;
for( ; first != last; first++ )
if( *first == value )
return first;
return 0;
}
int main()
{
int ia[8] = { 1,1,2,3,4,5,13,21 };
vector<int>veci( ia,ia+8 );
double da[6] = { 1.5,2.0,2.5,3.0,3.5,4.0 };
vector<double> vecd( da,da+6 );
string sa[4] = { "pooh","piglet","eeyore","tigger" };
vector<string> vecs( sa,sa+4 );
int *pi = find( beginme(veci),endme(veci),veci[3] );
double *pd = find( beginme(vecd),endme(vecd),vecd[3] );
string *ps = find( beginme(vecs),endme(vecs),vecs[3] );
cout << "The int element is : " << *pi << '/n'
<< "The double element is : " << *pd << '/n'
<< "The string element is : " << *ps << '/n' ;
return 0;
}
- 学习Essential C++的例子
- c++学习笔记(essential c++)
- Essential C++ 1.5节例子
- 快速阅读《Essential C++》
- Essential C++
- 重读《Essential C++》心得
- 垃圾《Essential C++》
- 《Essential C++》笔记1
- 读《essential c++》有感
- 《Essential C++》 基础知识
- 《Essential C++》碎片
- 《Essential C++》随笔一
- <Essential C++> Learning
- 《Essential C++》读书笔记
- 《Essential C++》笔记二、面向过程的编程风格
- 《Essential C++》笔记四、采用关键字inline带来的错误
- 《Essential C++》笔记五、基于对象的编程风格
- Essential C++学习笔记
- Char 和 Varchar 比较(转)
- 爱情
- DDK的版本
- 三大报再呼救市:A股估值到了崩溃边缘
- 各种 lightbox 实现
- 学习Essential C++的例子
- 网站信息查询工具精选
- 详细解说STL string
- 在windows下调试linux内核
- J2EE全面简介
- 计算程序时间的方法
- [转]写给为爱徘徊的年轻人
- CreateThread()、_beginthread()以及_beginthreadex()联系与区别
- 到潘家园配了副眼镜~~~嘿嘿