Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> цикл while 
:(
    Опции темы
Fazil6
Дата 12.6.2006, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

ссылки пожалуйста, где это очень даже используется.

пожалуйста, утрированный пример
Код

char x = 0;
std::cout << "Continue? y/n :";
while(1)
    {
        
        std::cin >> x;
        if(x == 'n') return 0;  // break здесь не катит никак
        if(x == 'y') break;
    }
// bla-bla что-то делаем
return 0;

 
PM MAIL   Вверх
Rockie
Дата 12.6.2006, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



Цитата(Fazil6 @  12.6.2006,  20:59 Найти цитируемый пост)
пожалуйста, утрированный пример

и все же ссылки - на код, который использует подобные конструкции, то есть выходит из цикла оператором return.
 


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Xenon
Дата 12.6.2006, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Вот на тебе пример.
Код

int main ()
{
    int x=5;
    while (x>0)
    {
        x--;
        if (x==3)
        {
            return 0;
        }
    }
    cout << "Done";
    _getch();
    return 0;
}

И
Код

int main ()
{
    int x=5;
    while (x>0)
    {
        x--;
        if (x==3)
        {
            break;
        }
    }
    cout << "Done";
    _getch();
    return 0;
}

Сравни пример работы двух программ.
Если пишим return, то нас выкидывает и из цикла и из функции.   

Это сообщение отредактировал(а) XenonSk - 12.6.2006, 21:56


--------------------
user posted image  
PM MAIL   Вверх
Pete
Дата 12.6.2006, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 5.1.2006
Где: Москва

Репутация: нет
Всего: 12



Цитата(Fazil6 @  12.6.2006,  21:59 Найти цитируемый пост)
Код
...
if(x == 'n') return 0;  // break здесь не катит никак
...


Смотря, что идет после цикла. А вдруг там стоит
Код

shmctl (shm, IPC_RMID, 0);

? 


--------------------
Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу)
Не откладывай на завтра то, что можешь сделать сегодня. (Пословица)
А теперь выпишем точное значение числа пи... (Препод)
Жахни, Пендальф! © Гоблин
PM   Вверх
Fazil6
Дата 12.6.2006, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

и все же ссылки - на код, который использует подобные конструкции, то есть выходит из цикла оператором return.

какие тебе еще ссыски нужны? чем тебя пример не устраивает? или это по твоему не код? 
PM MAIL   Вверх
Rockie
Дата 12.6.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



XenonSk, мне  нужны не примеры, а ссылки. я сам вижу что такое работает:
Код
#include<iostream.h>
#include<conio.h>

int f(){
  char x = 0;
  while(1)
  {  cout << "Continue? y/n :";
     cin >> x;
     if(x == 'n') { cout<<"was n "; return 1; } 
     if(x == 'y') { cout<<"was y "; return 2; }
  }
}

int main()
{ clrscr();
  cout<<f();

  getch();
  return 0;
}

что будет если я поменяю int f() на void f()? этот цикл намертво привязан к функции, в которой он находится. вот мне и интересно, есть ли реальные листинги настоящих программ, которые такой прием используют.

Добавлено @ 22:05 
Цитата(Fazil6 @  12.6.2006,  22:03 Найти цитируемый пост)
 или это по твоему не код? 

это по-моему не ссылка 


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Xenon
Дата 12.6.2006, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Я пас smile Это невозможно. 


--------------------
user posted image  
PM MAIL   Вверх
Fazil6
Дата 12.6.2006, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

вот мне и интересно, есть ли реальные листинги настоящих программ, которые такой прием используют.

а то, что ты написал не настоящее? что значит настоящие программы?
то, что я пишу по твоему не настоящие? 
Цитата

не  нужны не примеры, а ссылки. я сам вижу что такое работает
бред. где я тебе возьму такие ссылки? 
можешь привести аргументы, почему нельзя делать так, как я привел в последнем своем примере? 
PM MAIL   Вверх
Xenon
Дата 12.6.2006, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Rockie, Ты видишь, что это работает, но по-мойму не понимаешь в чем разница работы  smile  


--------------------
user posted image  
PM MAIL   Вверх
Fazil6
Дата 12.6.2006, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



вот специально в проектах порылся. Настоящая программа.
Код

ExecNode_t ScriptExe::GetExeStatement(const std::string& name)
{
    ScriptList::iterator i = s_list.begin();
    while(i != s_list.end())
    {
        if((*i)->Name() == name) return *i;
        ++i;
    }

    throw std::runtime_error("ScriptExe::GetExeStatement запрошенная инициализация отсутствует '" + name + "'. Переменная не инициализирована операцией 'set'");

}

 
PM MAIL   Вверх
Rockie
Дата 12.6.2006, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



Цитата(Fazil6 @  12.6.2006,  22:41 Найти цитируемый пост)
можешь привести аргументы, почему нельзя делать так, как я привел в последнем своем примере? 

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


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Xenon
Дата 12.6.2006, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Rockie, Млин, разве, в конце концов, не бывает случаев, когда в цикле происходят некоторые манипуляции и в связи с каким-то условием нужно либо прервать цикл и перейти к выполнению последующих операция, либо прервать цикл и выйти из функции?
Или у тебя в цикле возникла ошибка, тебе же нужно не просто выйти из цикла, а еще и функцию завершить и передать в окружение сообщение об ошибке. КАкие еще примеры? 


--------------------
user posted image  
PM MAIL   Вверх
Rockie
Дата 12.6.2006, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



Цитата(XenonSk @  12.6.2006,  23:01 Найти цитируемый пост)
Млин, разве, в конце концов, не бывает случаев, когда в цикле происходят некоторые манипуляции и в связи с каким-то условием нужно либо прервать цикл и перейти к выполнению последующих операция, либо прервать цикл и выйти из функции?

да. пожалуй бывают, просто я с такими не встречался и для меня такой прием был неизвестен.

Добавлено @ 23:20 
то есть идея то понятна, а я втупил именно в сам вызов return из while. то есть вроде как while возвращает значение. не знал что так можно. 


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
koljan
Дата 13.6.2006, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


VIP
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 18.12.2005
Где: г.Архангельск

Репутация: нет
Всего: 1



что то мне кажется тут уже не по теме началось smile  


--------------------
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.