|
|
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) максимальный по модулю элемент массива; 2) сумму элементов массива, расположенных между первым и вторым положительными элементами. Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2005, 00:46 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#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. There Ain't No Such Thing As A Free Lunch ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2005, 09:31 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
Упс! Малость не так. Не совсем верно понял второе условие. Сейчас второй вариант нарисуюю -- There Ain't No Such Thing As A Free Lunch ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2005, 09:36 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
Luck2) сумму элементов массива, расположенных между первым и вторым положительными элементами. Включая эти элементы или исключая их? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2005, 09:45 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
BlackStar Luck2) сумму элементов массива, расположенных между первым и вторым положительными элементами. Включая эти элементы или исключая их? Блин! А ноль считается положительным? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2005, 09:52 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
Спасибо, но по проще нельзя? Не считая эти элименты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2005, 17:40 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
Ну тогда вот так. Это вариант когда 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. Если же хочется и 0 считать положительным надо поправить кусочек вот так Код: plaintext 1. 2. 3. 4. Ну куда уж проще? Или еще прокоментировать что каждая строка делает? -- There Ain't No Such Thing As A Free Lunch ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2005, 20:11 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
BlackStarЕсли же хочется и 0 считать положительным надо поправить кусочек вот так "0" не является положительным числом. А вот как можно посчитать сумму между первыми двумя положительными числами. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2005, 22:42 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
нет, каждую строку коментировать не стоит. Просто на сколько я понимаю здесь используется функция? а без неё никак? прошу прощения если я не прав.Не давно только начал изучать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2005, 01:52 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
Luckнет, каждую строку коментировать не стоит. Просто на сколько я понимаю здесь используется функция? а без неё никак? прошу прощения если я не прав.Не давно только начал изучать Можно и без функции. Но зачем? Функция func решает вашу задачу. Функция main (основная функция программы) вызывает func с необходимыми данными и отображает результат. func можно вызывать несколько раз, с разными исходными данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 09:51 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
spectre BlackStarЕсли же хочется и 0 считать положительным надо поправить кусочек вот так "0" не является положительным числом. А вот как можно посчитать сумму между первыми двумя положительными числами. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Угу. Тока мой вариант решает все три условия задачи за один проход по массиву и не используя дополнительной памяти для упорядочивания массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 09:55 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#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.12.2005, 10:37 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
2 _Балтика: двигать весь хвост массива на каждый ноль - не совсем экономично :) если например размер массива 100000, и он хорошо разряжен нулевыми значениями... -- There Ain't No Such Thing As A Free Lunch ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 10:45 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#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. Да, нужно бы еще учесть, что в массиве есть только одно положительное значение и в конце цикла while вставить что то типа Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 10:52 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
Будьте осторожны, когда сравниваете вещественные числа, помните о двоичном представлении оных, ибо ошибки могуть крыться здесь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 10:52 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
BlackStar2 _Балтика: двигать весь хвост массива на каждый ноль - не совсем экономично :) если например размер массива 100000, и он хорошо разряжен нулевыми значениями... -- There Ain't No Such Thing As A Free Lunch А я и не двигаю Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 10:56 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, естественно вот так Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 11:00 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
_Балтика BlackStar2 _Балтика: двигать весь хвост массива на каждый ноль - не совсем экономично :) если например размер массива 100000, и он хорошо разряжен нулевыми значениями... -- There Ain't No Such Thing As A Free Lunch А я и не двигаю Код: plaintext 1. один черт. :) и кстати передавать в memmove значения массива не самая удачная идея :) наверное правильно вот так Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 11:06 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
BlackStar один черт. :) и кстати передавать в memmove значения массива не самая удачная идея :) Это очепятка, я сам заметил :). Почему же, один черт? В этом случае мы исключаем из движения все завершающие нули. Да и кол-во циклов уменьшается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 11:11 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
_Балтика BlackStar один черт. :) и кстати передавать в memmove значения массива не самая удачная идея :) Это очепятка, я сам заметил :). Почему же, один черт? В этом случае мы исключаем из движения все завершающие нули. Да и кол-во циклов уменьшается. Потому что все равно приходится перемещать в памяти достаточно большие блоки информации. Теперь насчет циклов, вы думаете их нет в memmove? Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 11:56 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
Для предыдущего поста в перед функцией memmove надо добавить пару строчек Код: plaintext 1. 2. 3. 4. There Ain't No Such Thing As A Free Lunch ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 12:15 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
BlackStar Потому что все равно приходится перемещать в памяти достаточно большие блоки информации. Теперь насчет циклов, вы думаете их нет в memmove? Вобщем то в этом случае memcpy можно использовать. И надо еще посмотреть это ли используется в memmove? Может быть из MEMCPY.ASM ? Там если посмотреть так делают: ................ rep movsd ................ А это, согласитесь, в несколько раз быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 12:22 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
_Балтика BlackStar Потому что все равно приходится перемещать в памяти достаточно большие блоки информации. Теперь насчет циклов, вы думаете их нет в memmove? Вобщем то в этом случае memcpy можно использовать. И надо еще посмотреть это ли используется в memmove? Может быть из MEMCPY.ASM ? Там если посмотреть так делают: ................ rep movsd ................ А это, согласитесь, в несколько раз быстрее. Именно из MEMCPY.ASM . (легко увидеть в дизасемблере). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 12:36 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
Ну уж если начали пиписками меряться... ;-)) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Код: plaintext При этом я заменил в вашей функции (func1) memmove на memcpy, а gcc при оптимизации -O3 как раз заменяет ее вызов на ассемблерный код с участием rep movsl PS Однако при малых размерах массива, разница будет не так заметна. -- There Ain't No Such Thing As A Free Lunch Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 13:25 |
|
||
|
Помогите решить задачу
|
|||
|---|---|---|---|
|
#18+
BlackStar Код: plaintext Ну, это по-моему фантастика (33 сек!!!). Если только на Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 14:08 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33457150&tid=2032195]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 370ms |

| 0 / 0 |
