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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2013, 19:01   #1
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию Конмсольное приложение

код:
Код:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
	char lon[10],lan[10],a;
	step1:
	gets(lon);
	gets(lan);
	if(!strcmp(lon,lan))
		cout << "true\n";
	else
		cout << "false\n";

	cout <<"whant to resume(Y/N)?\n";
	cin >> a;
	if (a=='y'||a=='Y')
		goto step1;

	return 0;
}
почему при возвращении к степ1 после гото , обрабатывается только один гетс ?
MIKE11IPME вне форума Ответить с цитированием
Старый 09.02.2013, 19:15   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

По тому, что за goto надо на костре сжигать.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 09.02.2013, 19:18   #3
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

Увы под рукой ничего другого нет
знаем что гото не очень хорошо использовать , но тут как бы его плохость заключается лишь если его много раз применять(код сложно будет читать)

ладно пойду перепишу c do while

Последний раз редактировалось Stilet; 09.02.2013 в 19:34.
MIKE11IPME вне форума Ответить с цитированием
Старый 09.02.2013, 19:21   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от ROD Посмотреть сообщение
По тому, что за goto надо на костре сжигать.
... как еретика !
Лучше использовать конструкцию
Код:
do
{
...
}while(a == "y" || a == "Y");
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 09.02.2013, 19:25   #5
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

Код:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
	char lon[10],lan[10],a;
	do {
	gets(lon);
	gets(lan);
	if(!strcmp(lon,lan))
		cout << "true\n";
	else
		cout << "false\n";

	cout <<"whant to resume(Y/N)?\n";
	cin >> a;
	} while (a=='y'||a=='Y');


	return 0;
}
и все тоже самое , мб ткнете в ошибку , без предвзятого отношения ?

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
... как еретика !
Лучше использовать конструкцию
Код:
do
{
...
}while(a == "y" || a == "Y");
[bcc32 Error] File1.cpp(18): E2034 Cannot convert 'char' to 'const char *'

Последний раз редактировалось Stilet; 09.02.2013 в 19:35.
MIKE11IPME вне форума Ответить с цитированием
Старый 09.02.2013, 19:45   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Cannot convert 'char' to 'const char *'
Правильно. "" предполагают наличие строки, а символ со строкой так в Си не сравнивают.

Цитата:
while (a=='y'||a=='Y');
Правильный вариант.

Кстати для ввода испоьзуй cin>>lon; cin>>lan;
У меня твой пример в целом работает если их использовать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.02.2013, 19:46   #7
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию


втупую улетает один гетс и выполняется сразу второй
MIKE11IPME вне форума Ответить с цитированием
Старый 09.02.2013, 19:48   #8
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Правильно. "" предполагают наличие строки, а символ со строкой так в Си не сравнивают.


Правильный вариант.

Кстати для ввода испоьзуй cin>>lon; cin>>lan;
У меня твой пример в целом работает если их использовать.
Это конечно прекрасно , но что же насчет этого гетс ?
насколько успел почитать от гетс уже можно сказать отказались и оставили только для совместимости со старыми приложениями
MIKE11IPME вне форума Ответить с цитированием
Старый 09.02.2013, 19:57   #9
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Правильно. "" предполагают наличие строки, а символ со строкой так в Си не сравнивают.


Правильный вариант.

Кстати для ввода испоьзуй cin>>lon; cin>>lan;
У меня твой пример в целом работает если их использовать.
С cin работает - это я уже проверял , но вот чтоб с пробелами вводить строку увы не подходят

кстати при использовании гетс/син наши данные в нашей строке очищаются и по новой записываются или записываются поверх имеющихся ?

П.С.:перезаписываются по крайней мере в син

Последний раз редактировалось MIKE11IPME; 09.02.2013 в 20:08.
MIKE11IPME вне форума Ответить с цитированием
Старый 09.02.2013, 20:13   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Правильно. "" предполагают наличие строки, а символ со строкой так в Си не сравнивают.
Да, это я по запарке. привык со Стринглистом работать.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приложение ALEX777a Фриланс 5 14.03.2012 13:27
Приложение netbeans pten41k Общие вопросы по Java, Java SE, Kotlin 1 01.02.2012 22:57
Не закрывается приложение. the_deer_one C# (си шарп) 5 08.06.2011 14:37
многопоточное приложение favorite Общие вопросы Delphi 0 26.05.2011 19:47
Задача:в вижуал с++ Разработать приложение-сервер и приложение (смотри дальше сообщение) Мила777 Фриланс 2 21.10.2009 11:05