C++ 无需构建c++;
我不得不说我是编程新手,我正在尝试制作一个loto程序。生成7个随机数的程序。我用堆栈来存储数字 这是我的密码:C++ 无需构建c++;,c++,C++,我不得不说我是编程新手,我正在尝试制作一个loto程序。生成7个随机数的程序。我用堆栈来存储数字 这是我的密码: #include <iostream> #include <stack> #include <stdlib.h> #include <ctime> using namespace std; int main() { srand(time(NULL)); int v[7]; int i = 0; st
#include <iostream>
#include <stack>
#include <stdlib.h>
#include <ctime>
using namespace std;
int main()
{
srand(time(NULL));
int v[7];
int i = 0;
stack<int> myStack;
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++;
}
cin >> v[1];
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
srand(时间(空));
INTV[7];
int i=0;
堆叠myStack;
而(v[i] 答案是:没有任何东西可以构建,因为代码没有过时。您只是看到构建系统的一条消息,我假设它是一个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;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
srand(时间(空));
int v[8];
int i=0;
堆叠myStack;
不能进行一些简化
#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;
}
#包括
#包括
#包括
使用名称空间std;
内联无效保持窗口打开()
{
cin.clear();
cout>ch;
返回;
}
int main()
{
srand(时间(空));
constexpr int number_count{7};
堆叠myStack;
//使用for循环,因为您知道重复次数
对于(int i{0};i可能您应该显示您的Makefile,以便我们可以调试构建问题。我再说一遍,我是一个完全的初学者,如果您能为我简化,我将非常感谢您的代码在coliru中构建得很好,但是当(v[i]处指示数组超出了访问范围)
。您的数组大小为7,您正在访问8.element。虽然您的代码没有在ideone上输出任何内容,因为您之前没有初始化v,但while(v[i]cout
是一个相当强大的调试工具——你可以吗请毫不犹豫地输出消息,这样您就可以知道您的程序当前正在执行的位置。(并单击“接受答案”图标)为什么容易当您可以很难做到时,我更正了它并使用了“我只是想让它保持打开状态。还有什么别的方法可以让它保持打开状态吗?我将两个while循环都更正为for循环。@FilipTrajkoski您可以使用cin.get();
,std::getchar()
或系统(“暂停”)
保持控制台打开。根据您的操作系统,有不同的可能性。与检查双精度相比,当然可以,但同样,没有为其创建堆栈。@FilipTrajkoski I添加了一个函数以保持控制台打开。这是来自的方法。