Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Алгоритм получения данных в С
|
|||
|---|---|---|---|
|
#18+
Я тут совсем запутался. Есть память. Она состоит из блоков. Каждый блок 64 страницы. Каждая страница 4096 байт. Начальный блок данных начинается с блока 231 и всего под данные отведено 10 блоков. Приходит запрос - выдай данные + офсет + длина данных в байтах. То есть если придет запрос - выдай данные + 0 + 8192(2*4096) - то я из блока 231 считаю две страницы. А если придет запрос - выдай данные + 262144(64*4096) + 8192(2*4096) - то я из блока 232 считаю две страницы. А если придет запрос - выдай данные + 262144(64*4096) + 274432(67*4096) - то я считаю 64 страницы из блока 232 + 3 страницы из блока 233. Вопрос как написать генерик функцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 11:24 |
|
||
|
Алгоритм получения данных в С
|
|||
|---|---|---|---|
|
#18+
jenya7, просто вложенные массивы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 11:31 |
|
||
|
Алгоритм получения данных в С
|
|||
|---|---|---|---|
|
#18+
jenya7, примерно так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 11:49 |
|
||
|
Алгоритм получения данных в С
|
|||
|---|---|---|---|
|
#18+
MBojenya7, примерно так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. спасибо. но вместо else нужен while чтоб вычитать все страницы или я ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 12:24 |
|
||
|
Алгоритм получения данных в С
|
|||
|---|---|---|---|
|
#18+
авторно вместо else нужен while чтоб вычитать все страницы В строчке читать из промежуточных блоков всё подразумевается цикл for ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 12:26 |
|
||
|
Алгоритм получения данных в С
|
|||
|---|---|---|---|
|
#18+
подразумевается цикл for от startblock + 1 до endblock - 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 12:27 |
|
||
|
Алгоритм получения данных в С
|
|||
|---|---|---|---|
|
#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. Модератор: Просьба убирать большие исходники под спойлер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 15:26 |
|
||
|
Алгоритм получения данных в С
|
|||
|---|---|---|---|
|
#18+
я сделал симуляцию в С# Код: c# 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. я беру каждый раз по 15 страниц и продвигаю офсет offset datasize 0 61440 (4096*15) 61440 61440 122880 61440 184320 61440 и получаю правильный результат block = 231 page = 0 page_addr = 0 ------------------- block = 231 page = 1 page_addr = 0 ------------------- block = 231 page = 2 page_addr = 0 ------------------- block = 231 page = 3 page_addr = 0 ------------------- block = 231 page = 4 page_addr = 0 ------------------- block = 231 page = 5 page_addr = 0 ------------------- block = 231 page = 6 page_addr = 0 ------------------- block = 231 page = 7 page_addr = 0 ------------------- block = 231 page = 8 page_addr = 0 ------------------- block = 231 page = 9 page_addr = 0 ------------------- block = 231 page = 10 page_addr = 0 ------------------- block = 231 page = 11 page_addr = 0 ------------------- block = 231 page = 12 page_addr = 0 ------------------- block = 231 page = 13 page_addr = 0 ------------------- block = 231 page = 14 page_addr = 0 ------------------- block = 231 page = 15 page_addr = 0 ------------------- block = 231 page = 16 page_addr = 0 ------------------- block = 231 page = 17 page_addr = 0 ------------------- block = 231 page = 18 page_addr = 0 ------------------- block = 231 page = 19 page_addr = 0 ------------------- block = 231 page = 20 page_addr = 0 ------------------- block = 231 page = 21 page_addr = 0 ------------------- block = 231 page = 22 page_addr = 0 ------------------- block = 231 page = 23 page_addr = 0 ------------------- block = 231 page = 24 page_addr = 0 ------------------- block = 231 page = 25 page_addr = 0 ------------------- block = 231 page = 26 page_addr = 0 ------------------- block = 231 page = 27 page_addr = 0 ------------------- block = 231 page = 28 page_addr = 0 ------------------- block = 231 page = 29 page_addr = 0 ------------------- block = 231 page = 30 page_addr = 0 ------------------- block = 231 page = 31 page_addr = 0 ------------------- block = 231 page = 32 page_addr = 0 ------------------- block = 231 page = 33 page_addr = 0 ------------------- block = 231 page = 34 page_addr = 0 ------------------- block = 231 page = 35 page_addr = 0 ------------------- block = 231 page = 36 page_addr = 0 ------------------- block = 231 page = 37 page_addr = 0 ------------------- block = 231 page = 38 page_addr = 0 ------------------- block = 231 page = 39 page_addr = 0 ------------------- block = 231 page = 40 page_addr = 0 ------------------- block = 231 page = 41 page_addr = 0 ------------------- block = 231 page = 42 page_addr = 0 ------------------- block = 231 page = 43 page_addr = 0 ------------------- block = 231 page = 44 page_addr = 0 ------------------- block = 231 page = 45 page_addr = 0 ------------------- block = 231 page = 46 page_addr = 0 ------------------- block = 231 page = 47 page_addr = 0 ------------------- block = 231 page = 48 page_addr = 0 ------------------- block = 231 page = 49 page_addr = 0 ------------------- block = 231 page = 50 page_addr = 0 ------------------- block = 231 page = 51 page_addr = 0 ------------------- block = 231 page = 52 page_addr = 0 ------------------- block = 231 page = 53 page_addr = 0 ------------------- block = 231 page = 54 page_addr = 0 ------------------- block = 231 page = 55 page_addr = 0 ------------------- block = 231 page = 56 page_addr = 0 ------------------- block = 231 page = 57 page_addr = 0 ------------------- block = 231 page = 58 page_addr = 0 ------------------- block = 231 page = 59 page_addr = 0 ------------------- block = 231 page = 60 page_addr = 0 ------------------- block = 231 page = 61 page_addr = 0 ------------------- block = 231 page = 62 page_addr = 0 ------------------- block = 231 page = 63 page_addr = 0 ------------------- block = 232 page = 0 page_addr = 0 ------------------- block = 232 page = 1 page_addr = 0 ------------------- block = 232 page = 2 page_addr = 0 ------------------- block = 232 page = 3 page_addr = 0 ------------------- block = 232 page = 4 page_addr = 0 ------------------- block = 232 page = 5 page_addr = 0 ------------------- block = 232 page = 6 page_addr = 0 ------------------- block = 232 page = 7 page_addr = 0 ------------------- block = 232 page = 8 page_addr = 0 ------------------- block = 232 page = 9 page_addr = 0 ------------------- block = 232 page = 10 page_addr = 0 ------------------- но алгоритм работает с размерами кратными 4096. если ставлю размер скажем 65530 - пропускается страница в следующем запросе. как мне скоректировать ошибку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 11:06 |
|
||
|
Алгоритм получения данных в С
|
|||
|---|---|---|---|
|
#18+
jenya7как мне скоректировать ошибку? Стандартно: отлаживайся. Иди отладчиком пошагово и смотри где поведение твоей программы начинает отличаться от ожидаемого тобою. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 13:38 |
|
||
|
Алгоритм получения данных в С
|
|||
|---|---|---|---|
|
#18+
jenya7, Ты модульные тесты писал когда нибудь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 20:52 |
|
||
|
Алгоритм получения данных в С
|
|||
|---|---|---|---|
|
#18+
jenya7, Код: c# 1. Это откуда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 21:29 |
|
||
|
Алгоритм получения данных в С
|
|||
|---|---|---|---|
|
#18+
MBojenya7, Код: c# 1. Это откуда? мне нужно знать сколько страниц выдать за запрос. вроде все правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 22:18 |
|
||
|
Алгоритм получения данных в С
|
|||
|---|---|---|---|
|
#18+
jenya7, Вычисление первой и последней страницы должно быть правильно, вот на это и надо ориентироваться, а такое нахождение количества страниц некорректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 07:51 |
|
||
|
Алгоритм получения данных в С
|
|||
|---|---|---|---|
|
#18+
MBojenya7, Вычисление первой и последней страницы должно быть правильно, вот на это и надо ориентироваться, а такое нахождение количества страниц некорректно. я понял. спасибо. Модератор: Тема перенесена из форума "Программирование". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 10:33 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39676678&tid=2017795]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 159ms |

| 0 / 0 |
