字符串位置乘以数组位置

时间:2019-10-02 18:24:00

标签: c++

我的代码出了点问题,我想将一个数字字符串与一个数字数组(相同长度)相乘,然后将乘积存储在变量product中,然后将每个列的乘积存储在我的字符串变量中(如一个新值)

string var1 = "1232253759";
int arr[] = {5,3,7,1,2,8,9,2,2,1};
for(int i = 0; i < var1.size(); i++)
{
  for(int n = 0; n < 10; n++)
  {
     int product = 0;
     product = var1[i] * arr[n];
     var1[i] = product;
   }
}

此结果的简短输出: 245
-33
-231
25
50
400
-1008
32

2 个答案:

答案 0 :(得分:1)

因此,如果我没有记错,这就是您想要的权利。 其中totalProduct将保存每个产品的产品,而arr2将保存您的列。我添加了resultAsString,所以结果为字符串

请注意var.at(i)-'0',它可以完成您想要的转换,或者我认为您正在寻找。

使用

从int转换为字符串im
std::stringstream ss;
      ss << product;

atoi(product)函数将是较少的C ++方法。或者如果使用c ++ 11 std:to_string(product) 希望对您有帮助

#include <iostream>
#include <string>
#include <sstream>



int main() {
  std::string var1 = "1232253759";
  int arr[] = {5,3,7,1,2,8,9,2,2,1};
  int arr2[var1.size()];
  int totalProduct = 0;
  std::string resultAsString = "";
  for(int i = 0; i < var1.size(); i++)
  {
    // for(int n = 0; n < 10; n++)
    // {

      int product = (var1.at(i)-'0') * arr[i];
      // std::cout << product << "\n";
      arr2[i] = product;
      std::stringstream ss;
      ss << product;
      resultAsString += ss.str();
      totalProduct += product;
     //}
  }
  // for (int i = var1.size() - 1; i >= 0; i--) 
  //   std::cout << arr2[i] << " ";
  std::cout << resultAsString;
}

答案 1 :(得分:0)

var1[i]char,而不是intchar隐式转换为int,计算出错。您需要将char用数字映射到数字本身(“ 1”-> 1,“ 2”-> 2)。为此,减去值“ 0”。即var1[i] - '0'是char的数字