使用数组将所有其他数字相乘

时间:2018-03-25 06:58:48

标签: c++ string for-loop

所以我的问题更大但我不知道如何处理我的代码。我可以做我想要的,如果我使用数组工作得很好,但我们还没有使用数组,所以我不知道如何做到这一点。所以我必须把用户输入作为一个字符串验证字符串是16个字符长,所有这些都是数字,最重要的是我必须将每个其他或甚至字符乘以2.然后,如果它是一个两位数加上两个数字(例如10 1 + 0)。哦顺便说一下我不知道为什么但是每次我做的时候我都会得到奇数。是因为我没有签名吗?

for(unsigned i = 1; i < card.length(); i++){

    if (i % 2 == 1){


    }
    else {


    }
}
return sum;  

}

2 个答案:

答案 0 :(得分:0)

您可以使用一个字符串数组,其中每个字符串都包含一个数字。

通过他们检查2个条件:

        
  1. 如果是偶数(即i % 2 == 0
  2. ,则加倍     
  3. 如果数字有2位数字(即字符串的长度为2),则添加数字
  4. 代码:

    #include <iostream>
    #include <iterator> using namespace std;
    
    int TOTAL_CARDS = 16;
    
    void printCards(string msg, string *array) {
        cout<<msg<<endl;
        for(int i = 0; i < TOTAL_CARDS; i++) {
            cout<<"array["<<i<<"]="<<array[i]<<endl;
        }
        cout<<"\n"<<endl; }
    
    int main() {
        string cards[TOTAL_CARDS];
    
        // hardcoded numbers 0 up to TOTAL_CARDS for demo purposes
        for(int i = 0; i < TOTAL_CARDS; i++) {
            cards[i] = to_string(i);
        }
    
        printCards("Before:", cards);
    
        for (unsigned i = 1; i < TOTAL_CARDS; i++){
            // double if even
            if (i % 2 == 0){
                cards[i] = to_string(stoi(cards[i]) * 2);
            } 
    
            // add digits if double digit number
            if (cards[i].length() == 2) {
                // get each digit
                string currentNum = cards[i];
                int firstDigit = currentNum[0] - '0'; // char - '0' gives int
                int secondDigit = currentNum[1] - '0';
                // do sum and put in array
                int sum = firstDigit + secondDigit;
                cards[i] = to_string(sum);
            }
    
        }
    
        printCards("After:", cards); }
    

    输出:

    Before:
    array[0]=0
    array[1]=1
    array[2]=2
    array[3]=3
    array[4]=4
    array[5]=5
    array[6]=6
    array[7]=7
    array[8]=8
    array[9]=9
    array[10]=10
    array[11]=11
    array[12]=12
    array[13]=13
    array[14]=14
    array[15]=15
    
    
    After:
    array[0]=0
    array[1]=1
    array[2]=4
    array[3]=3
    array[4]=8
    array[5]=5
    array[6]=3
    array[7]=7
    array[8]=7
    array[9]=9
    array[10]=2
    array[11]=2
    array[12]=6
    array[13]=4
    array[14]=10
    array[15]=6
    

    如果您想获得数字的用户输入:

    // get user to enter numbers
    cout<<"Please enter "<<TOTAL_CARDS<<" numbers: "<<endl;
    for(int i = 0; i < TOTAL_CARDS; i++) {
        cin>>cards[i];
    }
    

答案 1 :(得分:0)

我找到了答案。我首先需要创建名为num的char变量。使用chnum将char转换为int,然后相乘。

   for(unsigned i = 0; i < card.length(); i++){

    if (i % 2 == 1){

        num = card.at(i);
        chnum = (num -'0');
        add = chnum * 2;

        if(add >= 10){

            char ho = (add + '0');
            string str(1,ho);

            for (unsigned j = 0; j < str.length();j++){

                char digi = str.at(j);
                int chub = (digi - '0');
                cout << digi;
                //add = (chub) + (chub);
            }


        }
        sum += add;
     }