Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Разминался, решал несложную задачу . На одном из тестов задача валится, и не могу понять почему. Привожу интуитивно понятный код. Если вы предложите оптимальный алгоритм, было бы здорово. А может быть найдете ошибку. Подскажите пожалуйста Код: 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2015, 15:32 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Как-то все сложно у тебя. Поизучай мой вариант Код: 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. Алгоритм не буду расписывать, попробуй сам догадаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2015, 17:03 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Дмитрий, в связи с выводом немного изменил ваш алгоритм. Валится на втором тесте. Мой код на 13 тесте Код: 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 02:19 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Дмитрий, мне кажется что ваш алгоритм неверный. Вы оптимизировали вывод ( но в случае вывода ERROR этот вывод будет некорректным, потому я переделал немного ваш вывод). Проверка допустимого диапазона у вас осуществляется только один раз. Мой алгоритм основан на пересечение допустимых диапазонов. Допустимый диапазон постоянно сужается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 02:35 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
SashaMercuryДмитрий, в связи с выводом немного изменил ваш алгоритм. Валится на втором тесте. Наверно из-за проверки диапазонов. Добавил первым проходом расчет диапазонов и проверку на допустимость исходник Код: 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. Принцип такой: т.к. длинный и короткий промежутки отличаются вдвое, а допуск 10%, то считаем что любой короткий * 1,5 не попадает в диапазон длинных, поэтому берем границу первый короткий * 1,5 - все что ниже короткие, выше - длинные. Дальше проверка полученных мин/макс. на допустимость отклонений. Правда тут я немного не доделал, отдельно короткие проверяю, отдельно длинные. В идеале их как-то надо совместить, т.к. реально период один. Не соображу как. Т.е. надо проверить существования какого-то Х, т.е. периода, удовлетворяющего условиям X / 2 * 0.9 > half_period_min X / 2 * 1.1 < half_period_max X * 0.9 > period_min X * 1.1 < period_max Подумай, может придумаешь как допилить эту проверку. PS Прячь большие исходники под спойлер, а то среди этих простыней текст заметить сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 09:07 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Косяк заметил в расчете мин/макс. поправленный исходник Код: 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. PS В попытках порешать уравнение на допустимость сломал мозг. Математика напрочь забыта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 09:41 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Да, это так. Либо длинный, либо короткий отрезок. Если короткий не подходит, то длинный делим на два и проверяем на соответствие 10 % погрешности. У меня сделано так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 09:41 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Поправленный исходник вновь валится на 2 тесте ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 09:44 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Вот так у меня в коде Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Вы не изменяете диапазон, верно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 09:46 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
SashaMercuryПоправленный исходник вновь валится на 2 тесте ( Нашел косяк. Надо еще корректность последовательности проверять. В середине всегда должен быть перепад. Проверяй Код: 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 09:59 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВы не изменяете диапазон, верно ? По условию время передачи одного бита константа. Зачем его динамически подбирать? Я просто нахожу мин/макс значения и проверяю разброс на соответствие допустимой погрешности, правда проверка не совсем верная. См. выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 10:04 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
2 тест, валится. На каждом сигнале нужно производить пересечение допустимых интервалов.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 10:05 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercuryВы не изменяете диапазон, верно ? По условию время передачи одного бита константа. Зачем его динамически подбирать? Я просто нахожу мин/макс значения и проверяю разброс на соответствие допустимой погрешности, правда проверка не совсем верная. См. выше. Пусть A имеет диапазон [x0;x1], B [x1;x2], C[y;x0] Совместна ли эта система ? Судя по вашему алгоритму да, но это не так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 10:07 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
SashaMercury2 тест, валится. На каждом сигнале нужно производить пересечение допустимых интервалов.. Валится с проверкой последовательности: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ? там исходные данные не показывают на которых валится? :) SashaMercuryНа каждом сигнале нужно производить пересечение допустимых интервалов.. там написано так: ТЗреальное время , в течение которого луч находился в постоянном состоянии ( – вещественное число), и зафиксированное прибором время ( – целое число) удовлетворяют неравенству (L - L') / L ≤ 0.1 . L это T или T/2, т.е. константа т.к. T константа. Следовательно проверить мин/макс достаточно. Тут еще добавляется погрешность преобразования вещественное в целое, это я не учел при проверке. Общая погрешность может быть > 0.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 10:22 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
SashaMercuryПусть A имеет диапазон [x0;x1], B [x1;x2], C[y;x0] Совместна ли эта система ? Судя по вашему алгоритму да, но это не так Не умничай, на простых примерах напиши. Уже писал что математика забыта :) Придумай как проверить существeет ли X удовлетворяющий условию X / 2 * 0.9 > half_period_min X / 2 * 1.1 < half_period_max X * 0.9 > period_min X * 1.1 < period_max Мне только подбор в голову приходит. Надо доделывать проверку. Вот последовательность на которой моя недоделанная проверка интервалов не срабатывает Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 10:34 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Вспомнил математику :) Свел диапазоны к одному знаменателю. Смысл такой: считаем что полученные мин/макс значения имеют максимальную погрешность, обратным счетом получаем точки отсчета, далее проверка что все максимумы больше всех минимумов. Т.е. есть непустой диапазон в котором находится период. Исходник Код: 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. PS При желании все можно сделать в один проход и вообще избавиться от предварительного чтения входных данных, т.е. читать по одному и сразу обрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 12:39 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Дмитрий, программа снова не проходит тест 2.. На каких данных не показывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 13:01 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
SashaMercuryДмитрий, программа снова не проходит тест 2.. На каких данных не показывает Сломал весь мозг в догадках что еще не так. На всякий случай добавил еще проверку обрывов, т.е. то что на середине периода ряд закончился. Зарегался на том сайте чтоб сюда не постить все мои потуги. Оказалось все просто: я перевод строки забыл писать в output.txt (fputs() это не делает), все ответы были в строчку Правильный исходник Код: 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 14:00 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Но если все ответы были в строчку, то почему проходил 1 тест ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 07:07 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Вы уверены что нельзя обойтись одной оценкой ? На полупериод, например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 07:26 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНо если все ответы были в строчку, то почему проходил 1 тест ? Наверно там проверка результата по совпадению всех символов ответа без учета "хвоста", т.е. при ответе "110" подходит любой: "110ERROR", "11012" и т.п. SashaMercuryВы уверены что нельзя обойтись одной оценкой ? На полупериод, например Вчера сомневался. Ниже доказательство что можно. Сообразил как мои уравнения 17259000 склеить (я изначально больше/меньше наоборот написал). Вот проверка на существование периода длиной X Код: plaintext 1. 2. 3. 4. преобразуем в Код: plaintext 1. выкидываем X и получаем формулу проверки Код: plaintext или в общем виде так Код: plaintext 1. Т.е. можно сразу привести длинные к коротким или наоборот. Проверь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 10:01 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Изучай. Версия 2.0. Код: 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. 69. 70. 71. 72. Убрал лишнее. Сделал весь расчет в один проход без буферизации ввода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 12:56 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВы .... Оффтоп, но не могу не написать. Мне неприятно когда ко мне обращаются на "вы". Сегодня обращение на "Вы" это в большинстве случаев не проявление уважения, а затуманивание восприятия чтобы в дальнейшем что-то впарить или откровенно кинуть. Поэтому давай на "ты". Тем более что ты гораздо умнее чем был я в твоем возрасте. Лично я привык что все тут на "ты", это же форум программистов, тут важно умение, а не возраст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 20:47 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Модератор: Одного оффтопика достаточно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 21:23 |
|
||
|
Решение задачи на языке программирования Си
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercuryВы .... Оффтоп, но не могу не написать. Мне неприятно когда ко мне обращаются на "вы". Сегодня обращение на "Вы" это в большинстве случаев не проявление уважения, а затуманивание восприятия чтобы в дальнейшем что-то впарить или откровенно кинуть. Поэтому давай на "ты". Тем более что ты гораздо умнее чем был я в твоем возрасте. Лично я привык что все тут на "ты", это же форум программистов, тут важно умение, а не возраст. Хорошо C: PS нет, не умнее. Завтра разберу твой вариант, и также постараюсь понять в чём у меня ошибка. Спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2015, 14:45 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=50&tid=2019110]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
36ms |
get forum data: |
3ms |
get page messages: |
91ms |
get tp. blocked users: |
1ms |
| others: | 288ms |
| total: | 492ms |

| 0 / 0 |
