Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2009, 17:32   #1
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию Вопрос по задаче (visual c++)

Суть задачи:
Написать программу позволяющую пользователю вводить любое количество строк текста, одну за раз.После ввода записать строку в файл.
Реализовать цикл, выход из которого происходит лишь тогда, когда пользователь нажмет ENTER не напечатав не какого текста.

Код:
Код:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

ofstream fout("c:\\Mytextfile.txt");

int check_sentence_lenth(string s);
int write_to_file(string g);

int main()
{
	string sentence;
	int a;

	do
	{
    	cout<<"Enter a sentence(press ENTER to exit): ";
    	getline(cin,sentence);

		a = check_sentence_lenth(sentence);

		if(a==-1)
			break;
		a = write_to_file(sentence);
	}
	while(a!=-1);

	fout.close();

	return 0;
}

int check_sentence_lenth(string s)
{
	if(s.size()==0)
		return -1;
	return 0;

}

int write_to_file(string g)
{
	if(!fout)
	{
		cout<<"The file can't be opened/rewrited"<<endl;
		return -1;
	}
	fout<<g<<endl;
	return 0;
}
Ошибок нет.
Вопрос заключается в следующем - почему приходится дважды нажимать ENTER для выхода ?(Это если с самого начала нечего не вводить)

Скрин первого случая:


Во втором случае, если я ввожу строку, и нажимаю ENTER то прога перескакивает на след. строку и почему-то ждет когда я введу еще строку, вместо того чтобы выйти.
И для того чтобы выйти нужна нажать еще 2 раза enter.
Как это иcправить?

Скрин второго случая:
JOFRIF вне форума Ответить с цитированием
Старый 26.07.2009, 18:02   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от JOFRIF
Вопрос заключается в следующем - почему приходится дважды нажимать ENTER для выхода ?(Это если с самого начала нечего не вводить)
Все работает как надо. Последнее сообщение (Press any key to continue) порождает среда. В самой программе такого не будет.

А второй случай воспроизвести у себя не смог. Что нужно сделать? )

ps Компилю в MinGW.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.07.2009, 18:14   #3
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Цитата:
Все работает как надо. Последнее сообщение (Press any key to continue) порождает среда. В самой программе такого не будет.
Я знаю что среда его порождает, как видите в программе я такого не печатал.
В первом случае после нажатия на клавишу интер прога должна завершаться, а она у меня перескакивает на следующею строку.

Цитата:
А второй случай воспроизвести у себя не смог. Что нужно сделать? )
Я же написал:
1)Ввести строку
2)нажать Enter
3)ввести строку
4)нажaть Enter
5)Нажать Enter
JOFRIF вне форума Ответить с цитированием
Старый 26.07.2009, 18:22   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от JOFRIF
В первом случае после нажатия на клавишу интер прога должна завершаться, а она у меня перескакивает на следующею строку.
Если вы о пустой строчке между "Enter a sentence..." и "Press any...", то этот перенос строки виден только в консоли. Он никуда не идет. Программа уже завершилась.

Второй случай все также не воспроизводится. Все корректно работает:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.07.2009, 19:17   #5
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Цитата:
Если вы о пустой строчке между "Enter a sentence..." и "Press any...", то этот перенос строки виден только в консоли. Он никуда не идет. Программа уже завершилась.

Второй случай все также не воспроизводится. Все корректно работает:
Понятно, значит дело в компиляторе.
Спасибо.

p.s А MinGW подходит для консоли?
JOFRIF вне форума Ответить с цитированием
Старый 26.07.2009, 19:18   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Попробуйте запустить программу не из среды, а просто из консоли.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.07.2009, 19:23   #7
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Попробуйте запустить программу не из среды, а просто из консоли.
А это как? (через cmd?)
JOFRIF вне форума Ответить с цитированием
Старый 26.07.2009, 19:26   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от JOFRIF
А это как? (через cmd?)
Да. Просто скомпилируйте и запустите (можно и не из консоли).
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.07.2009, 19:38   #9
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Да. Просто скомпилируйте и запустите (можно и не из консоли).
Пробовал зайти в папку где она "дебагнулось" -
C:\c++ projects\Primitivniy textoviy redaktor\Debug и тут был ексешник.
Я нажал на него открылось черное окно, (моя прога) и там все тоже самое.(таже "проблема")
Пробовал заходить в cmd и писать там путь проги вообщем там вообще пишет что тот путь что я написал не является исполняемой командой(что то в этом духе). - Можно закрывать эту тему, хотябы понял что дело в компиляторе...
Кстати этот MiniGW работает с консольными приложениями?
JOFRIF вне форума Ответить с цитированием
Старый 26.07.2009, 19:44   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Просто нужно скомпилировать релиз, а не дебаг.
Цитата:
Сообщение от JOFRIF
Кстати этот MiniGW работает с консольными приложениями?
Любой компилятор работает с консольными приложениями )
(IDE у меня Dev-C++, если что).
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по задаче Delphi Vla9240 Помощь студентам 2 15.05.2009 16:15
Вопрос по задаче VadEr Помощь студентам 3 10.05.2009 11:11
Вопрос по задаче на Паскаль Ser Паскаль, Turbo Pascal, PascalABC.NET 5 04.04.2009 20:23
Вопрос по задаче file Паскаль, Turbo Pascal, PascalABC.NET 20 03.06.2008 17:37
Вопрос по задаче Freeman12 Помощь студентам 5 26.05.2008 17:40