递归 将一个十进制数转化为任意进制字符串

Create All kinds of guns.

设计重点:

1 基类作接口

2 继承类是各种不同的类

3 构建工厂类,然后根据需要创造不同的类,可以传入关键字,或者索引等。

#pragma once
#include <string>
#include <iostream>

using namespace std;

//Base class
class Gun
{
public:
	virtual string description()
	{
		return "Generic Gun";
	}
};

//Derived class
class MachineGun :public Gun
{
public:
	string description()
	{
		return "MachineGun - Gun for fast shoot";
	}
};

class LaserGun : public Gun
{
public:
	string description()
	{
		return "LaserGun - Melt everything with heat";
	}
};

class ShockwaveGun :public Gun
{
public:
	string description()
	{
		return "ShockwaveGun - shock down everything";
	}
};

class GofFactory_Gun
{
public:
	GofFactory_Gun()
	{
	}

	Gun *createGun(const string &type)
	{
		if ("MachineGun" == type)
		{
			return (new MachineGun);
		}
		else if ("LaserGun" == type)
		{
			return (new LaserGun);
		}
		else if ("ShockwaveGun" == type)
		{
			return (new ShockwaveGun);
		}
		else
		{
			return NULL;
		}
	}
};

void GofFactory_Gun_Run()
{
	GofFactory_Gun gofGun;

	Gun *g = gofGun.createGun("MachineGun");
	cout<<g->description()<<endl;

	delete g;
	g = gofGun.createGun("LaserGun");
	cout<<g->description()<<endl;

	delete g;
	g = gofGun.createGun("ShockwaveGun");
	cout<<g->description()<<endl;

	delete g;
}

结果:

递归 将一个十进制数转化为任意进制字符串,布布扣,bubuko.com

时间: 2024-10-24 08:42:40

递归 将一个十进制数转化为任意进制字符串的相关文章

C语言-对字符串二维数组各个元素进行比较-十进制数转化为其他进制数-进行规则矩阵的输出-190225

//编写一个函数:从传入的num个字符中找到最长的一个字符,并通过max传回该串地址. //重点:切记这里a[0]就是一个地址. 1 #include<conio.h> 2 #include<stdio.h> 3 #include<string.h> 4 #include<stdlib.h> 5 6 char *fun(char (*a)[81], int num, char *max) 7 { 8 max = a[0];//切记这里a[0]就是一个地址.

将一个十进制数转化为16进制数

1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int main() 5 { 6 int ival; 7 8 char result[8] = ""; 9 char array[17] = "0123456789ABCDEF"; 10 int index = -1; 11 printf("input the value:\n"); 12 scanf_s("%d"

C++实现将十进制数转换为小于等于九的任意进制

//十进制转换为小于等于九的任意进制数 #include<iostream> #include<string> #include<stack> using namespace std; stack<int> num; void change(int N,int M) { if(N<0||M<=1) { cout<<"error!"<<endl; return; } while(N>0) { num

【模板小程序】任意长度十进制数转化为二进制(java实现)

妈妈再也不用担心十进制数过大了233 import com.google.common.base.Strings; import java.math.BigInteger; import java.util.Scanner; /** * 任意长度十进制数转化为二进制 */ public class AnyNumberConverterFromDecimalToBinary { /** * * @param srcNum 待转换的十进制数 * @return 二进制字符串 */ private s

十进制转任意进制数

//十进制转任意进制 #include <iostream> #include <stack> using namespace std; int main() { int T; int n, a, p; cin >> T; while (T--) { stack<int> s; //n 为十进制,p为要转换的进制 cin >> n >> p; while (n) { a = n % p; s.push(a); n /= p; } wh

NOJ 1012 进制转换(十进制转换成任意进制)

题目: 进制转换 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte总提交 : 1819            测试通过 : 525  题目描述 将一个十进制数N转换成R进制数输出,2≤R≤16,R≠10. 输入 多行.第一行指出以下一共有多少组数据,后续每行包含两个整数N和R,以空格分隔,-100000≤N≤100000,2≤R≤16,R≠10. 输出 多行.每行给出转换后的R进制数. 样例输入 37 223 12-4 

c++描述将一个2进制数转化成10进制数(用到初始化栈,进栈,入栈)

1 /* 2 c++描述将2进制数转化成10进制数 3 问题,1.初始化栈后,用new,不知道delete是否要再写一个函数释放内存, 4 还是在哪里可以加上delete 5 2.如果栈满了,我要分配多点空间,我想的办法是先用delete删除之前申请的 6 空间,再用new重新申请,但是c语言有一个函数 7 s->base =(ElemType*) realloc(s->base,(s->stackSize + STACKINCREMENT) * sizeof(ElemType));//

python 十进制转换成任意进制

记得大学时代,参加学校举行的编程大赛,其中有道题是: 编写一函数,实现十进制转换成十六进制. 看起来非常简单的一道题,最后竟然没有实现,想想都觉得惭愧啊,回去网上一搜,那是相当的easy的事情:时隔五六年了,工作中一直是用java,最近学习python,所以突然想到这个问题,就用python来实现这道题.下面使用两种方法分别实现: 一.循环 def decimalToNBaseByNormal(decimalVar, base): tempList = [] temp = decimalVar

将一个十进制数转为二进制形式并判断它是否是2的n次幂

java提供了十进制转化为二进制.十六进制.八进制的函数:在java.lang.Integer这个API包中,转换函数如下 public static String toBinaryString(int i) public static String toHexString(int i) public static String toOctalString(int i) 这3个函数都可以将十进制的整数转换成二.一六.八进制数,不过转换后的结果都是字符串的形式. 在这里介绍下转换为二进制的情况.