C++ c++;从整数中删除数字
因此,我必须编写一个程序,读取两个整数,并确定从第一个整数中删除任何数字后,新的整数是否等于第二个读取的整数(例如,如果输入为123和12,则应打印“是”,因为在去掉3之后,两个整数相等)。我认为我写的代码是正确的,但是程序没有打印任何东西。代码如下:C++ c++;从整数中删除数字,c++,loops,printing,int,C++,Loops,Printing,Int,因此,我必须编写一个程序,读取两个整数,并确定从第一个整数中删除任何数字后,新的整数是否等于第二个读取的整数(例如,如果输入为123和12,则应打印“是”,因为在去掉3之后,两个整数相等)。我认为我写的代码是正确的,但是程序没有打印任何东西。代码如下: #include <iostream> using namespace std; int main() { unsigned int a, b, temp, len = 0; cin >> a >&
#include <iostream>
using namespace std;
int main()
{
unsigned int a, b, temp, len = 0;
cin >> a >> b;
temp = a;
while(temp!=0)
{
temp = temp/10;
len++;
}
int k = 1, m = 0, p = 1;
while (k>len || m == b)
{
for (int i = 1; i<=len-k; i++)
p = p*10;
m = a/(p*10)*p + a%p;
if (m == b)
cout << "Yes" << endl;
if (k == len && m!=b)
cout << "No" << endl;
k++;
}
system ("pause");
return 0;
}
#包括
使用名称空间std;
int main()
{
无符号整数a,b,temp,len=0;
cin>>a>>b;
温度=a;
while(温度!=0)
{
温度=温度/10;
len++;
}
int k=1,m=0,p=1;
而(k>len | m==b)
{
对于(int i=1;i我认为在字符串级别剪切数字比在整数值级别更容易。因此,基于字符串的解决方案,在循环中剪切数字并比较字符串。
如果不是关于性能,而是关于可读代码,我更喜欢以下解决方案:
字符串a、b;
cin>>a;
cin>>b;
bool isContained=false;
尺寸=a.长度();
对于(int i=0;i
我就是这样理解这个问题的:
给定:两个数字:a和b,其中a>b。
问题:是否可以删除数字a中的一位数字(以十进制表示),以便新的a=b
示例:
条件:
while (k>len || m == b)
仅当变量a或b设置为0时为真。其他方式为假,因为k=1且不大于变量a中的位数(最小长度值为1)。
可能应该有:
k
下一个问题是,您多次打印“否”,直到检查所有数字或找到答案。请尝试使用一些bool变量
这里有我的例子:
bool almoustEuqal(int a, int b)
{
if(a<0 && b<0) //this is for negative number
{ //so a=-123 b=-23 =>OK
a = -a; //but a=-123 b=-14 =>No
b = -b;
}
if(a < b || a < 10) return false;
int p = 1, t;
while(p < a)
{
t = a / p / 10;
t *= p;
t += a % p;
if(t == b) return true; //if it's OK then interup loop
p *= 10;
}
return false; //otherwise return false
}
bool-almoustueqal(内部a、内部b)
{
如果(aNo
b=-b;
}
如果(a
而不是代码中的某个地方,只需使用:
//...
std::cin >> a;
std::cin >> b;
if(almoustEuqal(a, b))
{
std::cout << "Ok";
}
else
{
std::cout << "No";
}
//or in other way:
std::cout << ((almoustEuqal(a, b)) ? "OK" : "No");
//..
/。。。
标准:cin>>a;
标准:cin>>b;
if(Almousteukal(a,b))
{
std::cout解决此类问题的正确工具是调试器。在询问堆栈溢出问题之前,您应该逐行检查代码。有关更多帮助,请阅读。至少,您应该[编辑]您的问题,以包含一个重现您的问题的示例,以及您在调试器中所做的观察。“从第一个整数中删除任何数字后,新的数字是否等于第二个读取整数”,当first_number>second_number
No时,这是否总是正确的,第一个总是应该更大-例如,如果输入123和12,它应该打印“Yes”“-我们已经划掉了3,新的整数是相等的,你能给出更多的输入和输出示例吗?75648 7648-是(划掉5)423 41-否,因为“132”和“12”也应该匹配,除非我误解了这个问题。”。
//...
std::cin >> a;
std::cin >> b;
if(almoustEuqal(a, b))
{
std::cout << "Ok";
}
else
{
std::cout << "No";
}
//or in other way:
std::cout << ((almoustEuqal(a, b)) ? "OK" : "No");
//..