【问题标题】:How can I find max and min value of every row如何找到每一行的最大值和最小值
【发布时间】:2020-03-19 12:46:37
【问题描述】:

我的练习任务是如果最小值高于任何其他数组的最大值,则查找数组的索引。如果有多个,则只打印最低的索引。例如:
1 2 3 4 5
6 7 8 9 10
所以输出是 2 因为第二行的最小值高于另一行的最大值。但是我一直在寻找 every 数组的最小值和最大值,所以我无法继续。

int numberOfTowns;
int numberOfDays;
cin >> numberOfTowns >> numberOfDays;
int temperature[100][100];
for (int i = 0; i < numberOfTowns; i++)
{
    int maxValue = temperature[i][0];
    int minValue = temperature[i][0];
    for (int j = 0; j < numberOfDays; j++)
    {
        cin >> temperature[i][j];

        if (temperature[i][j] > maxValue)
            maxValue = temperature[i][j];

        if (temperature[i][j] < minValue)
            minValue = temperature[i][j];

    }
        cout << "Max: " << maxValue << endl;
        cout << "Min: " << minValue << endl;
}
return 0;}

编辑:为了澄清起见,numberOfTowns 基本上是指行数,而 numberOfDays 是指列数。
我的输入和输出如下所示:
(3是行数,5是列数)

3 5

10 15 12 10 10

最大:15 最小值:0

11 11 11 11 20

最大:20 最小值:0

18 16 16 16 20

最大:20 最小值:0

所以我的 Max 工作正常,但我的 Min 始终为 0。有人可以帮忙吗? P.S.:这是我在这里的第一个问题,我对 C++ 有点陌生,如果我做错了什么,请见谅。

【问题讨论】:

  • 什么是“数组的最小值高于任何其他数组的最大值的索引”?在给定的索引处只有一个元素,在整个数组中只有一个最小值/最大值。
  • int maxValue = temperature[i][0];,您从数组加载的值是未定义的。看起来通常是 0。
  • 输入是数组?
  • 有一个minmax_element算法可以帮你
  • @foreknownas_463035818 在代码末尾,如果该行适用于条件,我将不得不计算该行的索引。条件是:最小值高于任何其他行的最大值

标签: c++ arrays max min


【解决方案1】:

在将任何内容写入该位置之前,您使用 temperature[i][0] 初始化 minValuemaxValue。而是使用输入值来初始化它:

    cin >> temperature[i][0];
    int maxValue = temperature[i][0];
    int minValue = temperature[i][0];
    for (int j = 1; j < numberOfDays; j++)    // start at 1 
    {
        cin >> temperature[i][j];

        if (temperature[i][j] > maxValue)
            maxValue = temperature[i][j];

        if (temperature[i][j] < minValue)
            minValue = temperature[i][j];

    }

【讨论】:

  • 你能帮我进一步吗?所以我得到了每个数组的最大值和最小值。现在我必须将数组的最小值与其他数组的最大值进行比较。如果最小值高于另一行的最大值,那么我必须计算出哪个数组,我不知道如何将一行中的单个元素(MinValue)与另一行的单个元素(MaxValue)进行比较。因此例如: 10 11 12 13 14 \n 20 15 15 15 15 \n 10 10 16 10 10 \n 解决方案是:2 因为第二行的最小值高于第一行的最大值。
  • @Kevcso 抱歉,我没有看到问题,将最小值放入向量中,对其进行迭代并检查每个候选者的条件。请注意,cmets 不适用于扩展讨论。如果您还有其他问题,请提出另一个问题
【解决方案2】:

minValue 从 0 开始。 应该从第一个值开始。

int numberOfTowns;
int numberOfDays;
cin >> numberOfTowns >> numberOfDays;
int temperature[100][100];
for (int i = 0; i < numberOfTowns; i++)
{
    int maxValue;
    int minValue;
    for (int j = 0; j < numberOfDays; j++)
    {
        cin >> temperature[i][j];

        if( j == 0 ) {
             maxValue = temperature[i][0];
             minValue = temperature[i][0];
             continue;
        }

        if (temperature[i][j] > maxValue)
            maxValue = temperature[i][j];

        if (temperature[i][j] < minValue)
            minValue = temperature[i][j];

    }
        cout << "Max: " << maxValue << endl;
        cout << "Min: " << minValue << endl;
}
return 0;}

【讨论】:

    猜你喜欢
    • 2020-10-11
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多