如何在 c++ 中交替添加和减去用户输入
How to add and subtract user input in alternating order in c++
我应该测试一个数字是否可以被 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;
}
你几乎拥有它。
最大的问题是这部分就在这里:
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]);
}
}
//...
希望这足以让你开始。
如果我理解得很好,您想将用户给出的任何数字转换为复合该数字的数字。如果用户输入是:"123456",您希望捕获此输出的整数变量:{1,2,3,4,5,6},然后将其操作到算法中。在这种情况下,我的建议是使用std::string
,然后您可以对字符串的每个字符进行转换以(int)
。我建议下一个代码,但请注意,它不是为了检测用户是否输入数字以外的其他字符而设计的。另请注意,要进行转换,我在字符代码中减去 48,因为它与 ASCII 相对应。
编辑:我不知道它是否会帮助你,因为你的问题在某些时候很模糊,但至少
对我来说很有趣。#include <iostream>
#include <string>
#include <vector>
int signFun(int i) {
int sign{-1};
if (i % 2== 0) return 1;
else return -1;
}
int main() {
std::string userInputNum;
std::cout << "Introduce a number" << std::endl;
std::cin >> userInputNum;
std::vector<int> digits(userInputNum.length());
int sumDigits{0};
for (unsigned i=0; i<userInputNum.length(); ++i) {
digits[i] = (int)(userInputNum.at(i)-48);
sumDigits += signFun(i)*digits[i];
}
std::cout << sumDigits << std::endl;
}
- C++如何通过用户输入删除列表元素
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 如何只允许用户输入正整数
- C++如何计算用户输入的数字中的偶数位数
- 通过for循环使用用户输入填充列表
- 在C++中,我如何接受不同于同一行的用户输入
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 显示基于用户输入的整数的字符
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 打印时有二叉树问题.用户输入不打印任何内容
- C ++奇怪的数组由用户输入
- 如何允许大写和小写用户输入?
- C++读取用户输入而不按回车键(Mac OS X),与Turbo Pascal中的读取键相同
- 如何存储用户输入的所有数据,然后在他们想要查看所有数据时显示它们
- 如何使用用户输入变量制作二维数组?
- 用户输入字符串的文件附加问题..C++
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- 如何使用递归循环我的代码(当用户输入无效输入时,它会再次提示他们)?