该代码在Dev-C ++中没有任何输出

时间:2019-03-31 03:39:23

标签: c++ arrays dev-c++

当我尝试在Dev-C ++中运行此代码时。没有输出。但是,当我在任何在线编译器中运行它时,代码都可以平稳运行。为什么它不能在Dev-C ++中运行?

我已经尝试在各种在线编译器中运行它,并且运行顺利。

import tkinter as tk

def print_name(text=''):   # <- now receives a value as parameter
    print(text)

def main():
    main_window = tk.Tk()
    entry_location = tk.Entry(main_window)
    tk.Button(main_window, text="Print Name", command=lambda: print_name(entry_location.get())).pack()
    entry_location.pack()
    main_window.mainloop()

main()

2 个答案:

答案 0 :(得分:3)

让我们看一下这段代码:

long long int arr[N]; 

由于N不是编译时常量,因此您试图创建一个所谓的可变长度数组。可变长度数组在较新的C版本中有效,但在C ++中无效。它可以在GCC下作为非标准扩展进行 编译,这可能就是为什么要在在线编译器上进行编译的原因。

我们只需使用矢量即可(#include <vector>中的任何内容)

std::vector<long long int> arr(N); //Create a vector of size N 

您可以以与使用数组完全相同的方式使用向量。

答案 1 :(得分:0)

可能是由于long long int arr[N];在DEV C ++中不可接受 使用std::vector<long long> arr(N);代替它。

在DEV C ++ 5.11版本中,它很容易给出输出

#include<iostream>
#include<stdio.h>
#include<conio.h>


using namespace std;
int main()
{
    int T;


    cin>> T;
    while(T--)
    {
        long long int N, K;
        cin>>N>>K;
        long long int arr[N];
        for(long long i=0; i<N; i++)
        {
            cin>>arr[i];
        }

        long long int max = INT_MIN;
        long long int dp[N];

        for(int i=N-1; i>=0; i--)
        {
            if((i+K)>=N)
            {
                dp[i] = arr[i];
            }

            else
            {
                dp[i] = (dp[i+K]+ arr[i]);
            }
        }

        for(int k=0; k<N; k++)
        {
            if (dp[k]>max)
            {
                max = dp[k];
            }
        }
        cout<<max<<endl;
    }
    getchar();
    return 0;
}