即使条件为真,如果语句不起作用

时间:2019-06-05 08:55:41

标签: c++

This问题要求您将两个给定的字符串相乘。我知道逻辑,并且一直在执行。逻辑是遵循旧式乘法技术。在调试我的代码时,我陷入了一个非常奇怪的疑问,即即使条件为true, if语句也不会执行。

// Example program
#include <bits/stdc++.h>
using namespace std;

string multiply(string A, string B) {
    vector<string> s;

    for(int i=B.size()-1; i>=0; i--){
        int sum=0, carry=0;
        string ans="";
        for(int j=A.size()-1; j>=0; j--){

            int sum = (A[j]-'0')*(B[i]-'0')+carry;

            carry = sum/10;

            sum = sum%10;
            ans += (sum + '0');
        }
        if(carry>0){
            ans += (carry + '0');
        }
        reverse(ans.begin(), ans.end());
        s.push_back(ans);
    }


    int maxx = INT_MIN;

    /*Concatenating adequate amount of zeroes to different lines */

    for(int i=0; i<s.size(); i++){
        int j=i;
        //cout<<s[i]<<endl;
        while(j--){
            s[i]+="0";
        }
        //cout<<s[i]<<endl;
        //cout<<s[i].size()<<endl;

        if(maxx < s[i].size()){
            cout<<"True"<<endl;
            maxx=s[i].size();
        }
        else{
            cout<<"Not true"<<endl;
        }
    }
    /*for(int i=0; i<s.size(); i++){
        cout<<s[i]<<endl;
    }
    cout<<maxx<<endl;
    for(int i=0; i<s.size(); i++){
        int x=maxx-s[i].size();
        while(x--){
            s[i] = "0"+s[i];
        }
    }
    for(int i=0; i<s.size(); i++){
        cout<<s[i]<<endl;
    }*/
    return "No answer";
}
int main()
{
    string ans = multiply("1234","567");
    return 0;
}

我对此部分的 if陈述表示怀疑:

for(int i=0; i<s.size(); i++){
        int j=i;
        //cout<<s[i]<<endl;
        while(j--){
            s[i]+="0";
        }
        //cout<<s[i]<<endl;
        //cout<<s[i].size()<<endl;

        if(maxx < s[i].size()){
            cout<<"True"<<endl;
            maxx=s[i].size();
        }
        else{
            cout<<"Not true"<<endl;
        }
    }

我在if语句之前打印了 s [i] .size()值和 maxx 值。最初,s [i] .size()大于maxx。但是打印的输出仍然是 Not True 而不是 True

您可以将代码复制粘贴到计算机中进行调试。其完全有效的代码。

我已经坚持了很长时间。出于奇怪的原因,请提出该声明不起作用。 预先感谢!

0 个答案:

没有答案