请将我的整数注释为字符串代码。 [英] Please comment on my integer to string code.

查看:55
本文介绍了请将我的整数注释为字符串代码。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我写了以下内容在其字符串中打印一个整数

表示基数为-36到36.

请评论此代码。


#include< iostream>

#include< string>


使用std :: abs;

使用std :: cout;

使用std :: endl;

使用std :: reverse;

使用std :: string;


char charTable [] =" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" ;;


void printBase(int i ,int base)

{

if((abs(base)< = 1)||(abs(base)> 36)||(i == 0))

{

cout<< " 0" <<结束;

返回;

}


string str ="" ;;

if ((base> 0)&&(i< 0))

{

str + =" - " ;;

i = -i;

}


do {

if(i%base> = 0)

{

str + = charTable [i%base];

i = i / base;

} else {

str + = charTable [i%base - base];

i = i / base + 1;

}

} while(i);

reverse(str.begin(),str.end());

cout<< str<<结束;

}


int main()

{

for(int i = - 55; i< = 55; i ++)

{

cout<< i<< " =" ;;

printBase(i,-10);

}

}


谢谢和问候,

manoj。

Hi All,
I wrote the following to print an integer in its string
representation for base -36 to 36.
Please comment on this code.

#include <iostream>
#include <string>

using std::abs;
using std::cout;
using std::endl;
using std::reverse;
using std::string;

char charTable[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

void printBase(int i, int base)
{
if ((abs(base) <= 1) || (abs(base) > 36) || (i == 0))
{
cout << "0" << endl;
return;
}

string str = "";
if ((base > 0) && (i < 0))
{
str += "-";
i = -i;
}

do {
if (i % base >= 0)
{
str += charTable[i % base];
i = i / base;
} else {
str += charTable[i % base - base];
i = i /base + 1;
}
} while(i);
reverse(str.begin(), str.end());
cout << str << endl;
}

int main()
{
for(int i = -55; i <= 55; i++)
{
cout << i << " = ";
printBase(i,-10);
}
}

Thanks and Regards,
manoj.

推荐答案

ma ******* @ gmail.com 写道:
大家好,
我写了以下内容来打印字符串中的整数
表示基数为-36到36.

[代码编辑]
Hi All,
I wrote the following to print an integer in its string
representation for base -36 to 36.

[code redacted]




如何显示数字a *负*基数?????



How do you display numbers in a *negative* base?????




red floyd写道:

red floyd wrote:
< a href =mailto:ma ******* @ gmail.com> ma ******* @ gmail.com 写道:
大家好,<我写了以下内容,在其字符串
表示中打印一个整数,表示基数为-36到36.

> [代码编辑]
Hi All,
I wrote the following to print an integer in its string
representation for base -36 to 36.

> [code redacted]



如何在*负*基数中显示数字?????



How do you display numbers in a *negative* base?????




考虑十字形。


27将是187


自187 = 1 * -10 * -10 + 8 * -10 + 7 = 27。 br />



Consider negadecimal.

27 will be 187

since 187 = 1 * -10 * -10 + 8 * -10 + 7 = 27.


ma ******* @ gmail。 com 写道:
ma*******@gmail.com wrote:
int main()
{
for(int i = -55; i< = 55; i ++)
{
cout<< i<< " =" ;;
printBase(i,-10);
}
}
int main()
{
for(int i = -55; i <= 55; i++)
{
cout << i << " = ";
printBase(i,-10);
}
}




单元测试是最重要的方面节目。你的printBase

应该返回一个字符串,所以你可以测试它,所以它不会结合。

其环境。在这里你有一些户外printBase,还有一些

里面。将所有内容移到外面,然后写下这样的单元测试:


断言(不管== printBase(-55);

断言(无论什么 ; == printBase(-55);

断言(" whatever" == printBase(-55);

断言(" whatever" == printBase( - 55);


现在每次更改程序时,运行那些测试。如果你确定

种错误(但没有任何错误)测试会抓住你,而且你可以使用Undo去除错误。撤消比

调试更有效。


-

Phlip
http:// www .greencheese.org / ZeekLand < - 不是博客!!!



Unit tests are the most important aspect of programming. Your printBase
should return a string, so you can test it, and so it won''t "couple" with
its environment. Here you have some cout outside printBase, and some
inside. Move all outside, then write unit tests like these:

assert("whatever" == printBase(-55);
assert("whatever" == printBase(-55);
assert("whatever" == printBase(-55);
assert("whatever" == printBase(-55);

Now each time you change the program, run those tests. If you make certain
kinds of mistakes (but not any mistake) the test will catch you, and you
can use Undo to get rid of the mistake. Undo is much more efficient than
debugging.

--
Phlip
http://www.greencheese.org/ZeekLand <-- NOT a blog!!!


这篇关于请将我的整数注释为字符串代码。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆