Visual Studio Code c ++代码可以编译,但是没有控制台输出

时间:2018-10-28 16:16:31

标签: c++ visual-studio-code

我的C ++代码可以编译并运行,但是没有输出输出到控制台。如果我在在线c ++编译器上运行此确切的代码,它将按预期工作。 发生此问题时,我开始添加与数组有关的所有内容(函数等),因此该问题可能在那里,因为在此之前一切正常。另外,启动exe时,我正在使用VNU的GNU GCC编译器和其他参数。 --rand在数组中生成随机数。 我已经尝试了几个小时,现在已经找不到答案了。

#include<iostream>
#include<iomanip>
#include<limits>
#include<stdio.h>
#include<stdlib.h>
#include <getopt.h>
#include<new>

int getNumber()
{
    int x;
    while(!(std::cin >> x)){
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        std::cout << "Wrong Input. Try Again: ";
    }
    return x;
}

void outputArray(int rows,int columns,float array[]) 
{
    int i,j;
    for (i = 0; i < rows; i++){
        for (j = 0; j < columns; j++) 
        {
            std::cout << (i+1) <<" "<< array[i*columns+j] << std::endl;
        }
    }
}

float ArrayManual(int size,float array[])
{
    int i;
    std::cout << "Manual number input!" << std::endl;
    for (i = 0; i < size; i++){
                array[i] = getNumber();
            }
    return *array;

}

float ArrayRand(int size,float array[])
{
    int i;
    std::cout << "Parameter --rand found, numbers will be random!" << std::endl;
    float max = 50;
        for (i = 0; i < size; i++){
                array[i] = max * ((float)rand()/(float)RAND_MAX) * 2 - max;
            }
        return *array;
}

bool ProcessArgs(int argc, char** argv)
{
    const char* const short_opts = "r";
    const option long_opts[] = {
            {"rand", no_argument, nullptr, 'r'},
            {nullptr, no_argument, nullptr, 0}
    };
    while (true)
    {
        const auto opt = getopt_long(argc, argv, short_opts, long_opts, nullptr);
        if (-1 == opt) {
            break;
        }
        switch (opt)
        {
        case 'r':
            return true;
            break;
        case '?': // Unrecognized option
            std::cout << "Unrecognised parameter!\n--rand/--r For random numbers.\n<none> For manual input.\n";
        break;
        default:
            return false;
            break;
        }
    }
}

int main(int argc, char **argv)
{
    std::cout << std::fixed;
    std::cout << std::setprecision(2);//set decimal point 2 0's
    bool x;
    int rows,columns;
    x=ProcessArgs(argc, argv);
    std::cout << "Enter Row count for array: ";
    rows=getNumber();
    std::cout << "Enter Column count for array: ";
    columns=getNumber();
    int size=rows*columns;//define array size
    //create new array
    float *array = new float[size];
    if(x==false) {
        *array=ArrayManual(size,array);
    } else {
        *array=ArrayRand(size,array);
    }
    outputArray(rows,columns,array);
    return 0;
}

0 个答案:

没有答案