Search code examples
c#arraysdifferencearray-difference

how do i compare a number in one array with a number in another array and find the difference? im using C#


I got the following problem, i can't figure out how to compare the two arrays and display the difference between the two or show that it is a tie. Please help with this exercise. The code that I currently have does not allow me to find the difference of each car. I'm not sure what i have to do.

There are eight cars in each team called Chevy and Ford. One car from each team races its opponent on the drag strip. Read in the racing times for the eight Chevy cars and then read in the times for the eight Ford cars. Store the times into arrays called Chevy[ ] and Ford[ ]. Then list the winner of each pair, giving the number of seconds the winner won by. At the end declare which team won based on which team had the most wins. Below is a sample match.

Enter the times for the Chevy cars: 5.4 7.2 4.0 9.1 5.8 3.9 6.2 8.1 Enter the times for the corresponding Ford cars: 5.8 6.9 3.9 9.2 5.8 3.8 6.0 8.5 And the winners are: Chevy by 0.4 sec Ford by 0.3 sec Ford by 0.1 sec Chevy by 0.1 sec Tie ! Ford by 0.1 sec Ford by 0.2 sec Chevy by 0.4 sec And the winning team is: F O R D !

• Accept the racing times for each of the Chevy cars into the array Chevy[ ].
• Accept the racing times for each of the Ford cars into the array Ford[ ].
• Then declare the wining car for each race, giving the winning time in seconds. • If the times are identical, then declare the race was a tie. • Finally, declare which team won the match, assuming a tie is possible.

and here is my code

    {

        //declare varibles
        double[] chevy = new double[8];
        double[] ford = new double[8];
        int x, y;
        double ctotal = 0, chevyaverage = 0;
        double ftotal = 0, fordaverage = 0;
        double cwin= 0, fwin = 0;
        //calculations

        //input
        for (x = 0; x < 8; x++)
        {
            Console.Write("Enter time for chevy car " + (x + 1) + ":");
            chevy[x] = double.Parse(Console.ReadLine());
        }
        for (y = 0; y < 8; y++)
        {
            Console.Write("Enter time for ford car " + (y + 1) + ":");
            ford[y] = double.Parse(Console.ReadLine());
        }
                         //this is not working, it keeps coming up as 1
        if (chevy[x] < ford[y])
        {
            cwin = chevy[x] - ford[y];
            Console.WriteLine("Chevy won by: " + cwin);
        }
        else if (ford[y] < chevy[x])
        {
            fwin = ford[y] - chevy[x];
            Console.WriteLine("Ford won by: " + fwin);
        }
        else
        {
            Console.WriteLine("Tie!");
        }

        //output


        Console.ReadLine();

   }
}

Solution

  • Ok the first part collecting the data it would work for the exercise.

    What you would need to tweek is the logic to find the winner. I will start after you collect the times for each of the teams.

    What I would suggest to do is:

    1. Iterate from 0..N-1 (N = 8 which is the array length) (I didn't saw that loop in your code, I hope I am not missing it)
    2. While iterating do the comparison as following:

      int chevyWins = 0, fordWins = 0;
      for (int i = 0; i < 8; i++)
      {
          if (chevy[i] < ford[i])
          {
              //Note the difference with your code, your are doing 
              //the subtraction chevy[i] - ford[i] that will give you negative numbers.
              chevyWins++;
              Console.WriteLine(String.Format("Chevy won by {0}", (ford[i] - chevy[i])));
          }
          else if (chevy[i] > ford[i])
          {
              fordWins++;
              Console.WriteLine(String.Format("Ford won by {0}", (chevy[i] - ford[i])));
          }
          else
          {
              Console.WriteLine("Tie!");
          }
      }
      
      if (chevyWins > fordWins)
      {
          Console.WriteLine("Chevy Wins the competition!");
      }
      else if (chevyWins < fordWins)
      {
          Console.WriteLine("Ford Wins the competition!");
      }
      else
      {
          Console.WriteLine("The competition was tie!");
      }
      

      I think the issue with your code was that you were not iterating to compare each of the scenarios. And the second was how you were calculating the difference between each competition.

    Here is the fiddle.

    I hope this works for you! Regards.