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

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

Войти
Регистрация
Восстановить пароль
 
Puhnastik
0 / 0 / 0
Регистрация: 12.11.2013
Сообщений: 5
#1

Поменять строки местами - C++

06.12.2013, 23:56. Просмотров 218. Ответов 1
Метки нет (Все метки)

Меня интересует такой вопрос, вот это неправильный отрывок кода.
C++
1
2
3
4
5
6
7
8
...
while (a!=NULL)
 {
     puts(a);
     a=strtok(NULL," ");
     if (strlen(a)==5) kolvo++;
 }
...
А если я поменяю местами строчки, например
C++
1
2
3
4
5
6
7
8
...
while (a!=NULL)
 {
     if (strlen(a)==15) kolvo++;
     puts(a);
     a=strtok(NULL," ");
 }
...
То программа будет выполнятся правильно.
А теперь сам вопрос, почему?
Возможно это довольно-таки глупый вопрос, но я не могу понять, почему?
Вайл выполняется до тех пор, пока условие не будет выполнено и по порядку делает действия, то есть было бы логичнее если бы он сначала вывел строку st, а потом уже выполнил действия дальше
Не понимаю.
Примерно, даже вкратце, если можно, объясните пожалуйста!
Спасибо большое заранее!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2013, 23:56     Поменять строки местами
Посмотрите здесь:

C++ Поменять строки матрицы местами
Поменять местами символы строки C++
C++ Поменять местами строки матрицы
C++ Поменять местами слова строки
C++ Поменять местами строки матрицы
Поменять местами строки C++
C++ Задана матрица С(5,5). Поменять местами максимальный элемент каждой строки с первым элементом соответствующей строки
В матрице поменять 2-ю и 4-ю строки местами C++
C++ Поменять местами строки матрицы
Поменять местами строки таблицы C++
В матрице поменять строки местами C++
Поменять местами строки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1921 / 1530 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
07.12.2013, 00:39     Поменять строки местами #2
Строки
C++
1
2
if (strlen(a)==15) kolvo++;
puts(a);
можно писать в любом порядке, значение переменной a здесь не меняется(а после проверки выполняемой в while она гарантированно не равна NULL), но строка
C++
1
a=strtok(NULL," ");
должна быть именно последней, поскольку результатом вызова strtok может стать NULL, именно это значение вы передаёте strlen на последнем шаге цикла в первом варианте.
Yandex
Объявления
07.12.2013, 00:39     Поменять строки местами
Ответ Создать тему
Опции темы

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