Я программирую простую программу для случайной генерации букв и вывода их на экран при повторении, пока вы не закроете окно. Программа, кажется, работает, но другие ошибки в стороне. Я попытался добавить функцию delay() с библиотекой dos.h в начале цикла, чтобы программа не работала на такой высокой скорости. Несмотря на то, что я включил библиотеку dos.h, я всегда получаю код ошибки E0020: идентификатор «задержка» не определен.
//Include neccessary libraries
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <dos.h>
//Only neccessary variable
int alphanum;
//Main program
int main () {
//Begin loop
while (1 > 0) {
delay(100); //Line where delay error ocuurs
//Generate random number between 1-26
srand(time(NULL));
alphanum = (rand() % 26) + 1;
//Depending on what number is generated, the corresponding letter will be output
if (alphanum == 1) {
std::cout << "A";
}
if (alphanum == 2) {
std::cout << "B";
}
if (alphanum == 3) {
std::cout << "C";
}
if (alphanum == 4) {
std::cout << "D";
}
if (alphanum == 5) {
std::cout << "E";
}
if (alphanum == 6) {
std::cout << "F";
}
if (alphanum == 7) {
std::cout << "G";
}
if (alphanum == 8) {
std::cout << "H";
}
if (alphanum == 9) {
std::cout << "I";
}
if (alphanum == 10) {
std::cout << "J";
}
if (alphanum == 11) {
std::cout << "K";
}
if (alphanum == 12) {
std::cout << "L";
}
if (alphanum == 13) {
std::cout << "M";
}
if (alphanum == 14) {
std::cout << "N";
}
if (alphanum == 15) {
std::cout << "O";
}
if (alphanum == 16) {
std::cout << "P";
}
if (alphanum == 17) {
std::cout << "Q";
}
if (alphanum == 19) {
std::cout << "R";
}
if (alphanum == 20) {
std::cout << "S";
}
if (alphanum == 21) {
std::cout << "T";
}
if (alphanum == 22) {
std::cout << "U";
}
if (alphanum == 23) {
std::cout << "V";
}
if (alphanum == 24) {
std::cout << "X";
}
if (alphanum == 25) {
std::cout << "Y";
}
if (alphanum == 26) {
std::cout << "Z";
}
}
}
РЕШЕНО: я обнаружил, что delay() не может работать в блоках кода, и переключился на Sleep() из библиотеки Windows.h.
srand(time(NULL));
следует выполнять один раз во время выполнения программы. Теперь вы делаете это каждую итерацию. Переместите его из цикла и сделайте это первым делом вmain
. Еще лучше использовать<random>
- person Ted Lyngmo   schedule 14.04.2020dos.h
и файл скомпилирован, у вас есть еще одно препятствие — связывание. Библиотека времени выполнения вашего компилятора должна знать, что такоеdelay
. - person PaulMcKenzie   schedule 14.04.2020#include <dos.h>
- это какая-то серьезно устаревшая система, с которой вы там работаете. Черт. Может, обновиться до текущего тысячелетия? - person Jesper Juhl   schedule 14.04.2020Sleep()
— еще один непортативный способ сна. Используйтеstd::this_thread::sleep_for()
- person Ted Lyngmo   schedule 14.04.2020const char *alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; ...if (alphanum >= 1 && alphanum <= 26) { std::cout << alpha[alphanum-1];
вам не нужен этот бесконечный наборif
утверждений. - person PaulMcKenzie   schedule 14.04.2020C
, пойдут на зараженный сайт, чтобы загрузитьdos.h
(поскольку ни один из последних компиляторов не имеет этого заголовка). Это не просто старый заголовок, это может быть опасно. - person PaulMcKenzie   schedule 14.04.2020