gpt4 book ai didi

c++ - 定义值并通过数组调用它们

转载 作者:行者123 更新时间:2023-11-30 18:03:25 25 4
gpt4 key购买 nike

我正在尝试编写一个程序来通过暴力解决一个问题。

问题由数组 n 中的数字决定(在本例中为 1, 2, 3, 4)。我想对这些数字进行某种数学运算以获得值 10。

因此,在此示例中,使用数字 1 2 3 4 将是 1 + 2 + 3 + 4 = 10

在编写程序时,我不太确定如何实际检查我可以对数字执行的所有不同操作。我尝试定义操作,将每个值存储到一个数组中,然后迭代该数组以找到解决方案。不幸的是这不起作用;(

这是我的代码,我对遇到问题的部分进行了评论。

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define A +
#define B -
#define C *
#define D /

int main(void)
{
char ops[3]; //Array to contain the different functions
ops[0] = 'A';
ops[1] = 'B';
ops[2] = 'C';
ops[3] = 'D';

int n[3]; //Array containing the numbers which I'm trying to solve
for(i = 0; i <= 3; i++)
{
n[i] = i;
}

int solution[2]; //Array which will keep track of the solution
for(i = 0; i < 3; i++)
{
solution[i] = 0;
}

while(solution[2] <= 3)
{
while(solution[1] <= 3)
{
while(solution[0] <= 3)
{
//TROUBLE

//Here I'm going to test it
//Was trying to do something like
n[0] ops[solution[0]] n[1] etc. which should become 1 + 2 except it doesn't :/

}
}
}


sleep(5000);
return 0;
}

那么,我该如何将操作存储在某种数组中并调用它们呢?

最佳答案

您需要编写一个函数来完成此任务。宏在编译整个程序之前进行处理,因此它不能与仅在运行时已知的内容一起使用。

试试这个:

int solveOP(int op1, int op2, char op)
{
switch (op)
{
case 'A': // or you can use '+' directly
return op1+op2;
case 'B':
return op1-op2;
// ...
default: // when we've check all possible input
// ERROR!
// put your own error handling code here.
}
}

当您需要使用它时,您可以说:而不是n[0] ops[solution[0]] n[1]:

solveOP(n[0], n[1], ops[solution[0]]);

关于c++ - 定义值并通过数组调用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8468869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com