Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
//Александр
6 / 6 / 0
Регистрация: 15.04.2010
Сообщений: 151
#1

теория - C++

30.09.2010, 13:55. Просмотров 1761. Ответов 32
Метки нет (Все метки)

Добрый день!!! срочно нужины 2 примера :
1)чтобы нельзя было заменить цыкл for на while
и еще один пример когда есть цыкл while но его нельзя заменить на for?? помогите плиз сижу на экзамене
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2010, 13:55     теория
Посмотрите здесь:

C++ теория
теория C++
C++ Теория
Теория C++
теория C++
Массивы теория C++
C++ Теория по С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4951 / 3027 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
30.09.2010, 17:30     теория #21
ooki2day,
Разве пример корректен? Если не ошибаюсь, в форе увеличивается счётчик и проверяется условие не в конце нынешней итерации, а в начале новой (за исключением первой итерации).
Таким образом, эквивалентом приведённого вами for будет:

C
1
2
3
4
5
6
7
8
9
int i = -1;
 
while (i < 1)
{
    i++;
    
    if (i == 0)
        continue;
}
И он прекрасно отработает.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
30.09.2010, 17:31     теория #22
silent_1991, Да согласен. Но мне кажется это все же отличие while от for. Хотя могу ошибаться.
silent_1991
Эксперт С++
4951 / 3027 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
30.09.2010, 17:34     теория #23
Lavroff,
В вашем примере, кстати, тоже надо было принициализировать i перед while минус единицей...
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
30.09.2010, 17:36     теория #24
silent_1991, А зачем -1? Чем ноль хуже в данном случае?
Ну чтобы верно отработало - да. Но это ведь не цель)
silent_1991
Эксперт С++
4951 / 3027 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
30.09.2010, 17:38     теория #25
Lavroff,
Ну хотя да, в данном случае не важно... Ибо условие i > 1; Но сами циклы не эквивалентны, ибо в while i на первой же итерации станет равняться 1, а в for i всё же начнёт с 0...
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
30.09.2010, 17:43     теория #26
silent_1991, Насчет этого согласен.
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
30.09.2010, 18:20     теория #27
Цитата Сообщение от silent_1991 Посмотреть сообщение
ooki2day,
Разве пример корректен?
Конечно не корректен. Там допущена очень грубая ошибка, о которой вы, собственно, и написали.

ooki2day, как может такой "преподаватель" принимать экзамен?
silent_1991
Эксперт С++
4951 / 3027 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
30.09.2010, 18:22     теория #28
M128K145,
Видимо, так же, как и задавать на этом самом экзамене подобные вопросы...
ooki2day
12 / 12 / 0
Регистрация: 23.10.2008
Сообщений: 281
30.09.2010, 19:25     теория #29
M128K145, что за грубая ошибка?я имел в виду то, что перед i++ будет тело цикла.допустим,массив считать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
i=5;
while(i<10)
{
   mas1[i]=mas2[i];
   if(i==8)
      continue;
   i++;
}
 
for(i=5;i<10;i++)
{
   mas1[i]=mas2[i];
   if(i==8)
      continue;
}
допустим,надо этот элемент исключить,а остальные записать.разве for не запишет все,кроме одного?
silent_1991
Эксперт С++
4951 / 3027 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
30.09.2010, 19:31     теория #30
ooki2day,
Прочитайте мой пост №21 в этой теме.
ooki2day
12 / 12 / 0
Регистрация: 23.10.2008
Сообщений: 281
30.09.2010, 19:42     теория #31
silent_1991, да!понял ошибку!!!хахахах)зато сессию закрыл)обязательно скажу ему про это)))
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
30.09.2010, 19:45     теория #32
Цитата Сообщение от ooki2day Посмотреть сообщение
допустим,надо этот элемент исключить,а остальные записать.разве for не запишет все,кроме одного?
В коде заметно явное не понимание работы этих циклов.
Вы хотите исключить девятый элемент. Пример фора написан верно, а вот с вайлом проблемы.
Дело в том, что когда в теле for встретился continue, то происходит переход на новую итерацию.
В цикле while должно происходить тоже самое, но это грубая ошибка программиста, который не обеспечивает переход на новую итерацию, не инкрементируя индекс, но начинаю новый проход тела, таким образом новая итерация не начинается, а повторяется старая. Вот правильная реализация этого действия теория
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2010, 23:06     теория
Еще ссылки по теме:

Теория по С++ C++
C++ Теория графики
Теория по С++ C++
C++ Теория С++ (профан)
C++ 1-е - код , 2-е теория

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ooki2day
12 / 12 / 0
Регистрация: 23.10.2008
Сообщений: 281
30.09.2010, 23:06     теория #33
M128K145, да-да,я понял уже,написал же)))просто на нервах был)))
Yandex
Объявления
30.09.2010, 23:06     теория
Ответ Создать тему
Опции темы

Текущее время: 01:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru