Почему возникает ошибка с delay() в моей программе на C++?

Я программирую простую программу для случайной генерации букв и вывода их на экран при повторении, пока вы не закроете окно. Программа, кажется, работает, но другие ошибки в стороне. Я попытался добавить функцию 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.


person Cipher Visor    schedule 14.04.2020    source источник
comment
srand(time(NULL)); следует выполнять один раз во время выполнения программы. Теперь вы делаете это каждую итерацию. Переместите его из цикла и сделайте это первым делом в main. Еще лучше использовать <random>   -  person Ted Lyngmo    schedule 14.04.2020
comment
Несмотря на то, что вы включили библиотеку dos.h — даже если у вас есть заголовок dos.h и файл скомпилирован, у вас есть еще одно препятствие — связывание. Библиотека времени выполнения вашего компилятора должна знать, что такое delay.   -  person PaulMcKenzie    schedule 14.04.2020
comment
#include <dos.h> - это какая-то серьезно устаревшая система, с которой вы там работаете. Черт. Может, обновиться до текущего тысячелетия?   -  person Jesper Juhl    schedule 14.04.2020
comment
Вам не нужно / не следует редактировать свой вопрос, чтобы добавить РЕШЕНО, это не для вопросов. Ответы идут к ответам и если ваш вопрос оказался не вопросом вы можете его удалить   -  person 463035818_is_not_a_number    schedule 14.04.2020
comment
это было помечено как дубликат, поэтому вам не нужно ничего делать. Возможно, перезагрузите страницу, чтобы увидеть, что система уже пометила вопрос как дубликат.   -  person 463035818_is_not_a_number    schedule 14.04.2020
comment
Sleep() — еще один непортативный способ сна. Используйте std::this_thread::sleep_for()   -  person Ted Lyngmo    schedule 14.04.2020
comment
Кроме того, const char *alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; ...if (alphanum >= 1 && alphanum <= 26) { std::cout << alpha[alphanum-1]; вам не нужен этот бесконечный набор if утверждений.   -  person PaulMcKenzie    schedule 14.04.2020
comment
DOS — операционная система 1980-х годов. Если вы видите ссылки на DOS в примере, по крайней мере, вы должны остановиться и задаться вопросом, насколько «ругательным» является удаление старого примера.   -  person user4581301    schedule 14.04.2020
comment
Затем вы получаете много веб-сайтов с всплывающими вирусами, зная, что новички в C++, которые используют старые примеры C, пойдут на зараженный сайт, чтобы загрузить dos.h (поскольку ни один из последних компиляторов не имеет этого заголовка). Это не просто старый заголовок, это может быть опасно.   -  person PaulMcKenzie    schedule 14.04.2020
comment
Опасность... мое второе имя. пользовательская опасность 4581301 к вашим услугам.   -  person user4581301    schedule 14.04.2020
comment
Если codeblocks поддерживает c++14, вы можете посмотреть это для переносимой и лучшей рандомизированной версии.   -  person Ted Lyngmo    schedule 14.04.2020