Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.151.141] |
|
Страницы: (12) « Первая ... 4 5 [6] 7 8 ... 11 12 все ( Перейти к последнему сообщению ) |
Сообщ.
#76
,
|
|
|
Цитата OpenGL @ Иными словами - вне зависимости от того, что ты восстановил, ты пойдёшь крутиться в циклах с самого начала А, не, вру - не с самого начала. Мои поздравления - переменную i ты восстановил. Осталось восстановить ещё три оставшихся переменных Добавлено bool mega_ok = true; if (_access("savedstate.dat", 4) == 0) // Проверить, нет ли сохранённого состояния от предыдущего запуска { // Если есть, восстановить и продолжиться std::ifstream inFile("savedstate.dat"); mega_ok = mega_ok && inFile.read(reinterpret_cast<char*>(&i), sizeof(i)).gcount() == sizeof(i); mega_ok = mega_ok && inFile.read(reinterpret_cast<char*>(&j), sizeof(j)).gcount() == sizeof(j); mega_ok = mega_ok && inFile.read(reinterpret_cast<char*>(&k), sizeof(k)).gcount() == sizeof(k); mega_ok = mega_ok && inFile.read(reinterpret_cast<char*>(&l), sizeof(l)).gcount() == sizeof(l); if (mega_ok && (inFile.good() || inFile.eof())) { std::cout << "The saved state is successfully restored." << std::endl; //goto resume; } else return std::cerr << "The saved state restoring error. State file is wrong." << std::endl, 1; } 1) До условия mega_ok всегда true. 2) Мы зашли в условие. Если mega_ok в нём поменялась на false - внутреннее условие у тебя уйдёт в return и до цикла не дойдёт. 3) Поскольку в других частях кода присваиваний mega_ok нет, то вышеозвученный вывод - что mega_ok всегда true - верен. |
Сообщ.
#77
,
|
|
|
Цитата OpenGL @ Как следствие, инициализация счётчиков цикла у тебя всегда будет идти по ветке false, т.е. ровно так, как в исходном цикле, если бы мы зашли в него как обычно. Иными словами - вне зависимости от того, что ты восстановил, ты пойдёшь крутиться в циклах с самого начала Вот лог - когда для всех счетчиков в файле savedstate.dat записано 3: Цитата i = 3, j = 3, k = 3, l = 3 i = 3, j = 3, k = 3, l = 4 i = 3, j = 3, k = 3, l = 5 i = 3, j = 3, k = 3, l = 6 i = 3, j = 3, k = 3, l = 7 i = 3, j = 3, k = 3, l = 8 i = 3, j = 3, k = 3, l = 9 i = 3, j = 3, k = 4, l = 4 i = 3, j = 3, k = 4, l = 5 i = 3, j = 3, k = 4, l = 6 i = 3, j = 3, k = 4, l = 7 i = 3, j = 3, k = 4, l = 8 i = 3, j = 3, k = 4, l = 9 i = 3, j = 3, k = 5, l = 5 i = 3, j = 3, k = 5, l = 6 i = 3, j = 3, k = 5, l = 7 i = 3, j = 3, k = 5, l = 8 i = 3, j = 3, k = 5, l = 9 i = 3, j = 3, k = 6, l = 6 i = 3, j = 3, k = 6, l = 7 i = 3, j = 3, k = 6, l = 8 i = 3, j = 3, k = 6, l = 9 i = 3, j = 3, k = 7, l = 7 i = 3, j = 3, k = 7, l = 8 i = 3, j = 3, k = 7, l = 9 i = 3, j = 3, k = 8, l = 8 i = 3, j = 3, k = 8, l = 9 i = 3, j = 3, k = 9, l = 9 i = 3, j = 4, k = 4, l = 4 i = 3, j = 4, k = 4, l = 5 i = 3, j = 4, k = 4, l = 6 i = 3, j = 4, k = 4, l = 7 i = 3, j = 4, k = 4, l = 8 i = 3, j = 4, k = 4, l = 9 i = 3, j = 4, k = 5, l = 5 i = 3, j = 4, k = 5, l = 6 i = 3, j = 4, k = 5, l = 7 i = 3, j = 4, k = 5, l = 8 i = 3, j = 4, k = 5, l = 9 i = 3, j = 4, k = 6, l = 6 i = 3, j = 4, k = 6, l = 7 i = 3, j = 4, k = 6, l = 8 i = 3, j = 4, k = 6, l = 9 i = 3, j = 4, k = 7, l = 7 i = 3, j = 4, k = 7, l = 8 i = 3, j = 4, k = 7, l = 9 i = 3, j = 4, k = 8, l = 8 i = 3, j = 4, k = 8, l = 9 i = 3, j = 4, k = 9, l = 9 i = 3, j = 5, k = 5, l = 5 i = 3, j = 5, k = 5, l = 6 i = 3, j = 5, k = 5, l = 7 i = 3, j = 5, k = 5, l = 8 i = 3, j = 5, k = 5, l = 9 i = 3, j = 5, k = 6, l = 6 i = 3, j = 5, k = 6, l = 7 i = 3, j = 5, k = 6, l = 8 i = 3, j = 5, k = 6, l = 9 i = 3, j = 5, k = 7, l = 7 i = 3, j = 5, k = 7, l = 8 i = 3, j = 5, k = 7, l = 9 i = 3, j = 5, k = 8, l = 8 i = 3, j = 5, k = 8, l = 9 i = 3, j = 5, k = 9, l = 9 i = 3, j = 6, k = 6, l = 6 i = 3, j = 6, k = 6, l = 7 i = 3, j = 6, k = 6, l = 8 i = 3, j = 6, k = 6, l = 9 i = 3, j = 6, k = 7, l = 7 i = 3, j = 6, k = 7, l = 8 i = 3, j = 6, k = 7, l = 9 i = 3, j = 6, k = 8, l = 8 i = 3, j = 6, k = 8, l = 9 i = 3, j = 6, k = 9, l = 9 i = 3, j = 7, k = 7, l = 7 i = 3, j = 7, k = 7, l = 8 i = 3, j = 7, k = 7, l = 9 i = 3, j = 7, k = 8, l = 8 i = 3, j = 7, k = 8, l = 9 i = 3, j = 7, k = 9, l = 9 i = 3, j = 8, k = 8, l = 8 i = 3, j = 8, k = 8, l = 9 i = 3, j = 8, k = 9, l = 9 i = 3, j = 9, k = 9, l = 9 i = 4, j = 4, k = 4, l = 4 i = 4, j = 4, k = 4, l = 5 i = 4, j = 4, k = 4, l = 6 i = 4, j = 4, k = 4, l = 7 i = 4, j = 4, k = 4, l = 8 i = 4, j = 4, k = 4, l = 9 i = 4, j = 4, k = 5, l = 5 i = 4, j = 4, k = 5, l = 6 i = 4, j = 4, k = 5, l = 7 i = 4, j = 4, k = 5, l = 8 i = 4, j = 4, k = 5, l = 9 i = 4, j = 4, k = 6, l = 6 i = 4, j = 4, k = 6, l = 7 i = 4, j = 4, k = 6, l = 8 i = 4, j = 4, k = 6, l = 9 i = 4, j = 4, k = 7, l = 7 i = 4, j = 4, k = 7, l = 8 i = 4, j = 4, k = 7, l = 9 i = 4, j = 4, k = 8, l = 8 i = 4, j = 4, k = 8, l = 9 i = 4, j = 4, k = 9, l = 9 i = 4, j = 5, k = 5, l = 5 i = 4, j = 5, k = 5, l = 6 i = 4, j = 5, k = 5, l = 7 i = 4, j = 5, k = 5, l = 8 i = 4, j = 5, k = 5, l = 9 i = 4, j = 5, k = 6, l = 6 i = 4, j = 5, k = 6, l = 7 i = 4, j = 5, k = 6, l = 8 i = 4, j = 5, k = 6, l = 9 i = 4, j = 5, k = 7, l = 7 i = 4, j = 5, k = 7, l = 8 i = 4, j = 5, k = 7, l = 9 i = 4, j = 5, k = 8, l = 8 i = 4, j = 5, k = 8, l = 9 i = 4, j = 5, k = 9, l = 9 i = 4, j = 6, k = 6, l = 6 i = 4, j = 6, k = 6, l = 7 i = 4, j = 6, k = 6, l = 8 i = 4, j = 6, k = 6, l = 9 i = 4, j = 6, k = 7, l = 7 i = 4, j = 6, k = 7, l = 8 i = 4, j = 6, k = 7, l = 9 i = 4, j = 6, k = 8, l = 8 i = 4, j = 6, k = 8, l = 9 i = 4, j = 6, k = 9, l = 9 i = 4, j = 7, k = 7, l = 7 i = 4, j = 7, k = 7, l = 8 i = 4, j = 7, k = 7, l = 9 i = 4, j = 7, k = 8, l = 8 i = 4, j = 7, k = 8, l = 9 i = 4, j = 7, k = 9, l = 9 i = 4, j = 8, k = 8, l = 8 i = 4, j = 8, k = 8, l = 9 i = 4, j = 8, k = 9, l = 9 i = 4, j = 9, k = 9, l = 9 i = 5, j = 5, k = 5, l = 5 i = 5, j = 5, k = 5, l = 6 i = 5, j = 5, k = 5, l = 7 i = 5, j = 5, k = 5, l = 8 i = 5, j = 5, k = 5, l = 9 i = 5, j = 5, k = 6, l = 6 i = 5, j = 5, k = 6, l = 7 i = 5, j = 5, k = 6, l = 8 i = 5, j = 5, k = 6, l = 9 i = 5, j = 5, k = 7, l = 7 i = 5, j = 5, k = 7, l = 8 i = 5, j = 5, k = 7, l = 9 i = 5, j = 5, k = 8, l = 8 i = 5, j = 5, k = 8, l = 9 i = 5, j = 5, k = 9, l = 9 i = 5, j = 6, k = 6, l = 6 i = 5, j = 6, k = 6, l = 7 i = 5, j = 6, k = 6, l = 8 i = 5, j = 6, k = 6, l = 9 i = 5, j = 6, k = 7, l = 7 i = 5, j = 6, k = 7, l = 8 i = 5, j = 6, k = 7, l = 9 i = 5, j = 6, k = 8, l = 8 i = 5, j = 6, k = 8, l = 9 i = 5, j = 6, k = 9, l = 9 i = 5, j = 7, k = 7, l = 7 i = 5, j = 7, k = 7, l = 8 i = 5, j = 7, k = 7, l = 9 i = 5, j = 7, k = 8, l = 8 i = 5, j = 7, k = 8, l = 9 i = 5, j = 7, k = 9, l = 9 i = 5, j = 8, k = 8, l = 8 i = 5, j = 8, k = 8, l = 9 i = 5, j = 8, k = 9, l = 9 i = 5, j = 9, k = 9, l = 9 i = 6, j = 6, k = 6, l = 6 i = 6, j = 6, k = 6, l = 7 i = 6, j = 6, k = 6, l = 8 i = 6, j = 6, k = 6, l = 9 i = 6, j = 6, k = 7, l = 7 i = 6, j = 6, k = 7, l = 8 i = 6, j = 6, k = 7, l = 9 i = 6, j = 6, k = 8, l = 8 i = 6, j = 6, k = 8, l = 9 i = 6, j = 6, k = 9, l = 9 i = 6, j = 7, k = 7, l = 7 i = 6, j = 7, k = 7, l = 8 i = 6, j = 7, k = 7, l = 9 i = 6, j = 7, k = 8, l = 8 i = 6, j = 7, k = 8, l = 9 i = 6, j = 7, k = 9, l = 9 i = 6, j = 8, k = 8, l = 8 i = 6, j = 8, k = 8, l = 9 i = 6, j = 8, k = 9, l = 9 i = 6, j = 9, k = 9, l = 9 i = 7, j = 7, k = 7, l = 7 i = 7, j = 7, k = 7, l = 8 i = 7, j = 7, k = 7, l = 9 i = 7, j = 7, k = 8, l = 8 i = 7, j = 7, k = 8, l = 9 i = 7, j = 7, k = 9, l = 9 i = 7, j = 8, k = 8, l = 8 i = 7, j = 8, k = 8, l = 9 i = 7, j = 8, k = 9, l = 9 i = 7, j = 9, k = 9, l = 9 i = 8, j = 8, k = 8, l = 8 i = 8, j = 8, k = 8, l = 9 i = 8, j = 8, k = 9, l = 9 i = 8, j = 9, k = 9, l = 9 i = 9, j = 9, k = 9, l = 9 Добавлено Цитата OpenGL @ А, не, вру - не с самого начала. Мои поздравления - переменную i ты восстановил. Осталось восстановить ещё три оставшихся переменных Короче, может хватить гадать? Давай ты мне скажешь что мне нужно сделать, что бы получить неверные данные, а не будешь говорить что у меня там происходит, даже не запустив программу? Я запускал без файла и сохранненного состояния, полученные данные кидал в мержиловку - все ок. Потом сохранял состояния и запускал, полученные данные сравнивал с исходными. Напиши сценарий что мне нужно сделать что бы получить не валидные данные? Я хз как тестить, чтоб получить то, что тыговоришь? |
Сообщ.
#78
,
|
|
|
Цитата KILLER @ Короче, может хватить гадать? Давай ты мне скажешь что мне нужно сделать, что бы получить неверные данные, а не будешь говорить что у меня там происходит, даже не запустив программу? Я запускал без файла и сохранненного состояния, полученные данные кидал в мержиловку - все ок. Запусти с состояния, где все переменные различны. |
Сообщ.
#79
,
|
|
|
Та не. Просто въехать в архитектуру коды втрое сложнее, и работает оно вдвое медленнее. А так нормально, этот вариант тоже приводился.
|
Сообщ.
#80
,
|
|
|
Цитата OpenGL @ 1) До условия mega_ok всегда true. 2) Мы зашли в условие. Если mega_ok в нём поменялась на false - внутреннее условие у тебя уйдёт в return и до цикла не дойдёт. 3) Поскольку в других частях кода присваиваний mega_ok нет, то вышеозвученный вывод - что mega_ok всегда true - верен. То есть выпадет в ошибку? Так это притензии к Qraizery, а не ко мне, я этот код не трогал. Я там только название переменной изменил, чтоб не было конфликта имен. Добавлено Цитата OpenGL @ Запусти с состояния, где все переменные различны. Ну ок, щас сохраню их. |
Сообщ.
#81
,
|
|
|
Правда, работает неправильно.
|
Сообщ.
#82
,
|
|
|
Цитата Qraizer @ Та не. Просто въехать в архитектуру коды втрое сложнее, и работает оно вдвое медленнее. А так нормально, этот вариант тоже приводился. Я выше объяснил, почему в его коде смысла в mega_ok нет никакого. Я понимаю, что он хочет сделать, и да - вердикт этому коду ты уже озвучил. |
Сообщ.
#83
,
|
|
|
А кто-нибудь помнит, как вы от define и template перешли к goto и весёлым конкурсам по написанию говнокода?
|
Сообщ.
#84
,
|
|
|
А вообще, по-моему замечательная демонстрация. Код переписан без goto, ещё не работает, но уже непонятен - я не сразу понял, что именно там не работает
|
Сообщ.
#85
,
|
|
|
Короче, предлагаю перенесли полемику о goto в подобающую ему тему. Эта как бы о другом. Не то я счас скажу, что "рекурсия – это говнокод".
Добавлено Ой, сказал |
Сообщ.
#86
,
|
|
|
KILLER, видел? Можешь ещё по той теме погулять, там и код был и срач(с твоим участием тоже)
Цитата D_KEY @ Нашел ту тему, там даже мои варианты были. Вот два из них: Цитата D_KEY @ int i = 0, j = 0, k = 0; restore(&i, &j, &k); for(; i < 10; ++i, j = i, k = j) { for (; j < 10; ++j, k = j) { for(; k < 10; ++k) { // ... } } } Цитата D_KEY @ Есть еще вариант со switch Не проверял, мог опечататься int i = 0, j = 0, k = 0; switch (restore(&i, &j, &k)) case 0: for(i = 0; i < 10; ++i) { for (j = i; j < 10; ++j) { for(k = j; k < 10; ++k) { default: // ... } } } } Сам я в той теме считал вариант с goto более понятным. |
Сообщ.
#87
,
|
|
|
Цитата D_KEY @ А кто-нибудь помнит, как вы от define и template перешли к goto и весёлым конкурсам по написанию говнокода? Это всё я Мне стало интересно - действительно ли у них в примерах и SDK много goto, и я попросил пруфов. А потом внезапно всё заверте... |
Сообщ.
#88
,
|
|
|
Цитата OpenGL @ Запусти с состояния, где все переменные различны. Вот состояния переменных в файле: // int i(3), j(4), k(5), l(6); Результаты идентичны. Скажи конкретные цифры, какие нужно задать, чтоб не работало? Добавлено Цитата OpenGL @ Код переписан без goto, ещё не работает, но уже непонятен - я не сразу понял, что именно там не работает А что именно не работает? Я просто реально понять не могу Цитата Qraizer @ Правда, работает неправильно. Qraizer, ну хоть ты объясни где не правильно? Результаты выдает идентичные, я сравниваю их в мержиловке, на которую кинул ссылку. Добавлено Цитата Qraizer @ Не то я счас скажу, что "рекурсия – это говнокод". Нет, не согласен. Иногда здорово выручает и облегчает жизнь. Хотя уйти в стековерфлоу да, легко можно, если что то проглядеть. Добавлено Цитата OpenGL @ Я выше объяснил, почему в его коде смысла в mega_ok нет никакого. Я понимаю, что он хочет сделать, и да - вердикт этому коду ты уже озвучил. Это всего лишь твои домыслы, причем пока не подтвержденные. И какой вердикт этому коду? С goto - ой какой красивый код, ну супер просто, с тернарным оператором - вердикт коду - говно? Так мне лень было вообще все переписывать и перепроектировать, я пошел по самому простому пути, оставить все как есть, и убрать только goto. |
Сообщ.
#89
,
|
|
|
Цитата KILLER @ Результаты идентичны. Скажи конкретные цифры, какие нужно задать, чтоб не работало? Собственно, на 3, 4, 5, 6 оригинальный код должен стартануть с них, а твой - с 3, 3, 3, 3. Если же у тебя разницы нет, то либо ты скопипастил сюда другой код, либо не тот вывод в дифвьювер. |
Сообщ.
#90
,
|
|
|
Цитата OpenGL @ Собственно, на 3, 4, 5, 6 оригинальный код должен стартануть с них, а твой - с 3, 3, 3, 3. Если же у тебя разницы нет, то либо ты скопипастил сюда другой код, либо не тот вывод в дифвьювер. Да, точно. Видимо при раскоментировании блока, случайно расскоментировался goto. Ладно, подумаю потом еще. |