C++ 数字匹配表达式
我需要能够在数字数组中搜索与运行时输入的表达式匹配的值。我想知道是否有类似于正则表达式的东西,但具体是数字 澄清一下,我的问题是“我想知道是否有什么类似于正则表达式的东西,只是专门针对数字?” @Free昵称似乎有正确的想法,它可以在运行时计算算术/逻辑表达式 一些简单的例子 我有一个整数数组:C++ 数字匹配表达式,c++,regex,arrays,math,C++,Regex,Arrays,Math,我需要能够在数字数组中搜索与运行时输入的表达式匹配的值。我想知道是否有类似于正则表达式的东西,但具体是数字 澄清一下,我的问题是“我想知道是否有什么类似于正则表达式的东西,只是专门针对数字?” @Free昵称似乎有正确的想法,它可以在运行时计算算术/逻辑表达式 一些简单的例子 我有一个整数数组: 100145675,0250,43,19 我想找到100-300之间的任何值。 这将是100、145和250 我要查找0、50或100的任何值。 那就是100加0 我想找到50的倍数。 这将是0、100
100145675,0250,43,19 我想找到100-300之间的任何值。
这将是100、145和250 我要查找0、50或100的任何值。
那就是100加0 我想找到50的倍数。
这将是0、100和250(或者可能只是100和250,这只是一个例子)为什么需要一些regex-y?代码听起来很简单-
while(true){
cout << "enter the min: ";
cin >> min;
cout << "enter the max: ";
cin >> max;
for(int i=0;i<ARR_SIZE;i++){
if(arr[i]>mind && arr[i]<max) cout << arr[i];
}
}
while(true){
cout>min;
cout>max;
对于(inti=0;imind&&arr[i]为什么需要一些regex-y?代码听起来很简单-
while(true){
cout << "enter the min: ";
cin >> min;
cout << "enter the max: ";
cin >> max;
for(int i=0;i<ARR_SIZE;i++){
if(arr[i]>mind && arr[i]<max) cout << arr[i];
}
}
while(true){
cout>min;
cout>max;
对于(inti=0;imind&&arr[i]为什么需要一些regex-y?代码听起来很简单-
while(true){
cout << "enter the min: ";
cin >> min;
cout << "enter the max: ";
cin >> max;
for(int i=0;i<ARR_SIZE;i++){
if(arr[i]>mind && arr[i]<max) cout << arr[i];
}
}
while(true){
cout>min;
cout>max;
对于(inti=0;imind&&arr[i]为什么需要一些regex-y?代码听起来很简单-
while(true){
cout << "enter the min: ";
cin >> min;
cout << "enter the max: ";
cin >> max;
for(int i=0;i<ARR_SIZE;i++){
if(arr[i]>mind && arr[i]<max) cout << arr[i];
}
}
while(true){
cout>min;
cout>max;
对于(int i=0;imind&&arr[i],可以使用正则表达式查找文本中具有特殊属性的数字,但这可能不是最佳解决方案
- 在100-300之间:
([12]\d\d)|(300)
- 0、50或100:
0 |(50)|(100)
- 50的倍数:
\d*[05]0
这些可以(也应该)通过应用结构来细化(例如,50
不仅在50
上匹配,而且在250
上也匹配,(?正则表达式可用于查找文本中具有特殊属性的数字,但这可能不是最佳解决方案
- 在100-300之间:
([12]\d\d)|(300)
- 0、50或100:
0 |(50)|(100)
- 50的倍数:
\d*[05]0
这些可以(也应该)通过应用结构来细化(例如,50
不仅在50
上匹配,而且在250
上也匹配,(?正则表达式可用于查找文本中具有特殊属性的数字,但这可能不是最佳解决方案
- 在100-300之间:
([12]\d\d)|(300)
- 0、50或100:
0 |(50)|(100)
- 50的倍数:
\d*[05]0
这些可以(也应该)通过应用结构来细化(例如,50
不仅在50
上匹配,而且在250
上也匹配,(?正则表达式可用于查找文本中具有特殊属性的数字,但这可能不是最佳解决方案
- 在100-300之间:
([12]\d\d)|(300)
- 0、50或100:
0 |(50)|(100)
- 50的倍数:
\d*[05]0
这些可以(也应该)通过应用结构来细化(例如,50
不仅在50
上匹配,而且在250
上也匹配,(?“我需要能够在一个数字数组中搜索与运行时输入的表达式匹配的值。”
你真正需要的是:
- 如果vector是一个选项(允许),则将输入读入数字数组,理想情况下为
std::vector
- 使用自定义的定义良好的规则和
- 迭代数组,评估特定条件(范围、特定值等)
您可以显式处理特定情况(检查特定字符串),这是一种可能的方法:
int a[] = {100, 145, 675, 0, 250, 43, 19};
size_t len = sizeof(a) / sizeof(a[0]);
std::string expr;
std::cin >> expr;
if (expr == "%50") {
for (size_t i = 0; i < len; ++i) {
if (a[i] % 50 == 0)
...
}
}
inta[]={100145675,0250,43,19};
size_t len=sizeof(a)/sizeof(a[0]);
std::字符串表达式;
标准::cin>>expr;
如果(expr==“%50”){
对于(尺寸i=0;i
“我需要能够在数字数组中搜索与运行时输入的表达式匹配的值”
你真正需要的是:
- 如果vector是一个选项(允许),则将输入读入数字数组,理想情况下为
std::vector
- 使用自定义的定义良好的规则和
- 迭代数组,评估特定条件(范围、特定值等)
您可以显式处理特定情况(检查特定字符串),这是一种可能的方法:
int a[] = {100, 145, 675, 0, 250, 43, 19};
size_t len = sizeof(a) / sizeof(a[0]);
std::string expr;
std::cin >> expr;
if (expr == "%50") {
for (size_t i = 0; i < len; ++i) {
if (a[i] % 50 == 0)
...
}
}
inta[]={100145675,0250,43,19};
size_t len=sizeof(a)/sizeof(a[0]);
std::字符串表达式;
标准::cin>>expr;
如果(expr==“%50”){
对于(尺寸i=0;i
“我需要能够在数字数组中搜索与运行时输入的表达式匹配的值”
你真正需要的是:
- 如果vector是一个选项(允许),则将输入读入数字数组,理想情况下为
std::vector
- 使用自定义的定义良好的规则和
- 迭代数组,评估特定条件(范围、特定值等)
您可以显式处理特定情况(检查特定字符串),这是一种可能的方法:
int a[] = {100, 145, 675, 0, 250, 43, 19};
size_t len = sizeof(a) / sizeof(a[0]);
std::string expr;
std::cin >> expr;
if (expr == "%50") {
for (size_t i = 0; i < len; ++i) {
if (a[i] % 50 == 0)
...
}
}
inta[]={100145675,0250,43,19};
size_t len=sizeof(a)/sizeof(a[0]);
std::字符串表达式;
标准::cin>>expr;
如果(expr==“%50”){
对于(尺寸i=0;i
“我需要能够在数字数组中搜索与运行时输入的表达式匹配的值”
你的行为