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


Автор: nepster 4.9.2009, 13:31
Начали изучать С++, вопрос когда написал программу в консольном виде , после выполнения действия консоль сразу закрывается. Как избежать закрытия консоля? 

Автор: azesmcar 4.9.2009, 13:34
Код

std::cin.get();


в самом конце функции main, и этот вопрос тут чуть ли не каждый день обсуждают..поищи по форуму.

Автор: nepster 4.9.2009, 13:54
Цитата

и этот вопрос тут чуть ли не каждый день обсуждают..поищи по форуму.


Мммм, а можно ссылку на тему хоть одну плз, я даже подобного не нашел. 


Код

std::cin.get();


Не пашет по любому закрывает 

Автор: andrew_121 4.9.2009, 14:01
Цитата(nepster @  4.9.2009,  13:31 Найти цитируемый пост)
Начали изучать С++, вопрос когда написал программу в консольном виде , после выполнения действия консоль сразу закрывается. Как избежать закрытия консоля?  

день сурка прям smile 

Автор: azesmcar 4.9.2009, 14:03
Цитата(nepster @  4.9.2009,  13:54 Найти цитируемый пост)
Мммм, а можно ссылку на тему хоть одну плз, я даже подобного не нашел. 

В FAQ поищи, там должно быть.

Цитата(nepster @  4.9.2009,  13:54 Найти цитируемый пост)
Не пашет по любому закрывает  

что-то не верится. Покажи код, назови компилятор.

Автор: nepster 4.9.2009, 14:08
парни у меня 1 пара была, я вижу что вы пишите и до меня не доходит! 



Код

#include "stdafx.h"
#include<iostream>
using namespace std;

void main()
{


int a;
int b;




cout<<"‚ўҐ¤ЁвҐ ЇҐаў®Ґ зЁб«® ¤«п Ї®¤бзҐв  \n";
cin>>a;

cout<<"‚ўҐ¤ЁвҐ ўв®а®Ґ зЁб«® ¤«п Ї®¤бзҐв  \n";
cin>>b;

cout<<"\n\n";

cout<<"ђҐ§г«мв в: \n";



int p=a+b;
int m=a-b;
int u=a*b;
int d=a/b;



cout<<"—Ёб«® ЇаЁЎ ў«Ґ­­®Ґ Є зЁб«г Ўг¤Ґв а ў­® "<<p<<"\n";
cout<<"—Ёб«® ўлз⥭­®Ґ Ё§ зЁб«  Ўг¤Ґв а ў­® "<<m<<"\n";
cout<<"—Ёб«® г¬­®¦Ёвм ­  зЁб«® Ўг¤Ґв а ў­® "<<u<<"\n";
cout<<"—Ёб«® ¤Ґ«Ґ­­®Ґ ­  зЁб«® Ўг¤Ґв а ў­® "<<d<<"\n";




cout<<"\n\n\n\n\n\n\n\n\n\n\n\n";


}




Вот exe файл, фот код 


П.С. только не пугайтесь 

Автор: andrew_121 4.9.2009, 14:09
Цитата(azesmcar @  4.9.2009,  13:34 Найти цитируемый пост)
в самом конце функции main

он наверное после ретёрна поставил smile 

Автор: azesmcar 4.9.2009, 14:12
nepster

Ну и где тут std::cin.get()?

Автор: nepster 4.9.2009, 14:16
Я в проге тестил, влепил его в конец самый, ну как я понял в самом конце функции main - 


Код

#include "stdafx.h"
#include<iostream>
using namespace std;

void main()

{


int a;
int b;




cout<<"‚ўҐ¤ЁвҐ ЇҐаў®Ґ зЁб«® ¤«п Ї®¤бзҐв  \n";
cin>>a;

cout<<"‚ўҐ¤ЁвҐ ўв®а®Ґ зЁб«® ¤«п Ї®¤бзҐв  \n";
cin>>b;

cout<<"\n\n";

cout<<"ђҐ§г«мв в: \n";



int p=a+b;
int m=a-b;
int u=a*b;
int d=a/b;



cout<<"—Ёб«® ЇаЁЎ ў«Ґ­­®Ґ Є зЁб«г Ўг¤Ґв а ў­® "<<p<<"\n";
cout<<"—Ёб«® ўлз⥭­®Ґ Ё§ зЁб«  Ўг¤Ґв а ў­® "<<m<<"\n";
cout<<"—Ёб«® г¬­®¦Ёвм ­  зЁб«® Ўг¤Ґв а ў­® "<<u<<"\n";
cout<<"—Ёб«® ¤Ґ«Ґ­­®Ґ ­  зЁб«® Ўг¤Ґв а ў­® "<<d<<"\n";




cout<<"\n\n\n\n\n\n\n\n\n\n\n\n";

std::cin.get()
}

Автор: azesmcar 4.9.2009, 14:20
Цитата(nepster @  4.9.2009,  14:16 Найти цитируемый пост)
Я про гроге тестил, влепил его в конец самый, ну как я понял в самом конце функции main - 

Там точки с запятой не хватает, делаю вывод что программа у тебя не компилируется. Что-то ты не то делаешь.

Автор: nepster 4.9.2009, 14:30


cout<<"\n\n\n\n\n\n\n\n\n\n\n\n";

std::cin.get();

}


По любому...  Вот уже все как вы говорили... Все равно консоль закрывается 

Автор: jhonyxakep 4.9.2009, 14:31
Код

#include "stdafx.h"
#include<iostream>
using namespace std;

void main()

{


int a;
int b;




cout<<"‚ўҐ¤ЁвҐ ЇҐаў®Ґ зЁб«® ¤«п Ї®¤бзҐв  \n";
cin>>a;

cout<<"‚ўҐ¤ЁвҐ ўв®а®Ґ зЁб«® ¤«п Ї®¤бзҐв  \n";
cin>>b;

cout<<"\n\n";

cout<<"ђҐ§г«мв в: \n";



int p=a+b;
int m=a-b;
int u=a*b;
int d=a/b;



cout<<"—Ёб«® ЇаЁЎ ў«Ґ®Ґ Є зЁб«г Ўг¤Ґв а ў® "<<p<<"\n";
cout<<"—Ёб«® ўлз⥮Ґ Ё§ зЁб«  Ўг¤Ґв а ў® "<<m<<"\n";
cout<<"—Ёб«® 㬮¦Ёвм   зЁб«® Ўг¤Ґв а ў® "<<u<<"\n";
cout<<"—Ёб«® ¤Ґ«Ґ®Ґ   зЁб«® Ўг¤Ґв а ў® "<<d<<"\n";




cout<<"\n\n\n\n\n\n\n\n\n\n\n\n";

std::cin.get();
return 0;
}


Цитата(nepster @  4.9.2009,  14:16 Найти цитируемый пост)
cout<<"\n\n\n\n\n\n\n\n\n\n\n\n";

Даже не буду спрашивать... Подскажу:
1. одного \n обычно хватает
2. вместо <<"\n" можно просто лепить <<endl

Добавлено через 1 минуту и 45 секунд
Цитата(nepster @  4.9.2009,  14:30 Найти цитируемый пост)
По любому...  Вот уже все как вы говорили... Все равно консоль закрывается 

закрывается поскольку ты не возвращяешь нулевой код (return 0;) ну и 
Цитата(jhonyxakep @  4.9.2009,  14:31 Найти цитируемый пост)
std::cin.get();

тоже нужен

Добавлено через 2 минуты и 28 секунд
Цитата(nepster @  4.9.2009,  14:30 Найти цитируемый пост)
По любому...  Вот уже все как вы говорили... Все равно консоль закрывается 

закрывается поскольку ты не возвращяешь нулевой код (return 0;) ну и 
Цитата(jhonyxakep @  4.9.2009,  14:31 Найти цитируемый пост)
std::cin.get();

тоже нужен

Автор: nepster 4.9.2009, 14:36
Ошибка    1    error C2562: main: функция типа 'void', возвращающая значение    c:\documents and settings\nepster\мои документы\visual studio 2008\projects\mer\mer\mer.cpp    24    mer

Автор: azesmcar 4.9.2009, 14:46
nepster

Перезапусти студию, возможно проблема в этом, так как ребилд у тебя не прошел, запускай программу из студии через Ctrl+F5 и тебе std::cin.get() даже не нужен.

Автор: Soah 4.9.2009, 14:46
Цитата(nepster @  4.9.2009,  13:31 Найти цитируемый пост)
Начали изучать С++


Цитата(nepster @  4.9.2009,  14:08 Найти цитируемый пост)
парни у меня 1 пара была


nepster, ну и для кого делали http://forum.vingrad.ru/forum/topic-269794/kw-faq-c++.html
http://forum.vingrad.ru/topic-205782.html

Автор: azesmcar 4.9.2009, 14:48
Цитата(jhonyxakep @  4.9.2009,  14:31 Найти цитируемый пост)
закрывается поскольку ты не возвращяешь нулевой код (return 0;) ну и 

причем тут это вообще? Зачем его возвращать? Как это вообще связано с закрытием консольного окна?

Автор: jhonyxakep 4.9.2009, 14:57
Цитата(azesmcar @  4.9.2009,  14:48 Найти цитируемый пост)
причем тут это вообще? Зачем его возвращать? Как это вообще связано с закрытием консольного окна?

о_0 может у меня компилятор особенный? Сколько раз я забывал return и пролетал из-за этого... 
Цитата(azesmcar @  4.9.2009,  14:48 Найти цитируемый пост)
Как это вообще связано с закрытием консольного окна?

Насколько я помню windows считает это за ошибку.

Автор: nepster 4.9.2009, 15:50
nepster

Перезапусти студию, возможно проблема в этом, так как ребилд у тебя не прошел, запускай программу из студии через Ctrl+F5 и тебе std::cin.get() даже не нужен.


А как мне тогда ее в exe сохранить, что бы нормально работала?  Я думаю препод не оценит Ctrl+F5. Ему экзешник нужен  

Автор: azesmcar 4.9.2009, 16:05
Цитата(nepster @  4.9.2009,  15:50 Найти цитируемый пост)
А как мне тогда ее в exe сохранить, что бы нормально работала?  Я думаю препод не оценит Ctrl+F5. Ему экзешник нужен   

В exe не сохраняют а компилируют, не знаю как у тебя там в шестой студии, давно ее не видел. F7 вроде должен создать экзешник, может ты не то запускаешь? Обрати внимание на release/debug.

Автор: ISergeyN 4.9.2009, 16:54
Добавь 
Код

std::cin.ignore();


Код

#include <iostream> 

int main(){ 
    char buff[256];
    std::cin >> buff;
    std::cout << buff << std::endl;

    std::cin.ignore(); //если закомментировать  std::cin.ignore() то std::cin.get() не сработает
    std::cin.get();
    return 0;
} 

Автор: nepster 7.9.2009, 15:04
Ответ был примерно  таким 



Код

system("pause");



Очень жаль что на форуме программистов я не нашел ответа на этот вопрос. Стоит задуматься! 

Автор: azesmcar 7.9.2009, 15:15
Цитата(nepster @  7.9.2009,  15:04 Найти цитируемый пост)
Ответ был примерно  таким 

Да, такие ответы тоже иногда попадаются. Только вот это не самый лучший ответ.

Цитата(nepster @  7.9.2009,  15:04 Найти цитируемый пост)

Очень жаль что на форуме программистов я не нашел ответа на этот вопрос. Стоит задуматься!  

Плохо искал, я же сказал, поищи по форуму, тут чуть ли не каждый день эта тема вылазит.

Автор: andrew_121 7.9.2009, 15:18
Цитата(nepster @  7.9.2009,  15:04 Найти цитируемый пост)
Очень жаль что на форуме программистов я не нашел ответа на этот вопрос.

Тебе тыщу раз ответили. Чтож, если моцг не с того "конца" думает smile 

Цитата(nepster @  7.9.2009,  15:04 Найти цитируемый пост)
Стоит задуматься!

Да да, задумайся. Особенно над своим знанием С++ smile 

Автор: nepster 7.9.2009, 16:16
andrew_121, 


Представь ты садишься играть в игру, первый раз ее видишь... Спрашиваешь какой кнопкой открыть инвентарь, каждый тебе говорит разные комбинации, каждая из которых не работает.  Когда ты пишешь, что они не работают тебя говорят зайди на сайт и читай документацию, где не чего нет...  После того, как тот кто показал тебе игру, сказал комбинацию клавиш, ты пишешь правильный ответ. А те кто писал не правильные варианты пишут, что ответ не удачен, да и еще говорят, что плохие знания С++. (у человека который его в глаза не когда не видел).
Стоит задуматься о адекватности людей которые не могут помочь, да еще и насмехаются! 


Дискуссия оф

Автор: andrew_121 7.9.2009, 16:26
nepster, 80% ответов в теме - адекватные. стоит задуматься тебе.

Автор: azesmcar 7.9.2009, 16:27
nepster

Пойми, никому неохота писать 1000 раз одно и тоже. Тебе даже ссылку дали, где все подробно описано. А теперь ты представь, к тебе каждый день подходит какой нибудь человек и спрашивает - какая из этих карт "Валет"? Ты любезно отвечаешь, потом тебе это надоедает и ты пишешь на входе в игровой зал "ВОТ ЭТА КАРТА НАЗЫВАЕТСЯ ВАЛЕТ", но и после этого вопросы не прекращаются, и ты вместо ответа посылаешь их взглянуть на дверь. И вот через некоторое время ты даже перестаешь указывать на дверь, потому что это надоедает.
Стоит подумать об адекватности спрашивающих, которые не попытались найти ответ даже после подсказок?

Автор: slavenk 24.10.2009, 21:49
Цитата


Я в проге тестил, влепил его в конец самый, ну как я понял в самом конце функции main - 


Код

#include "stdafx.h"
#include<iostream>
using namespace std;

void main()

{


int a;
int b;




cout<<"‚ўҐ¤ЁвҐ ЇҐаў®Ґ зЁб«® ¤«п Ї®¤бзҐв  \n";
cin>>a;

cout<<"‚ўҐ¤ЁвҐ ўв®а®Ґ зЁб«® ¤«п Ї®¤бзҐв  \n";
cin>>b;

cout<<"\n\n";

cout<<"ђҐ§г«мв в: \n";



int p=a+b;
int m=a-b;
int u=a*b;
int d=a/b;



cout<<"—Ёб«® ЇаЁЎ ў«Ґ­­®Ґ Є зЁб«г Ўг¤Ґв а ў­® "<<p<<"\n";
cout<<"—Ёб«® ўлз⥭­®Ґ Ё§ зЁб«  Ўг¤Ґв а ў­® "<<m<<"\n";
cout<<"—Ёб«® г¬­®¦Ёвм ­  зЁб«® Ўг¤Ґв а ў­® "<<u<<"\n";
cout<<"—Ёб«® ¤Ґ«Ґ­­®Ґ ­  зЁб«® Ўг¤Ґв а ў­® "<<d<<"\n";




cout<<"\n\n\n\n\n\n\n\n\n\n\n\n";

std::cin.get()
}


Народ, здесь же ошибка в следующем: 
вы возвращаете 0 с помощью return 0, а функция void main() так и осталась void, а надо int main()

в результате

Код

#include "stdafx.h"
#include<iostream>
using namespace std;

int main()

{


int a;
int b;




cout<<"‚ўҐ¤ЁвҐ ЇҐаў®Ґ зЁб«® ¤«п Ї®¤бзҐв  \n";
cin>>a;

cout<<"‚ўҐ¤ЁвҐ ўв®а®Ґ зЁб«® ¤«п Ї®¤бзҐв  \n";
cin>>b;

cout<<"\n\n";

cout<<"ђҐ§г«мв в: \n";



int p=a+b;
int m=a-b;
int u=a*b;
int d=a/b;



cout<<"—Ёб«® ЇаЁЎ ў«Ґ­­®Ґ Є зЁб«г Ўг¤Ґв а ў­® "<<p<<"\n";
cout<<"—Ёб«® ўлз⥭­®Ґ Ё§ зЁб«  Ўг¤Ґв а ў­® "<<m<<"\n";
cout<<"—Ёб«® г¬­®¦Ёвм ­  зЁб«® Ўг¤Ґв а ў­® "<<u<<"\n";
cout<<"—Ёб«® ¤Ґ«Ґ­­®Ґ ­  зЁб«® Ўг¤Ґв а ў­® "<<d<<"\n";




cout<<"\n\n\n\n\n\n\n\n\n\n\n\n";

std::cin.get()
}


а вообще я пишу так
Код

#include <iostream>
#include <conio.h>

int main() {
    std::cout << "hello world\n";
    getch();
    return 0;
}

Автор: A5uKa 25.10.2009, 02:06
Снова мастера Hello worlda  smile 

Вот ещё к размышлению  smile 

Цитата

But using system("PAUSE") is like burning your furniture for heat when you have a perfectly good thermostat on the wall.

Many people, instructors included, for some inexplicable reason think that making a call to the operating system and running a system command to temporarily halt a program is a good thing. Where they get this idea is beyond me. Reasons:

    *

      It's not portable. This works only on systems that have the PAUSE command at the system level, like DOS or Windows. But not Linux and most others...
    *

      It's a very expensive and resource heavy function call. It's like using a bulldozer to open your front door. It works, but the key is cleaner, easier, cheaper. What system() does is:
         1.

            suspend your program
         2.

            call the operating system
         3.

            open an operating system shell (relaunches the O/S in a sub-process)
         4.

            the O/S must now find the PAUSE command
         5.

            allocate the memory to execute the command
         6.

            execute the command and wait for a keystroke
         7.

            deallocate the memory
         8.

            exit the OS
         9.

            resume your program

      There are much cleaner ways included in the language itself that make all this unnessesary.
    *

      You must include a header you probably don't need: stdlib.h or cstdlib

It's a bad habit you'll have to break eventually anyway.

Instead, use the functions that are defined natively in C/C++ already. So what is it you're trying to do? Wait for a key to be pressed? Fine -- that's called input. So in C, use getchar() instead. In C++, how about cin.get()? All you have to do is press RETURN and your program continues



п.с.
А нас учили 
#include <stdio.h>
printf("hello, world");
И когда исчезало мы запускали через cmd >_<

Автор: stat007 25.10.2009, 11:46
В функции main() перед return 0; напишу такую строку:
Код

system("pause");

И всё будет пучком.. smile 

Автор: shuttle 26.10.2009, 12:21
запускай -  Ctrl+F5

Автор: XYZ010 26.10.2009, 21:35
Вот сто пудовый выход из этой ситуации
Код

if (!getch()) getch();

Автор: bsa 26.10.2009, 23:40
Цитата(stat007 @ 25.10.2009,  11:46)
В функции main() перед return 0; напишу такую строку:
Код

system("pause");

И всё будет пучком.. smile

Если бы ты прочел пост, который был размещен до твоего, то ты бы понял, почему это делать не стоит.

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