2014-03-04 36 views
-1

我有一个包含小写字母的元素数量未知的字母数组。我写了一个将小写字母转换为其ASCII值的函数如何将此函数转换为循环?

int returnVal (char x) 
{ 
    return (int) x; 
} 

我想将所有这些值组合成一个数字。从这些中减去87意味着该值总是2位数字。我能够通过向如果两个元件组成的阵列结合:

returnVal (foo[0]) - 87) + returnVal (foo[1] - 87) * 100 

阵列由

returnVal (foo[0]) - 87) + returnVal (foo[1] -87) * 100 + returnVal (foo[2] - 87) * 100 * 100 

我每个元素由100 ^其位置阵列中的乘法和由三个元件的总结它们。这意味着[a,b,c]将变成121110(是的,'flip'首先具有'c'值,'a'last是有意的)。任何人都可以编程(对于数量未知的元素数组)吗?

编辑:我没有收到编程/计算机科学的任何形式的学校在我生命中的任何点,这不是作业。我想教自己,我陷入困境;我不知道谁能亲自前来寻求帮助,所以我在这里问道,向那些被冒犯的人道歉。编辑2:我知道这个观点会让很多人恼火,如果不是交换信息,stackoverflow.com的目的是什么?如果我是一个被我家庭作业困扰的孩子(我不是),那肯定是使用堆栈溢出的合理原因?本网站上的许多人似乎都有这样的心态:如果初学者问一个问题,那么就不值得回答,这是完全正确的,因为你的时间是你自己的。然而,真正让我感到困惑的是那些看到他们认为微不足道的问题并且说出“家庭作业”并立即投票的人。我认为,如果没有提出问题所需的“最低水平”知识,那么这个网站会好得多,我认为“精英主义”思维只是幼稚的。

+2

两个尼特来挑。首先,为什么有一个简单地演员演员的功能?为什么不内联演员阵容?其次,什么是“小写字母”?如果你提供了更多的样本输入和输出,以及对问题更加清楚的描述,这也可能有所帮助。看起来您正在执行ASCII操作:您是否试图总结字母表开头的偏移量?结果是否应该是十进制数字? – 2014-03-04 17:19:25

+0

大多数情况下元素数量未知的数组会导致灾难。另外,SO不用于做作业。自行提供一些代码,然后我们可以提供一些帮助。 – zoska

+0

什么是“小写字母”?你写的函数不会将字符转换为整数 - 它只会将字符转换为整数。 –

回答

0
char array[SIZE]; 
long factor=1; 
long result=0; 
for(int i=0; i<SIZE; i++) 
{ 
    result+=returnVal(foo[i])-87)*factor; 
    factor*=100; 
} 

这应该工作,只要long是大到足以容纳的100^the position的价值,当然,只要结果不溢出。

+0

谢谢,但它说“[SIZE]没有在此范围内声明” – MichaelRad

+0

SIZE是数组的长度,大概是早些时候定义的或已知的任何其他方式。如果你使用'std :: vector',你可以用你的数组以某种方式初始化它(例如通过'vector :: push_back(x)'添加数组元素并使用'for(unsigned i = 0; i anderas

1

由于这是一个学习的过程,这里有一些提示,让你自己完成的任务:

  • 准备一个值,该值将服务器作为“运行总计”你的电话号码为止。
  • 将运行总数设置为零。
  • 当转换一个数字,比如说,"1234",到int,该值将首先成为1,然后12,然后123,最后1234
  • 运行总的终值是您的最终结果
  • 从前一个值到下一个值,将先前值乘以10,并将当前数字的值加上它
  • 您的returnVal没有意义,因为在C中,您可以经常避免显式转换charint。在这种情况下,你绝对可以避免它。
  • 制作一个函数int digit(char c),它返回一个十进制数字的值,即c-'a',会更有用,因为它可以让你在多个位置摆脱你的c-87