C++ C++;从两个相同大小的不同整数数组中求最小商

C++ C++;从两个相同大小的不同整数数组中求最小商,c++,arrays,minimum,C++,Arrays,Minimum,我有两个不同的数组,分子[],分母[],整数大小是9。它们都由9个不同的整数组成,我需要找到2个整数的最低商 (两个数组中的百分比-(分子[])/(分母[])。我该怎么做呢?您想返回百分比还是商数(没有余数)? 下面的代码返回百分比。如果需要商数,请将double更改为int #include<limits> double lowestQuotient(const int *numerator, const int *denominator) { double min=DBL_M

我有两个不同的数组,分子[],分母[],整数大小是9。它们都由9个不同的整数组成,我需要找到2个整数的最低商
(两个数组中的百分比-(分子[])/(分母[])。我该怎么做呢?

您想返回百分比还是商数(没有余数)? 下面的代码返回百分比。如果需要商数,请将double更改为int

#include<limits>
double lowestQuotient(const int *numerator, const int *denominator)
{
  double min=DBL_MAX;
  double quotient;
for(i=0;i<9;i++)
{
  if (denominator[i]==0)
      continue;
  quotient = (double)numerator [i]/denominator [i];
  if (i==0 || quotient<min)
     min=quotient;
}
return min;

}
#包括
双低商(常数整数*分子,常数整数*分母)
{
双最小值=DBL_最大值;
双商;

对于(i=0;i是否要返回百分比或商(不带余数)? 下面的代码返回百分比。如果需要商数,请将double更改为int

#include<limits>
double lowestQuotient(const int *numerator, const int *denominator)
{
  double min=DBL_MAX;
  double quotient;
for(i=0;i<9;i++)
{
  if (denominator[i]==0)
      continue;
  quotient = (double)numerator [i]/denominator [i];
  if (i==0 || quotient<min)
     min=quotient;
}
return min;

}
#包括
双低商(常数整数*分子,常数整数*分母)
{
双最小值=DBL_最大值;
双商;
对于(i=0;iEdit:这个答案是在问题陈述被更改之前写的,目的不是要比较每个组合,而是只取成对商。这大大简化了问题,使我在这里冗长的解决方案显得有些过分。这也是在涉及浮点值的解决方案之前写的我假设提问者对两个整数的商的数学定义感兴趣,这两个整数的商本身必然是一个整数

编辑2:修复了编译错误——感谢James Root指出错误

这首先是一道数学题,其次是一道编程题

简单的实现是计算第一个数组中的每一个分子组合除以第二个数组中的分母,然后跟踪最小商,然后计算结果

这将类似于以下内容:

#include <climits>
#include <algorithm>

int minimum_quotient(int numerator[], int denominator[], int size)
{
    int minimum = INT_MAX; // minimum quotient
    for (int i = 0; i < size; ++i)
        for (int j = 0; j < size; ++j)
            if (denominator[j] != 0) // avoid division by 0
                minimum = std::min(minimum, numerator[i] / denominator[j]);
    return 0;
}
编辑:这个答案是在问题陈述被更改之前写的,目的不是要比较每一个组合,而是只取成对商。这大大简化了问题,并使我在这里的冗长的解决方案显得有些过分。这也是在涉及浮点值的解决方案被修改之前写的表示;我假设提问者对两个整数的商的数学定义感兴趣,这两个整数本身必然是一个整数。尽管如此,我将把这个留给后代

编辑2:修复了编译错误——感谢James Root指出错误

这首先是一道数学题,其次是一道编程题

简单的实现是计算第一个数组中的每一个分子组合除以第二个数组中的分母,然后跟踪最小商,然后计算结果

这将类似于以下内容:

#include <climits>
#include <algorithm>

int minimum_quotient(int numerator[], int denominator[], int size)
{
    int minimum = INT_MAX; // minimum quotient
    for (int i = 0; i < size; ++i)
        for (int j = 0; j < size; ++j)
            if (denominator[j] != 0) // avoid division by 0
                minimum = std::min(minimum, numerator[i] / denominator[j]);
    return 0;
}


两两,比如n[0]/d[0],然后n[1]/d[1],或每一个组合?按对,不是每一个组合。我还没有真正尝试过任何东西。我很难弄清楚如何处理这个问题。你想要商的
int
double
表示,还是仅仅知道哪一对产生的值最低?例如,在数组和div之间循环把每一对分开解决问题,或者你需要知道
a/b
是否小于
c/d
而不实际分开它们吗?我反对你在一开始就没有给出足够清晰的问题(导致一个回答者付出额外的努力),也没有尝试解决问题的第一步。两两,比如n[0]/d[0]然后n[1]/d[1],或每一个组合?按对,不是每一个组合。我还没有真正尝试过任何东西。我很难弄清楚如何处理这个问题。你想要商的
int
double
表示,还是仅仅知道哪一对产生的值最低?例如,在数组和div之间循环区分每一对解决了问题,或者你需要知道
a/b
是否小于
c/d
而不实际分割它们吗?我否决了你在开始时没有给出足够清晰的问题(导致一个回答者付出额外的努力)而且也没有尝试解决问题的第一步。你缺少了一些
static\u cast()
s。回答很好。反馈:将你的函数签名声明为
双低商(int*分子,int*分母)
别忘了检查
demoniator[i]==0
在尝试进行除法运算之前。@selbie我最初考虑使用它。这是因为我们想避免通过值传递吗?对于分母数组中的所有项都是
0
的边缘情况,您应该将
min
初始化为某个值(可能是DBL\u MAX)。您缺少了一些
static\u cast()
s在那里。回答很好。反馈:将函数签名声明为
双低商(int*分子,int*分母)
别忘了检查
demoniator[i]==0
在尝试执行除法运算之前。@selbie我最初考虑使用它。这是因为我们要避免按值传递吗?您应该将
min
初始化为某个值(可能是DBL\u MAX)对于分母数组中的所有项都是
0
的边缘情况,这是一个很好的尝试。对于一个比一开始陈述的问题更简单的问题,修改答案是非常浪费的。即使这已经得到了回答,我还是非常感谢你的回答。它非常有洞察力,帮助我理解了这个问题的整个概念好多了!再次感谢你!很好的努力。修改一个比一开始陈述的问题更简单的答案是相当浪费的。即使这个问题已经得到了回答,我还是非常感谢你的回答。它非常有洞察力,帮助我理解了整个c