如何将一个数组中的数字与另一个数组中的数字进行比较并找出差异?我在用C#

如何将一个数组中的数字与另一个数组中的数字进行比较并找出差异?我在用C#,c#,arrays,difference,array-difference,C#,Arrays,Difference,Array Difference,我遇到了以下问题,我不知道如何比较这两个数组并显示它们之间的差异,或者显示它们是平局。请帮我做这个练习。我目前拥有的代码不允许我找到每辆车的差异。我不知道我该怎么办 每个车队有八辆车,分别叫雪佛兰和福特。每队一辆车在跑道上与对手比赛。读入八辆雪佛兰汽车的比赛时间,然后读入八辆福特汽车的比赛时间。将时间存储到名为Chevy[]和Ford[]的数组中。然后列出每一对的获胜者,给出获胜者获胜的秒数。最后,根据哪一队获胜最多,宣布哪一队获胜。下面是一个样本匹配 输入雪佛兰汽车的时间:5.4 7.2 4.

我遇到了以下问题,我不知道如何比较这两个数组并显示它们之间的差异,或者显示它们是平局。请帮我做这个练习。我目前拥有的代码不允许我找到每辆车的差异。我不知道我该怎么办

每个车队有八辆车,分别叫雪佛兰和福特。每队一辆车在跑道上与对手比赛。读入八辆雪佛兰汽车的比赛时间,然后读入八辆福特汽车的比赛时间。将时间存储到名为Chevy[]和Ford[]的数组中。然后列出每一对的获胜者,给出获胜者获胜的秒数。最后,根据哪一队获胜最多,宣布哪一队获胜。下面是一个样本匹配

输入雪佛兰汽车的时间:5.4 7.2 4.0 9.1 5.8 3.9 6.2 8.1 输入相应福特汽车的时间:5.8 6.9 3.9 9.2 5.8 3.8 6.0 8.5 获胜者包括: 雪佛兰领先0.4秒 福特领先0.3秒 福特0.1秒 雪佛兰领先0.1秒 领带 福特0.1秒 福特领先0.2秒 雪佛兰领先0.4秒 获胜的队伍是:F O R D

•接受雪佛兰[]阵列中每辆雪佛兰汽车的比赛时间。
•接受福特[]阵列中每辆福特汽车的比赛时间。
•然后宣布每场比赛的获胜车辆,以秒为单位给出获胜时间。 •如果时间相同,则宣布比赛为平局。 •最后,宣布哪支球队赢了这场比赛,假设可以打成平局

这是我的密码

    {

        //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();

   }
}
{
//声明变量
双人[]雪佛兰=新双人[8];
双[]福特=新双[8];
int x,y;
双ctotal=0,chevyaverage=0;
双F总=0,fordaverage=0;
双cwin=0,fwin=0;
//计算
//输入
对于(x=0;x<8;x++)
{
控制台。写入(“输入雪佛兰汽车的时间”+(x+1)+“:”;
chevy[x]=double.Parse(Console.ReadLine());
}
对于(y=0;y<8;y++)
{
控制台。写入(“输入福特汽车的时间”+(y+1)+“:”;
ford[y]=double.Parse(Console.ReadLine());
}
//这不起作用,它一直显示为1
if(雪佛兰[x]<福特[y])
{
cwin=雪佛兰[x]-福特[y];
控制台。WriteLine(“雪佛兰赢得:”+cwin);
}
否则如果(福特[y]<雪佛兰[x])
{
fwin=福特[y]-雪佛兰[x];
控制台。WriteLine(“福特赢得:”+fwin);
}
其他的
{
控制台。写线(“领带!”);
}
//输出
Console.ReadLine();
}
}

试试这个,你已经为问题的主要部分写了文章,你将变量cn和fn添加到公司的获奖汽车数量中,并至少对它们进行比较

{

    //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());
    }
    int cn=0,fn=0; //count of chevy wins and ford wins
    for(int x=0,int y=0;x<8;x++,y++)
    {

      if (chevy[x] < ford[y])
      {
        cn++;//chevy wins soo increment this
        cwin = chevy[x] - ford[y];
        Console.WriteLine("Chevy won by: " + cwin);
      }
      else if (ford[y] < chevy[x])
      {
        fn++;// ford wins
        fwin = ford[y] - chevy[x];
        Console.WriteLine("Ford won by: " + fwin);
      }
      else
      {
        Console.WriteLine("Tie!");// In tie no one wins so need not include this.
      }

    //output

    for (x = 0; x < 8; x++)
    {
        ctotal = ctotal + chevy[x];
    }
    chevyaverage = ctotal / 8;

    for (y = 0; y < 8; y++)
    {
        ftotal = ftotal + ford[y];
    }
    fordaverage = ftotal / 8;

    if(cn>fn)//checking the number of wins for each team
    {
        Console.WriteLine("Chevy wins");
    }
    else
        Console.writeLine("Ford wins");
    Console.WriteLine("The average time in seconds for each chevy car is: " + chevyaverage);
    Console.WriteLine("The average time in seconds for each ford car is: " + fordaverage);

    Console.ReadLine();

 }
}
{
//声明变量
双人[]雪佛兰=新双人[8];
双[]福特=新双[8];
int x,y;
双ctotal=0,chevyaverage=0;
双F总=0,fordaverage=0;
双cwin=0,fwin=0;
//计算
//输入
对于(x=0;x<8;x++)
{
控制台。写入(“输入雪佛兰汽车的时间”+(x+1)+“:”;
chevy[x]=double.Parse(Console.ReadLine());
}
对于(y=0;y<8;y++)
{
控制台。写入(“输入福特汽车的时间”+(y+1)+“:”;
ford[y]=double.Parse(Console.ReadLine());
}
int cn=0,fn=0;//雪佛兰和福特获胜的次数
for(intx=0,inty=0;xfn)//检查每个团队的获胜次数
{
控制台。WriteLine(“雪佛兰赢”);
}
其他的
控制台。writeLine(“福特赢”);
Console.WriteLine(“每辆雪佛兰汽车的平均时间(秒)为:“+chevyaverage”);
Console.WriteLine(“每辆福特汽车的平均时间(秒)为:“+fordaverage”);
Console.ReadLine();
}
}

好,第一部分收集数据,它将用于练习

你需要考虑的是找到赢家的逻辑。我会在你收集每个队的时间后开始

我建议做的是:

  • 从0..N-1(N=8,即数组长度)迭代(我在代码中没有看到这个循环,希望我没有遗漏它)
  • 迭代时,按以下步骤进行比较:

    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!");
    }
    
    int chevyWins=0,fordWins=0;
    对于(int i=0;i<8;i++)
    {
    如果(雪佛兰[i]<福特[i])
    {
    //注意你的代码的不同之处,你正在做什么
    //雪佛兰[i]-福特[i]的减法运算会得到负数。
    chevyWins++;
    WriteLine(String.Format(“Chevy被{0}赢了”),(ford[i]-Chevy[i]);
    }
    否则如果(雪佛兰[i]>福特[i])
    {
    fordWins++;
    WriteLine(String.Format(“Ford被{0}赢了”,(chevy[i]-Ford[i]);
    }
    其他的
    {
    控制台。写线(“领带!”);
    }
    }
    如果(切维金斯>福特WINS)
    {
    WriteLine(“雪佛兰赢得比赛!”);
    }
    否则,如果(切维斯<福特温)
    {
    控制台。WriteLine(“福特赢得了比赛!”);
    }
    其他的
    {
    WriteLine(“比赛打成平局!”);
    }
    
    我认为您的代码的问题在于您没有迭代来比较每个场景。第二个问题是你如何计算每场比赛之间的差距

  • 这是小提琴

    我希望这对你有用!
    尊敬。

    这是在LinqPad中完成的,因此您可以去掉“.Dump()”,但您可以使用.Zip通过比较两个数组来完成您要做的事情。例如,我缩短了代码,但您需要执行循环,然后将项目推送到数组中。压缩它们以进行比较

    using System.Linq;
    
    void Main()
    {
        double[] chevy = { 1, 2, 1, 1 };
        double[] ford = { 2, 1, 1, 2 };
    
        var results = chevy.Zip(ford, (c, f) => 
        {
            if(c < f)
            {
                return "Chevy Won";
            }
            else if(f < c)
            {
                return "Ford Won";
            }
            else
            {
                return "It was a tie";
            }
        });
    
        results.Dump();
    }
    
    //output
        Chevy Won 
        Ford Won 
        It was a tie 
        Chevy Won 
    
    使用System.Linq;
    void Main()
    {
    双[]雪佛兰={1,2,1,1};
    双[]福特={2,1,1,2};
    var结果=雪佛兰.Zip(福特,(c,f)=>
    {
    if(c