没有什么可以构建c ++

时间:2016-01-06 17:44:36

标签: c++

我不得不说我是编程初学者,而且我正试图制作一个乐透计划。一个生成7个随机数的程序。我使用堆栈存储数字。

这是我的代码:

Info: Nothing to build for loto3

当我建造它时说它没关系。但是当我尝试运行它时,它打印unnest,只是一秒钟然后消失,然后控制台保持空白,但程序仍在运行,因为我可以终止它。

我正在使用gcc,当我尝试编译一个基本的hello world程序时,它运行没有问题。

2 个答案:

答案 0 :(得分:0)

答案是:由于代码没有过时,因此无法构建任何内容。您刚刚看到来自构建系统的消息,我假设它是一个IDE(Eclipse?MS工具?哪一个?)

线索是您的程序正在执行,因为您可以终止它。你实际上有一些错误 - v数组的大小应该是8而不是7.另一个错误是main的最后一行:cin >> v[1]。如果您没有无限循环,程序可能会等待您输入内容(但您不知道,因为该程序没有告诉您它正在等待输入。)

此外,从具有void以外的返回类型的函数返回值是正确的形式。 main()返回一个整数值,因此您还想添加return 0作为最后一个语句。当然,您可以返回任何您喜欢的整数值,但约定认为返回零表示执行成功(没有错误。)

有些纠正的代码:

#include <iostream>
#include <stack>
#include <stdlib.h>
#include <ctime>
using namespace std;

int main()
{
  srand(time(NULL));

  int v[8];
  int i = 0;
  stack<int> myStack;

  cout << "Seeding random values..." << endl;

  while (v[i]< v[7])
  {
    v[i] = 1+(rand()% 38);
    i++;
    myStack.push(v[i]);
  }

  int j = 1;

  while(!myStack.empty())
  {
    cout << j << " broj je: " << myStack.top() << endl;
    myStack.pop();
    j++;
  }

  cout << "Enter a value for v[1]: ";
  cin >> v[1];

  return 0;
}

如果在第一个while循环中有一个无限循环,你将永远不会看到&#34;输入v [1]&#34;的值。提示。否则,您将收到输入值的提示,并且您的程序应该正确终止。

答案 1 :(得分:0)

一些简化。

#include <iostream>
#include <stack>
#include <ctime>
using namespace std;

inline void keep_window_open()
{
    cin.clear();
    cout << "Please enter a character to exit\n";
    char ch;
    cin >> ch;
    return;
}

int main()
{
    srand(time(NULL));

    constexpr int number_count {7};
    stack<int> myStack;

    // use a for loop as you know the number of repetitions
    for(int i {0}; i<number_count; ++i)
    {
        myStack.push(1+(rand()% 38)); // no need for an inbetween variable
    }

    int j {1};
    while(!myStack.empty())
    {
        /* Next line: j++ uses the post increment notation.
           It increments after each cout. */
        cout << j++ << " broj je: " << myStack.top() << endl;
        myStack.pop();
    }

    keep_window_open();

    return 0;
}

无论如何,我不会使用堆栈,因为排序很麻烦,你可能想订购输出。此外,您应该添加一种机制来检查双打。