黎子卿 发表于 2023-11-5 11:11:34

为什么不对

描述
给一组数,前后相邻的两个数相除,输出商最大的两个数及商的值。
输入
第一行为数组中浮点数的个数n,n大于2,其余n行为每一行一个浮点数。
输出
以下面的形式输出结果,前两个数是相除的两个数,最后一个数为最大的商值。
printf("%f / %f = %f\n", a, a, maxq);
#include <iostream>
using namespace std;
#include <vector>
int main()
{
        int n;
        float maxbeichu = 1, maxchu = 1;
        float shang = 1;
        cin >> n;
        cin.ignore();
        vector<float> nums;
        float num;
        for (int i = 1; i <= n; i++)
        {
                cin >> num;
                nums.push_back(num);
        }
        float maxshang = 0;
        for (int i = 1; i < nums.size(); i++)
        {
                float shang = nums / nums;
                if (shang > maxshang)
                {
                        maxshang = shang;
                        maxbeichu = nums;
                        maxchu = nums;
                }
        }
        printf("%f/%f = %f", maxbeichu, maxchu, maxshang);
        return 0;
}

isdkz 发表于 2023-11-5 11:11:41

问题在于,输入时使用了cin.ignore() ,这会导致程序忽略掉第一个数。所以应该将其删除或将其移动到正确的位置上。

以下是修改后的代码:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int n;
    float maxbeichu = 1, maxchu = 1;
    float shang = 1;
    cin >> n;
    vector<float> nums(n);
    for (int i = 0; i < n; i++)
    {
      cin >> nums[ i];
    }
    float maxshang = 0;
    for (int i = 1; i < nums.size(); i++)
    {
      float shang = nums[ i] / nums;
      if (shang > maxshang)
      {
            maxshang = shang;
            maxbeichu = nums[ i];
            maxchu = nums;
      }
    }
    printf("%f/%f = %f", maxbeichu, maxchu, maxshang);
    return 0;
}


此代码已删除cin.ignore()并使用了vector存储输入的数字。

黎子卿 发表于 2023-11-5 11:12:52

isdkz 发表于 2023-11-5 11:11
问题在于,输入时使用了cin.ignore() ,这会导致程序忽略掉第一个数。所以应该将其删除或将其移动到正确 ...

还是不对

Mike_python小 发表于 2023-11-5 11:12:52

找出相邻两数商最大值 - C++代码

以下是一个用于找出相邻两数商最大值的示例代码:


#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cout << "请输入数组中浮点数的个数(n > 2): ";
    cin >> n;

    vector<float> nums(n);
    cout << "请输入每个浮点数: " << endl;
    for (int i = 0; i < n; i++) {
      cin >> nums;
    }

    float maxQuotient = 0;
    int maxIndex = -1;

    for (int i = 1; i < n; i++) {
      float quotient = nums / nums;
      if (quotient > maxQuotient) {
            maxQuotient = quotient;
            maxIndex = i;
      }
    }

    cout << nums << " / " << nums << " = " << maxQuotient << endl;

    return 0;
}


上述代码中,我们首先输入浮点数的个数和每个浮点数,然后使用循环遍历数组,计算相邻两数的商,并记录最大的商和对应的索引。最后输出最大商对应的两个数和商的值。

希望以上代码能够满足你的需求。如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 为什么不对