c++ - 使用数组元素执行计算

标签 c++ arrays hash

我正在尝试创建一个散列函数。该算法要求我获取字符串的每个字母并将其转换为 ASCII;根据它在字符串中的位置将它乘以一个数字(例如输入是 STACK;'S' 的 ASCII 为 344,将该值乘以 9^9 然后'T'的 ASCII 为 347 将该值乘以 8^ 8..等);然后将这些值加在一起。

我了解如何访问数组中的值以创建总和并将它们转换为 ASCII。我不明白我将如何访问数组以执行中间的计算。

当我构建程序时,我也收到“断言失败错误”。我查找了错误,它说它与错误的调用有关,但是我在我的代码中看不到任何错误的调用。

我的代码如下:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string input ;
    int finalanswer = 0;

    cout << "Enter your first name please : " ;

    cin >> input;

    cout << "Your name is " << input ;

    for (int x=0; x=input.size(); x++)
    {   
        finalanswer += input[x];

        cout << finalanswer ;
    }

    cin.get();
    return 0;
}

最佳答案

for循环中的条件不对,应该是

for(int x=0; x < input.size(); x++)

使用您的代码,第二次执行循环体 xinput.size() 并且它太大而无法访问 input[ x] - 导致您看到的错误。


我不确定我是否 100% 理解预期的算法,但这可能会有所帮助:

int myPow(int x, int p)
{
  if (p == 0) return 1;
  if (p == 1) return x;
  return x * myPow(x, p-1);
}

然后循环:

for(int x=0; x < input.size(); x++)
{
    finalanswer += input[x] * myPow(9-x);

    cout << finalanswer ;
}

关于c++ - 使用数组元素执行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15712558/

相关文章:

c++ - 尝试在 iPhone 应用程序中使用 C++

c++ - 目前在 Ubuntu C/C++ 中如何将 IANA 时区名称转换为 UTC 偏移量

java - Java 中的异常规范有什么好处?

c - 段错误和引用结构数组

c++ - 我应该缓存用作哈希键的 STL 字符串的哈希码吗?

arrays - 根据多个键的比较合并两个哈希数组

c++ - 为什么我的字符串长度打印为零?

c++ - 在 c++/c 中用变量定义数组的长度

c# - 如何将这个序列转换成这个散列?

arrays - Swift-在不同的类中使用数组