Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > задержка выполнения программы


Автор: malaja 20.4.2009, 14:37
Привет всем!
В Borland C++ 5.0  для приостановки выполнения программы я использовала функцию  getch(), в Visual C++ 6.0 эта команда вызывает ошибку. Подскажите пожалуйста, какую функцию мне использовать, я хочу посмотреть результат выполнения программы. 

Автор: mrbrooks 20.4.2009, 14:40
Цитата(malaja @  20.4.2009,  14:37 Найти цитируемый пост)
Подскажите пожалуйста, какую функцию мне использовать, я хочу посмотреть результат выполнения программы.  

туже самую.

подключен этот хидар?
Код

#include <conio.h> 

Автор: Avaj 20.4.2009, 14:45
попробуй 

Код

cin.get();


или 

Код

_getch();


,вместо getch().

И <conio.h> подключен?



Опоздал  smile 

Автор: cupper 20.4.2009, 21:20
        код программы
        .....
        char stop;
        cin<<stop;
}

Автор: nubliK 21.4.2009, 04:51
Можно еще и так если не ошибаюсь:

Код

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{

    //тут твоя программа
    system("PAUSE");
    return EXIT_SUCCESS;
}


А кстати сразу вопрос не по теме к людям знающим (прошу прощения за это) какой вариант лучше? этот или

Код

#include <conio.h>

using namespace std;

int main()
{
    //тут твоя программа
    _getch();
    return 0;
}

Автор: zim22 21.4.2009, 06:49
Цитата(nubliK @  21.4.2009,  04:51 Найти цитируемый пост)
А кстати сразу вопрос не по теме к людям знающим (прошу прощения за это) какой вариант лучше? этот или

верхний лучше.

Автор: nubliK 21.4.2009, 08:19
а если не в лом - обясните zim22 .

Автор: zim22 21.4.2009, 08:29
Цитата(nubliK @  21.4.2009,  08:19 Найти цитируемый пост)
а если не в лом - обясните zim22 .

верхний лучше, потому что нижний хуже smile

в нижнем используется заголовок conio.h - который не поддерживается некоторыми компиляторами. в частности его функция getch()
в верхнем:
1) функция main может принимать параметры командной строки.
2) используется новый формат заголовков в стиле С++. Все имена функций/классов внесены в пространство имён std 
3) вместо system("PAUSE") вы можете написать system("del *.cpp") smile

Автор: mrbrooks 21.4.2009, 08:39
если уж прикручен #include <iostream>
то можно обойтись просто 
Код

    std::cin.get();


 smile 

Автор: zim22 21.4.2009, 09:00
Цитата(mrbrooks @  21.4.2009,  08:39 Найти цитируемый пост)
то можно обойтись просто 

эти функции отличаются поведением. getch не ждёт нажатия Enter

Автор: Helmet 21.4.2009, 09:09
zim22, а std::cin.get() разве ждет? Не верю  smile 

Автор: megabist 21.4.2009, 09:11
Зато, если не ошибаюсь, символы введёные за время работы проги (тоесть после последнего ввода, перед гетчем) автоматом упадут в гетч.
Или это я с чем-то попутал?

Автор: zim22 21.4.2009, 09:13
Цитата(Helmet @  21.4.2009,  09:09 Найти цитируемый пост)
а std::cin.get() разве ждет? Не верю

и не надо верить. проверьте.

Добавлено @ 09:15
Цитата(megabist @  21.4.2009,  09:11 Найти цитируемый пост)
Зато, если не ошибаюсь, символы введёные за время работы проги (тоесть после последнего ввода, перед гетчем) автоматом упадут в гетч.Или это я с чем-то попутал?

чтобы не падали - существуют функции очистки.
для потоков: std::cin.clear();
для scanf'ов - fflush()

Автор: mrbrooks 21.4.2009, 09:19
Цитата(zim22 @  21.4.2009,  09:00 Найти цитируемый пост)
эти функции отличаются поведением.

да и флаг им в руки. я к тому, что прикручивать функционал из cstdlib не вижу смысла если юзаем iostream.

Автор: zim22 21.4.2009, 09:23
Цитата(mrbrooks @  21.4.2009,  09:19 Найти цитируемый пост)
да и флаг им в руки. я к тому, что прикручивать функционал из cstdlib не вижу смысла если юзаем iostream.

согласен  smile 

Автор: nubliK 21.4.2009, 09:33
to mrbrooks если по существу мне верхний вариант тоже нравится больше. getch() в конце как и std::cin.get() выглядит как то топорно.

а вот товарищ zim22 убедил меня очень сильно в сторону верхнего варианта вот этим:

в нижнем используется заголовок conio.h - который не поддерживается некоторыми компиляторами. в частности его функция getch()
в верхнем:
1) функция main может принимать параметры командной строки.
2) используется новый формат заголовков в стиле С++. Все имена функций/классов внесены в пространство имён std 
3) вместо system("PAUSE") вы можете написать system("del *.cpp") smile 


мне кажется это правильный подход к делу.

Зачем поощрять ненужную безалаберность в коде?

Автор: mrbrooks 21.4.2009, 09:49
Цитата(nubliK @  21.4.2009,  09:33 Найти цитируемый пост)
мне кажется это правильный подход к делу.

когда кажется - то крестятся.


Цитата(nubliK @  21.4.2009,  09:33 Найти цитируемый пост)
Зачем поощрять ненужную безалаберность в коде? 

в чем *лять безалаберность гений?

Автор: nubliK 21.4.2009, 09:56
ну я понял понял - ты крутой программист mrbrooks 

Автор: zim22 21.4.2009, 09:58
nubliK, не, реально, объясни, что ты понимаешь под безалаберностью smile

Автор: mrbrooks 21.4.2009, 09:59
Цитата(nubliK @  21.4.2009,  09:56 Найти цитируемый пост)
ну я понял понял - ты крутой программист mrbrooks

самый, что ни наесть, гламурный быдлокодер.

Автор: zim22 21.4.2009, 10:01
Цитата(mrbrooks @  21.4.2009,  09:59 Найти цитируемый пост)
самый, что ни наесть, гламурный быдлокодер.

Код

change("гоп-стоп кодер", "гламурный быдлокодер");

 smile 

Автор: mrbrooks 21.4.2009, 10:26
Цитата(zim22 @  21.4.2009,  10:01 Найти цитируемый пост)

change("гоп-стоп кодер", "гламурный быдлокодер");


 smile 
у меня эта должность и так "вконтакте" написана  smile  

Автор: Helmet 21.4.2009, 15:01
Цитата(zim22 @  21.4.2009,  09:13 Найти цитируемый пост)
и не надо верить. проверьте.

Сорри. В консоли когда что-то делаю, всегде cin.get() ставлю и думал что у него поведение getch(). Оказывается всегда enter жал  smile 

Автор: nubliK 22.4.2009, 00:44
Код

    cin.get();   //понятно что поток ждет символы и/или нажатие клавиши enter но не понятно для чего? мне кажется это безалаберно
    return 0;   //может потоки будем использовать по назначению?
}


Код

    system("PAUSE");              //понятно что программа перешла в режим ожидания действия и понятно для чего. красиво
    return EXIT_SUCCESS
}

///могу и ошибаться. если что поправьте



не хотел обидеть mrbrooks - пойми это мое мнение.
минус моего выражения в том что если второй код данного сообщения компилить под дргой системой - отличной от Win то ничего не будет.

тогда cin.get() это единственный выход согласен.

Автор: malaja 22.4.2009, 15:20
Привет всем!
Спасибо за помощь AVAJ.
Всё работает с помощью cin.get(), <conio.h> был подключен сразу.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)