Search code examples
c#foreachsubtraction

Subtraction between multiple random input numbers


i want to make user input random number example : 5-3-10-50 , system will split " - " and then the result 5 3 10 50 , how to make subtraction from first number minus second number and so on, like this 5 - 3 = 2 , 2 - 10 = -8 , -8 - 50 = -58 and then system will print the final answer -58

my code :

bool Subtraction = true;
int AskSubtraction = 0;

while (Subtraction)
{
    Console.Write("\n" + "input number ( example : 1 - 2 - 3 - 4 ) : ");
    var InputNumber = Console.ReadLine();
    double Answer = 0;

        foreach (var result in InputNumber.Split('-'))
        {
            if (double.TryParse(result, out _))
            {
                double NumberResult = Convert.ToDouble(result);
                Answer -= NumberResult;
            }
            else
            {
                Console.WriteLine("\n" + "Wrong input !");
                AskSubtraction++;
            }
        }

    Console.WriteLine("\n" + "subtraction result : " + Answer);
}

i know my code is wrong, im beginner i already try to fix this but i cant fix it until now, i hope someone tell me what's wrong with my code and fix it too, thank you.


Solution

  • The reason yours doesn't work is because you set Answer = 0. And you used foreach. On the first iteration of the loop, the first number is subtracted from Answer which results in -5.

    Use for (int i=1; i<arr.Length; i++) instead of foreach

    Start from index 1, and then subtract the values.

    Example:

    var arr = InputNumber.Split('-');
    double Answer = 0;
    if (double.TryParse(arr[0], out _))
    {
        // We set Answer to the first number, since nothing is subtracted yet
        Answer = Convert.ToDouble(arr[0]);
    }
    
    // We start index from 1, since subtraction starts from 2nd number on the String array
    for (int i=1; i<arr.Length; i++)
    {
        if (double.TryParse(arr[i], out _))
        {
            double NumberResult = Convert.ToDouble(arr[i]);
            Answer -= NumberResult;
        }
    }
    

    Tested on Online C# Compiler