Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;从整数中删除数字_C++_Loops_Printing_Int - Fatal编程技术网

C++ c++;从整数中删除数字

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 >&

因此,我必须编写一个程序,读取两个整数,并确定从第一个整数中删除任何数字后,新的整数是否等于第二个读取的整数(例如,如果输入为123和12,则应打印“是”,因为在去掉3之后,两个整数相等)。我认为我写的代码是正确的,但是程序没有打印任何东西。代码如下:

#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
我就是这样理解这个问题的:
给定:两个数字:ab,其中a>b
问题:是否可以删除数字a中的一位数字(以十进制表示),以便新的a=b

示例:

条件:

while (k>len || m == b)
仅当变量ab设置为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");
//..