在codeblocks 13.12上成功编译,但在ideone或spoj上编译错误

时间:2016-01-02 17:30:51

标签: c++ compiler-errors codeblocks

我为spoj.com

编写了代码

添加反向号码

  

我们必须输入两个反转的数字并添加,最后打印总和的反向。

我已经用字符串形式扫描了这两个数字,并多次使用atoi和itoa函数。

此代码适用于 Codeblocks 13.12 但在 ideone spoj(c ++ 5.3.2)上显示编译错误。

prog.cpp: In function 'int main()':

prog.cpp:38:25: error: 'itoa' was not declared in this scope
         itoa(sum,ssum,10);

此外,我无法找到使用哪个g++编译器代码块。 我也尝试添加stdlib.h但它也不起作用。

这是我在c ++中的代码

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

int main()
{
    int t,num1,num2,sum,ln1,ln2,lns,i,j;
    char snum1[100],snum2[100],ssum[100];
    char stemp;
    cin>>t; // scaning number of test cases
    while(t--)
    {
        cin>>snum1>>snum2; // scanning number 1 and number 2 as string
        ln1=strlen(snum1); //finding length of string of number 1
        ln2=strlen(snum2); // finding length of string of number 1
        for(i=0,j=ln1-1;i<ln1/2;i++,j--) // reversing the string of number 1
        {
           stemp=snum1[i];
            snum1[i]=snum1[j];
            snum1[j]=stemp;
        }
        for(i=0,j=ln2-1;i<ln2/2;i++,j--) // reversing string of number 2
        {
           stemp=snum2[i];
            snum2[i]=snum2[j];
            snum2[j]=stemp;
        }

        num1=atoi(snum1); //converting reversed string of number 1 to integer as num1
        num2=atoi(snum2); // converting reversed string of number 2 to integer as num 2

        sum=num1+num2; // finding sum

        itoa(sum,ssum,10); // converting sum(integer) t0 string
        lns=strlen(ssum); // finding length of string of sum
        for(i=0,j=lns-1;i<lns/2;i++,j--) // reversing the sum string
        {
           stemp=ssum[i];
            ssum[i]=ssum[j];
            ssum[j]=stemp;
        }
        sum=atoi(ssum); // finally converting the reversed sum string to integer
        cout<<sum<<endl; // final printing of result

    }
    return 0;

}

1 个答案:

答案 0 :(得分:0)

您的基本问题是itoa不是标准定义的功能 您需要使用

启动该文件
#include <iostream>   // Define cin and cout
#include <stdlib.h>   // Define atoi
#include <string>     // Define to_string and std::string

接下来,请记住伟大的诫命:不要重复自己。你反转一个字符串三次。你从cin读取一个字符串,将其反转,并转换为整数两次。

#include <iostream>   // Define cin and cout
#include <string>     // Define to_string and std::string, and stoi.

using namespace std;

static int reverse(string snum) // Reverse and convert to integer
{                               // NB.  Takes argument by VALUE.
    const auto len = snum.length();
    for(size_t i=0,j=len-1; i<j; i++,j--) // or use std::reverse.
    {
        const char stemp = snum[i];
        snum[i] = snum[j];
        snum[j] = stemp;
    }
    return stoi(snum);
}

static int read_reversed()
{
    std::string snum;
    cin>>snum;
    return reverse(snum);
}

int main()
{
    int t;
    cin>>t;// scaning number of test cases
    while(t--)
    {
        const int num1 = readreversed();
        const int num2 = readreversed();
        const int sum=num1+num2;

        string ssum = to_string(sum);

        cout << reverse(ssum) << endl; // Reverse string and print.
    }
    return 0;
}