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

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

Восстановить пароль Регистрация
 
Puhnastik
0 / 0 / 0
Регистрация: 12.11.2013
Сообщений: 5
06.12.2013, 23:56     Поменять строки местами #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++
Поменять местами 2 половины строки // С++ C++
поменять строки местами C++
C++ Строки. Поменять местами слова
Поменять местами строки C++
C++ Задана матрица С(5,5). Поменять местами максимальный элемент каждой строки с первым элементом соответствующей строки
поменять местами строки и столбцы C++
В матрице поменять 2-ю и 4-ю строки местами C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
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     Поменять строки местами
Ответ Создать тему
Опции темы

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