Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВот мой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. Ну, и кто будет ms->m инициализировать? Там по-прежнему мусор :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 04:19 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskySashaMercuryВот мой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. Ну, и кто будет ms->m инициализировать? Там по-прежнему мусор :) Саша балда. Извините, глупая ошибка : ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 04:26 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
На ваш взгляд, такая функция имеет место быть в данной программе ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Сделал вывод: Для любой структуры данных (особенно если в ней присутствуют объекты на которые в дальнейшем планируется выделять память) нужно писать отдельный конструктор. Этот вывод правильный ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 08:35 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЭтот вывод правильный ?правильный, в целом, и ведёт он к отказу от С и переходу к С++ ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 09:27 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercuryСделал вывод: Для любой структуры данных (особенно если в ней присутствуют объекты на которые в дальнейшем планируется выделять память) нужно писать отдельный конструктор. Этот вывод правильный ? В одной из серий мульт-сериала Симпсоны, Нельсон бросает камень в белку. Белка убегает. Нельсон записывает в блокнотик вывод - "Белки не любят камни". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 12:43 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВчера я решил заняться чем-нибудь интересным http://cpip.sourceforge.net/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 14:13 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Хорошо что этот вывод правильный :) Изучения языка, подобно пониманию окружающего мира ребенком, потому даже такой вывод кажется большим. Часть программы написал около 5 часов назад, но мне не нравится эта функция, сначала переделаю а потом покажу :) Я нашёл отличную статью на выходные C: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 14:45 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Кстати пришлось и мне решать подобного рода вопросы. http://rsdn.ru/forum/com/5693941 MSDN wrapper classes Так вот при генерации кода для *.idl была проблема поместить перед определениями интерфейсов все необходимые "нестандартные" определения структур, ... /UDT/. Так вот алгоритм находил в *.h Microsoft определение какого-либо "нестандартного" типа /не забываем о том, что automation выставляет свои правила использования типов данных .../ и если к примеру это было определение какой-либо структуры, то нужно было пройтись по определениям полей и если встречался "нестандартный" тип, то вытащить из *.h для него определение ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 16:48 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
mayton"Белки не любят камни".что, в целом, недалеко от истины, тем не менее ;-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 17:57 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercury, обрати внимание на Код: plaintext 1. задай себе вопрос: для ms->m я выделил память, чтобы ее переаллоцировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2014, 23:59 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковSashaMercury, обрати внимание на Код: plaintext 1. задай себе вопрос: для ms->m я выделил память, чтобы ее переаллоцировать? Нет, не выделял. А разве в спецификации realloc говорится о том, что нельзя реаллоцировать память, если память ещё не выделена, а указатель проинициализирован в NULL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 01:47 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Насколько я понял realloc перераспределяет память для блока, с новой длиной. Функция возвращает указатель на блок с новой длиной (поэтому адрес может не совпадать с тем, по которому происходит перераспределение памяти, потому присвоение обязательно, fe p=(T)realloc(p,size), нельзя просто realloc(p,size)). Исходя из того что я понимаю(и если я ничего не упустил в стандарте, сейчас проверю), достаточно того, чтобы указатель бы проинициализирован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 01:52 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
ISO/IEC 9899:201x7.22.3.5 The realloc function Synopsis 1 #include <stdlib.h> void *realloc(void *ptr, size_t size); Description 2 The realloc function deallocates the old object pointed to by ptr and returns a pointer to a new object that has the size specified by size. The contents of the new object shall be the same as that of the old object prior to deallocation, up to the lesser of the new and old sizes. Any bytes in the new object beyond the size of the old object have indeterminate values. 3 Ifptr is a null pointer, the realloc function behaves like the malloc function for the specified size. Otherwise, if ptr does not match a pointer earlier returned by a memory management function, or if the space has been deallocated by a call to the free or realloc function, the behavior is undefined. If memory for the new object cannot be allocated, the old object is not deallocated and its value is unchanged. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 01:54 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Кстати, скорее всего malloc частный случай realloc, и такое в Си встречается, пока не решил как к этому отношусь, хорошо или плохо. С одной стороны нужно помнить больше функций, происходит дублирование, увеличение общего объёма кода (при подключении библиотек), а с другой стороны скорее всего плюсы какие-то есть, просто я их не вижу в силу своей малой грамотности в теории языков программирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 02:04 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что я ошибаюсь при работе с массивом указателей list_args. Первым делом Код: plaintext 1. Затем, добавлю в цикле аргументы, вот что происходит в цикле Код: plaintext 1. 2. 3. 4. 5. 6. 7. Подскажите пожалуйста, правильный ли порядок действий ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 03:20 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Вроде бы всё понимаю, у меня есть массив указателей, сначала нужно установить в NULL его голову, затем в цикле реаллоцировать в зависимости от текущего количества строк, новую реаллоцированную строку нужно установить в NULL, и следующим действием выделить на неё столько памяти, сколько нужно. Но где-то у меня ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 03:23 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Почему у вас выделенное ниже - разные выражения? Код: plaintext 1. После вызова realloc, cur->rep_list становится невалидным. И последующий вызов будет работать с мусором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 03:34 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
ааа..Не знаю почему я вообще так написал и не заметил, сейчас исправлю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 03:41 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, спасибо, заработало C : Ну как я мог такое не проверить.. Уже все варианты продумал, прочитал статью про realloc, думал что неправильно работаю с памятью, а ошибка оказалась обычной опечаткой из-за неудачного именования полей структуры, и моей невнимательности ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 03:45 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Вот такая функция получилась. 1 вариант. Она будет запускаться как только программа поиска встретит токен "#define" Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. Конечно, часть функции касаемо записи в идентификаторы имени макроподстановки и её параметров лучше бы вынести в отдельную функцию, что я и пытался сделать, но неудачно. Если использовать такую подфункцию то ничего не происходит Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Подумаю почему. Ну и скорее всего придётся передать эту функцию с точки зрения логики, мне кажется я получаю нужные строки далеко не оптимально. Вы согласны ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 06:30 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Нет. Реализация плохая. А могу ли я считать по маске "%[a-zA-Z_]%[0-9]" в один массив ? Подумал, если встречаю токен "#define" то считывать сразу всю строку до '\n' и с ней уже работать. Пока что общий алгоритм поиска выглядит так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 09:18 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Основные моменты решил. У меня остался один вопрос, подскажите пожалуйста. У нас есть такой участок кода. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Допустим индикатор положения файла указывает на q, то есть в temp запишется q. Как будет проинициализирован next_char ?(между q и struct есть пробел) #define q struct b ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 03:14 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
У меня постоянно инициализируется s, сколько бы пробелов не было между struct и q. А если выше я сделаю ungetc(' ',in), то всё хорошо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 03:16 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Как я понял, первое считывание по маске даёт такой эффект (установка указателя в файле после всех пробелов), хотя по этому примеру из стандарта, я этого не ожидал. ISO/IEC 9899:201xEXAMPLE 2 The call: #include <stdio.h> Код: plaintext 1. 2. 3. with input: 56789 0123 56a72 will assign to i the value 56 and to x the value 789.0, will skip 0123, and will assign to name the sequence 56\0. The next character read from the input stream will be a. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 04:36 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38786544&tid=2019118]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
76ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 18ms |
| total: | 217ms |

| 0 / 0 |
