您的位置:首页 > 其它

排序,对namespace深入理解,命令行参数

2017-09-04 12:41 120 查看
/*
项目名称:命令行参数添加判断,namespace区分2个排序
项目负责人:猴子
项目运行环境:VS2010
学习目标:排序,对namespace理解
关键字:::
如果将:
bool swap_one(int a,int b){}
当作参数传入:
bool (*p)(int ,int){}
在namespace中:
bool (*p)(int a,int b){}
在命令行参数需要在编译器软件里面添加,而不是传入。
*/
#include "stdafx.h"
#include <iostream>
#include <cstring>
using namespace std;
//bool swap_one(int a,int b){ //升序
//	if (a > b){
//		return true;
//	}
//	else{
//		return false;
//	}
//}
//bool swap_two(int a,int b){ //降序
//	if (a < b){
//		return true;
//	}
//	else{
//		return false;
//	}
//}
////冒泡算法
//void srot(int (&data)[10], bool (*px)(int , int )){
//	cout << "sizeof(data) " << sizeof(data) << " sizeof(data[0]) " << sizeof(data[0]) << endl;
//	//将函数当作参数传入,长度就用下面来表示
//	int len = sizeof(data)/sizeof(data[0]);
//	for (int i = 0; i < len; i++){
//		for (int j = 0; j < len-1; j++){
//			if (px(data[j],data[j+1] )){
//				int temp = data[j];
//				data[j] = data[j+1];
//				data[j+1] = temp;
//			}
//		}
//	}
//
//}
//输出数据
void show(int* date ,int len){
for (int i = 0;i < len;i++){
cout << date[i] << " ";
}
cout << endl;
}
//函数定义的时候要定义成函数指针
namespace hig{
bool swap_one(int a,int b){ //升序
if (a > b){
return true;
}
else{
return false;
}
}
void srot(int (&data)[10], bool(*px)(int a, int b)){
cout << "sizeof(data) " << sizeof(data) << " sizeof(data[0]) " << sizeof(data[0]) << endl;
//将函数当作参数传入,长度就用下面来表示
int len = sizeof(data)/sizeof(data[0]);
for (int i = 0; i < len; i++){
for (int j = 0; j < len-1; j++){
if (px(data[j],data[j+1] )){
int temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
}
};
namespace sho{
bool swap_one(int a,int b){ //降序
if (a < b){
return true;
}
else{
return false;
}
}
void srot(int (&data)[10], bool(*px)(int a, int b)){
cout << "sizeof(data) " << sizeof(data) << " sizeof(data[0]) " << sizeof(data[0]) << endl;
//将函数当作参数传入,长度就用下面来表示
int len = sizeof(data)/sizeof(data[0]);
for (int i = 0; i < len; i++){
for (int j = 0; j < len-1; j++){
if (px(data[j],data[j+1] )){
int temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
}

};

int _tmain(int argc, _TCHAR* argv[]){
for (int i = 0;i < argc; i++){
//输出命令参数行数据
cout << i << argv[i] << endl;
}
//用户输入
cin >> *argv;
//判断输入数据是否和命令参数行相同
//利用strcmp进行辅组比较
for (int i = 0;i < argc; i++){
if (strcmp(argv[i],"张飞")== 0 ||
strcmp(argv[i],"关羽")== 0 ||
strcmp(argv[i],"诸葛亮")== 0 ||
strcmp(argv[i],"吕布")== 0 ||
strcmp(argv[i],"鳌拜")== 0){
cout << "你确定你不是貂蝉?" << endl;
break;
}
else{
cout << "输入错误?" << endl;
break;
}
}
//数组初始化
int arr[10] = {1, 4, 6, 7, 17, 15, 71, 12, 65, 10};
//调用函数
//升序

hig::srot(arr, hig::swap_one);
show(arr, 10);
//降序
sho::srot(arr, sho::swap_one);
show(arr, 10);
getchar();
return 0;
}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: