我为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;
}
答案 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;
}