Другие языки программирования и технологии

C++ и консоль

помогите разобраться, как задержать консоль с результатом выполнения программы?
если вконце вставить 2 раза "cin.get(); " - идет задержка. вопрос - зачем нужно дублирование?
IDE - VC2010

//tenirovo4ka
#include <iostream>
#include <math.h>

int main()
{
using namespace std;
float r, x, y, z;
cout<<"Enter: x, y, z;"<< endl;
cin>>x>>y>>z;
r=sqrt(pow(x, 2)+pow(y,2)+pow(z, 2));
cout<<"r="<
std::cin.get();
std::cin.get(); std::cin.get(); // после нажатия на Enter в потоке остаются символ \n - что соответствует переходу на другую строку. cin.get(), которая ждёт очередной символ из потока, с радостью его принимает. Это является причиной того, что программа продолжает своё выполнение без задержки.

// Пример - доказательство
#include <iostream>
using namespace std;
int main() {
    int x;
    cout << "x?.. "; cin >> x;
    int ch = cin.get();
    cout << "LF = " << ch << endl; // 10 - соответствует LF (Line Feed - перевод строки или \n)
    cin.get(); // Далее пусто и программа ожидает ввода символа
    return 0;
}

fflush(stdin); std::cin.get(); // А вообще в потоке может быть символов сколько угодно, поэтому надёжнее будет его очистить функцией fflush()

system("pause"); // С таким же успехом можно нажать на Ctrl + F5, что и надо делать
getch(); // требует #include <cstdio>
_getch(); // требует #include <cstdio>
Агабек Фейзуллаев
Агабек Фейзуллаев
78 668
Лучший ответ
В паскале был такой прикольчик тоже - если написать 1 раз, то нифига оно не работало. Но не всегда, иногда таки работало. Не знаю, с чем связано.
Павел Смирнов Не работало после read. Опять же из-за символа конца строки. Первый readln после read считывал конец строки, второй ждал ввода нового конца строки.
Вроде потому что в конце ввода остается знак перевода строки, который считывается первым get.
Собственно, ничто тебе не мешает сделать
int a;
cin>>a;//что-то считываем
a=cin.get();
int b=cin.get();
cout << a << " " << b;
и посмотреть, что именно считывают два get-а.
Федор Балашов
Федор Балашов
71 251
Запускай с консоли, или добавь Ожидание нажатия клавиши.. .

Не помню - дамно это было
Aleksandr Drobka
Aleksandr Drobka
1 583
плохая //tenirovo4ka мясо в коде устраивать. с чего начинается РОДИНА
system("pause");
Aleksandr Drobka В батнике то 100% - pause, катит...