Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.94
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
#1

Задержка - C++

29.10.2011, 19:47. Просмотров 2227. Ответов 8
Метки нет (Все метки)

Использую MinGW через NetBeans. Проблема состоит в том что такие команды как cin.get или же getchar() судя по всему игнорируются компилятором, так как в созданном исполняемом файле задержки в консоли нету: выполняется программма и консоль сразу закрывается, как будто и не писал этих команд. Команду же getch() не воспринимает консоль самого NetBeans, впрочем как и printf и scanf - попросту подвисает и выдает бред. Укажите почему так происходит или же предложите аналогичную этим команду. Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
29.10.2011, 20:23     Задержка #2
revanatar, попробуйте system("pause"); //заголовок в stdlib.h
Если юзаем плюсы stdlib можно не подключать, как я понял по практике, нэймспейс уже его содержит..
C++
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
 
int main()
{
      system("pause");
      return 0;
}
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
29.10.2011, 20:29     Задержка #3
есть выход с cin.get():
C++
1
2
std::cin.ignore();
std::cin.get();
и не нужно прибегать к си-шным функциям!
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.10.2011, 20:30     Задержка #4
или
std::cin.get();
std::cin.get();
, но лучше игнор.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
29.10.2011, 20:49     Задержка #5
Не понял. Почему не достаточно просто
C++
1
std::cin.get();
?
Почему нужен еще либо ignore либо get?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.10.2011, 20:56     Задержка #6
В буфере остался перевод строки, который изымается гетом или пропускается игнором. А потом уже ждёшь.
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
29.10.2011, 21:23  [ТС]     Задержка #7
Довольно странно, ничего подобного небыло когда использовал DevC++ который тоже на MinGW.
Ну и всетаки интересно что сделать чтобы сишные функции работали.
-=ЮрА=-
Заблокирован
Автор FAQ
29.10.2011, 21:28     Задержка #8
revanatar, вчитался в ваш код, простите сначало не так понял, может приведёте сам код для анализа. После scanf в буфере висит '\n' - он то может всё и портит, также на старых компиляторах
висит это
C++
1
2
3
string inp_str;
    cout<<"Enter input string :\n";
    getline(cin,inp_str)
; - два раза Enter жать приходится, вот...
Не зная кода не могу корректно подсказать
Жду фидбэка
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2011, 21:40     Задержка
Еще ссылки по теме:

C++ Задержка в приложении
Задержка в программе (не API) C++
C++ Задержка выполнения программы
C++ Задержка времени
Задержка командной строки C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
29.10.2011, 21:40  [ТС]     Задержка #9
Какраз
Код
cin.ignore();
cin.get();
помогли задержать.
Вопрос остается лишь в том как настроить NetBeans чтобы он воспринимал сишные функции при выполнении.

Вот код с учетом вышесказанного, задержка выполняется правильно, один раз.
Код
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <iostream>


using namespace std;

void per(int n, int *mas)
{    int t;
     for(int i=1;i<n;i+=2)
     {t=*(mas+i-1);
     *(mas+i-1)=*(mas+i);
     *(mas+i)=t;}
}

void (*p)(int,int*);

int main()
{
srand(time(0));
int a,i;
cout<<"a=";
cin>>a;
int *mas=new int [a];

p=per;

for (i=0;i<a;i++)
{*(mas+i)=rand()%50,
cout<<*(mas+i)<<" ";}
cout<<"\n\nPosle perestanovki:\n\n";

(*p)(a, mas);

for (i=0;i<a;i++)
{cout<<*(mas+i)<<" ";}

cin.ignore();
cin.get();
delete []mas;
}
Yandex
Объявления
29.10.2011, 21:40     Задержка
Ответ Создать тему
Опции темы

Текущее время: 17:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru