C#에서 배열로 간단한 계산기를 만들려고합니다. 첫째로 나는 두 개의 정수와 한 개의 연산자 만 사용하여 만들었고 잘 작동했다. 이제는 사용자가 원하는만큼 표현을 할 수 있도록하기 위해 노력하고 있습니다. 예를 들어 단 하나의 연산자와 두 개의 정수 만 포함하는 단순한 9 + 8 대신 7 * 7 + 1/50을 사용할 수 있습니다. 문제는 여러 개의 숫자와 연산자로 긴 표현식을 입력 할 때마다 첫 번째 연산자로 처음 2 개의 숫자 만 계산한다는 것입니다. 이 문제에 대한 좋은 해결책은 무엇입니까? 미리 감사드립니다.C#에서 배열로 간단한 계산기 만들기
static void Main()
{
while (true)
{
Console.WriteLine("Write an expression with two numbers and an operator with space in-between, for example, 4 + 2");
string expression;
string[] array;
string[] array1;
expression = Console.ReadLine();
array = expression.Split();
array1 = Calculation(array);
Console.WriteLine("Press ENTER to write a new expression.");
Console.ReadLine();
Console.Clear();
}
}
static string[] Calculation(string[] arr)
{
double numLeft= 0.0;
double numRight = 0.0;
string sign = "";
double result = 0.0;
int index = 1;
while (true)
{
numLeft = Convert.ToDouble(arr[0]);
sign = Convert.ToString(arr[index]);
numRight = Convert.ToDouble(arr[index + 1]);
index = index + 2;
if (sign == "+")
{
Console.Clear();
Console.WriteLine();
result= result + numLeft;
}
else if (sign == "-")
{
Console.Clear();
result = result + numLeft;
numLeft = 0 - numRight;
}
else if (sign == "*")
{
Console.Clear();
numLeft = numLeft * numRight;
}
else if (sign == "/")
{
Console.Clear();
numLeft = numLeft/numRight;
}
else
{
break;
}
result = result + numLeft;
Console.WriteLine("Answer: {0}", result);
return arr;
}
return arr;
}
어떻게 다른 우선 순위 연산자를 처리합니까? '/'와'*'는'+'와'-'보다 우선 순위가 높습니다. 복잡한 표현을 구현하는 것은 그리 쉬운 일이 아니며 따라서 SO에 관한 한 가지 질문에 너무 광범위합니다. – HimBromBeere
@HimBromBeere 솔직히 말해서 나는 그것에 대해 실제로 생각해 보지 못했지만이 시점에서 나는 그것에 대한 해결책을 찾지 못했다. –