首页 > 解决方案 > 在 C++ 中使用字符串时在线编译器出现运行时错误

问题描述

我正在尝试在在线编译器上运行此代码,它在本地完美运行时显示运行时错误。未使用的代码部分已被注释掉。

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main() {
    // your code goes here
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    int t;
    cin>>t;
    while(t--)
    {
        string s;
        cin>>s;

        int x,y;
        cin>>x>>y;
        string ans;
        int noOfApple=0,noOfBanana=0;
        for(int i=0;i<s.size();i++)
        {
            if(s[i]=='a')
            {
                noOfApple++;
            }
            else
            {
                noOfBanana++;
            }
        }
        int noOfABlock=ceil(noOfApple/x);
        //int noOfBBlock=ceil(noOfBanana/y);
        int length=floor(noOfBanana/(noOfABlock-1));
        int remainderB=noOfBanana%(noOfABlock-1);
        int counter=0;
        //condition for '*'

        if(noOfBanana<(noOfABlock-1))
        {
            int q=noOfBanana;
            for(int i=0;i<(noOfABlock-1);i++)
            {
                for(int j=0;j<x;j++)
                {
                    ans[counter++]='a';
                }
                if(q>0)
                {
                    ans[counter++]='b';
                    q--;
                }
                else
                {
                    ans[counter++]='*';
                }
            }
            for(int i=0;i<x;i++)
        {
            ans[counter++]='a';
        }

        }
        else{
        for(int i =0;i<(noOfABlock-1);i++)
        {
            for(int j=0;j<x;j++)
            {
                ans[counter++]='a';
            }
            for(int j=0;j<length;j++)
            {
                ans[counter++]='b';
            }
            while(remainderB>0)
            {
                remainderB--;
                ans[counter++]='b';
            }
        }
        for(int i=0;i<x;i++)
        {
            ans[counter++]='a';
        }
        }


        cout<<ans<<endl;

    }
    return 0;
}

该程序的输入:-

6
ab
1 1
aab
1 1
aabb
1 2
aaaaab
2 1
aaaa
1 3
aaaaa
2 2

当使用数组时,我们必须初始化数组的大小,因为它们是静态的,但由于字符串是动态的,我们不需要使用大小进行初始化。

标签: c++runtime-errorc++14

解决方案


推荐阅读