Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Integer - Fatal编程技术网

C++ 如何在c+中交替添加和减去用户输入+;

C++ 如何在c+中交替添加和减去用户输入+;,c++,loops,integer,C++,Loops,Integer,我要测试一个数字是否可以被11整除。 我知道用if(input%11==0)检查数字是否可以被11整除需要一行代码,但我应该写一个算法,通过交替顺序加减数字来找出整除性,然后检查结果是否可以被11整除。 例如,数字1364,程序会做:1-3+6-4,它是0,基本上可以被11整除 这是我目前的算法,我知道它有点不连贯,我正在研究。它应该以交替顺序加减用户输入,然后检查总和是否可以被11整除 #include <string> #include <iostream> usi

我要测试一个数字是否可以被11整除。 我知道用
if(input%11==0)
检查数字是否可以被11整除需要一行代码,但我应该写一个算法,通过交替顺序加减数字来找出整除性,然后检查结果是否可以被11整除。 例如,数字1364,程序会做:
1-3+6-4
,它是0,基本上可以被11整除

这是我目前的算法,我知道它有点不连贯,我正在研究。它应该以交替顺序加减用户输入,然后检查总和是否可以被11整除

#include <string>
#include <iostream>

using namespace std;

int getInput(){
int input;
cout << "Enter the number" << "\n";
cin >> input;
return input;
}


int For11(int x){
 if (to_string(x).length() > 1 && to_string(x).length() < 11){ //Range
  //string num = to_string(x);
  for (int i = 1; i % 11 != 0; i++){
    int sum = i + i - i + i; // The heart of the algorithm
    cout << sum << "\n";
    if (sum % 11 == 0){
     // some code goes here;
return 0;}
    else {
    // some code goes here;
return 1;}

  }
 }
}


int main() {
For11(getInput());
return 0;
}


#包括
#包括
使用名称空间std;
int getInput(){
int输入;
不能输入;
返回输入;
}
11的整数(整数x){
if(to_string(x).length()>1&&to_string(x).length()<11){//范围
//string num=到_字符串(x);
对于(int i=1;i%11!=0;i++){
int sum=i+i-i+i;//算法的核心

cout如果我理解得很好,您希望将用户给定的任何数字转换为复合此数字的数字。如果用户输入为:“123456”,则您希望将此输出捕获为整数变量:{1,2,3,4,5,6}在这种情况下,我的建议是使用
std::string
,然后可以对
(int)进行转换
对于字符串的每个字符。我建议使用下一个代码,但请注意,它的设计目的不是检测用户是否输入除数字以外的其他字符。还要注意,要进行转换,我会在字符代码中减去48,因为这是与ASCII的对应关系

编辑:我不知道这对你是否有帮助,因为你的问题在某一点上是模糊的,但至少对我来说这很有趣

#包括

#包括

#包括

intsignfun(inti){

}

int main(){

std::string userInputNum;
std::cout userInputNum;
std::向量数字(userInputNum.length());
整数{0};

对于(unsigned i=0;i,如果我理解得很好,您希望将用户给定的任何数字转换为复合此数字的数字。如果用户输入为:“123456”,则您希望将此输出捕获为整数变量:{1,2,3,4,5,6}在这种情况下,我的建议是使用
std::string
,然后可以对
(int)进行转换
对于字符串的每个字符。我建议使用下一个代码,但请注意,它的设计目的不是检测用户是否输入除数字以外的其他字符。还要注意,要进行转换,我会在字符代码中减去48,因为这是与ASCII的对应关系

编辑:我不知道这对你是否有帮助,因为你的问题在某一点上是模糊的,但至少对我来说这很有趣

#包括

#包括

#包括

intsignfun(inti){

}

int main(){

std::string userInputNum;
std::cout userInputNum;
std::向量数字(userInputNum.length());
整数{0};
对于(无符号i=0;i您几乎拥有它

最大的问题就在这里:

int sum = i + i - i + i;
假设
i
0
。那会是什么样子:

0 + 0 - 0 + 0
这当然是
0

现在假设
i
1

1 + 1 - 1 + 1
等于2

如果你继续下去,很容易看出总和总是等于
2*i
。这根本不是你想要的

您要做的是根据
i
的值向运行总数中添加一些数字:

int sum = to_int(to_string(x)[0]); // to_int would be some function to convert an
                                   // char to an integer it is not necessarily a 
                                   // standard function. I'll leave that part for
                                   // you to figure out
for(int i = 1; i % 11 != 0; i++) {
    if(i%2 == 0) {
        sum += to_int(to_string(x)[i]);
    } else {
        sum -= to_int(to_string(x)[i]);
    }
}
//...
希望这就足够让你开始了。

你差不多有了

最大的问题就在这里:

int sum = i + i - i + i;
假设
i
0
。那会是什么样子:

0 + 0 - 0 + 0
这当然是
0

现在假设
i
1

1 + 1 - 1 + 1
等于2

如果你继续下去,很容易看出总和总是等于
2*i
。这根本不是你想要的

您要做的是根据
i
的值向运行总数中添加一些数字:

int sum = to_int(to_string(x)[0]); // to_int would be some function to convert an
                                   // char to an integer it is not necessarily a 
                                   // standard function. I'll leave that part for
                                   // you to figure out
for(int i = 1; i % 11 != 0; i++) {
    if(i%2 == 0) {
        sum += to_int(to_string(x)[i]);
    } else {
        sum -= to_int(to_string(x)[i]);
    }
}
//...

希望这足以让您开始学习。

嘿,我刚刚编辑了我的问题以便更好地理解。不要使用可变长度数组-使用
std::vector
@iz_u。我已经按照您的建议对此进行了更改,但是,您能解释一下吗?原因是因为编译器在编译时间和时间内不知道数组的大小吗那么这个大小,即使在假定是堆栈分配时,完全依赖于用户输入,因此完全不可预测的原因很简单:VLAs在C++中是非标准的。它们在编译器中作为一个扩展实现,就像GCC一样。我没有注意到,因为我一直在Linux编程与GCC编程。谢谢!我只是EDI。ted为了更好地理解我的问题。不要使用可变长度数组-使用
std::vector
@iz\uz。我已经按照你的建议对此进行了更改,但是,你能解释一下吗?原因是编译器在编译时不知道数组的大小,然后这个大小,即使应该是堆栈分配的,也被忽略了吗完全依赖于用户输入,因此完全不可预测的原因很简单:VLAs是C++中的非标准。它们在编译器中作为一个扩展实现,就像GCC一样。我没有注意到,因为我一直在Linux编程与GCC编程。谢谢!