【问题标题】:Below Code is not printing anything [closed]下面的代码没有打印任何东西[关闭]
【发布时间】:2017-11-09 21:47:59
【问题描述】:
#include <iostream>
#include <iterator>
#include <algorithm>

using namespace std;

int ma(float array[], int N)
{
    int k = 0;
    float max = array[k];
    for (int i = 0; i < N; ++i) {
        if (array[i] > max) {
            max = array[i];
            k = i;
        }
    }
    return k;
}

int main()
{
    int t;
    while (t--) {
        int n;
        cin >> n;
        int w[n], p[n];
        for (int i = 0; i < n; i++)
            cin >> w[i];
        for (int i = 0; i < n; i++)
            cin >> p[i];
        float x[n];
        for (int i = 0; i < n; i++)
            x[i] = p[i] / w[i];
        int weigth = 0, profit = 0;
        while (weigth <= 20) {
            // int k=distance(x, max_element(x, x + n));
            // int k=  std::distance(x, max_element(x, x + sizeof(x)/sizeof(x)));
            int k = ma(x, n);
            weigth = weigth + w[k];
            profit = profit + p[k];
            x[k] = p[k] = w[k] = 0;
        }
        cout << weigth << endl
             << profit << endl;
    }
}

上面的代码没有打印任何东西。如果您想问问题,请参考"catch-the-match"

【问题讨论】:

  • int t; while(t--) — 你忘记初始化 t
  • "如果你想问这个问题..." .. 什么?如果你想要一个答案,你应该在问题中提供一个问题,而不是隐藏在要求我登录某处的链接后面
  • 你可能想要int t=N,其中 N 是任何非零值(例如 10),你应该决定这个值是什么因为我不登录就看不到问题
  • 我可以建议从更简单的开始 - 和learning how to use your debugger吗?

标签: c++


【解决方案1】:

您的代码甚至没有编译,

你不能在 C++ 中做到这一点

int n;
cin >> n;
int w[n], p[n];

因为 n 在编译时必须是一个常数,另一方面这样做:

int t;
while (t--) {

在循环中产生不可预测的迭代次数,因为 t 未初始化

【讨论】:

  • 谢谢..我只是滑了手指忘记添加 cin>>t
  • @PRATIKAHUJA 跳过 6 个左右的字符是一个很大的失误。
【解决方案2】:

您必须将int n 声明为const int n 才能正确编译代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多