Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
указатели с++
|
|||
|---|---|---|---|
|
#18+
Найти минимальный элемент в массиве A и обнулить все элементы , стоящие в массиве после него. Решить задачу , используя указатели. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. саму программу смог написать , как ее сделать через указатели ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 17:04 |
|
||
|
указатели с++
|
|||
|---|---|---|---|
|
#18+
int *p = a; в цикле вместо i++ и a[i], используй ++p и *p; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 17:07 |
|
||
|
указатели с++
|
|||
|---|---|---|---|
|
#18+
mcureenab, Вижу, в Мурманске знают С++! Ну так надо, чтобы и в Томске тоже знали! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 18:09 |
|
||
|
указатели с++
|
|||
|---|---|---|---|
|
#18+
fr0st1k123Найти минимальный элемент в массиве A и обнулить все элементы , стоящие в массиве после него. Решить задачу , саму программу смог написать , как ее сделать через указатели ? Не использовать индексы массивов и операцию [i] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 18:10 |
|
||
|
указатели с++
|
|||
|---|---|---|---|
|
#18+
Так правильно ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 18:56 |
|
||
|
указатели с++
|
|||
|---|---|---|---|
|
#18+
fr0st1k123, Неправильно логически, ты не обязательно найдёшь сразу минимальный элемент. А у тебя если ты найдёшь первого кандидата, то ты тут же сотрёшь весь остаток массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 19:04 |
|
||
|
указатели с++
|
|||
|---|---|---|---|
|
#18+
fr0st1k123, Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 22:04 |
|
||
|
указатели с++
|
|||
|---|---|---|---|
|
#18+
Mozok, Вы бы еще буст предложили :) человек только учится, незачем травмировать ему так психику. Достаточно действительно заменить синтаксический сахар для работы с массивом на арифметику указателей, как указали выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 22:59 |
|
||
|
указатели с++
|
|||
|---|---|---|---|
|
#18+
fr0st1k123Так правильно ? если вы хотите обнулять часть массива сразу после нахождения текущего минимум попробуйте такой вариант(только потестируйте его, я этим не буду заниматься) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 02:51 |
|
||
|
указатели с++
|
|||
|---|---|---|---|
|
#18+
SashaMercuryfr0st1k123Так правильно ? если вы хотите обнулять часть массива сразу после нахождения текущего минимум попробуйте такой вариант(только потестируйте его, я этим не буду заниматься) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. к сожалению придётся начать именно с buf + len - 1, а не buf + len - 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 02:55 |
|
||
|
указатели с++
|
|||
|---|---|---|---|
|
#18+
Хотя может кто-нибудь предложит другой вариант обхода одномерного массива в обратную сторону с использованием указателей ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 02:57 |
|
||
|
указатели с++
|
|||
|---|---|---|---|
|
#18+
SashaMercurySashaMercuryпропущено... если вы хотите обнулять часть массива сразу после нахождения текущего минимум попробуйте такой вариант(только потестируйте его, я этим не буду заниматься) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. к сожалению придётся начать именно с buf + len - 1, а не buf + len - 2 Алгоритмически хорошо выглядит, практически может быть лучше найти минимальный элемент и отдельно обнулить хвост массива функцией memset. цикл по j можно от i+1 до min сделать. цикл по i можно на len завязать: for (int* i = min - 1; --len; --i) и как раз начинать с len - 2. Конечно, если 0<len. Пожалейте читателя. Вот это сложно сразу понять: "; j - i + 1;", "; i - buf;" что к чему стремится. И еще один момент, символ * относится не к типу, а к переменной. Лучше лепить его к переменной: int *min; или int *search_min_and_init_zeros_after. Когда идет объявление int *a, b, c; легче заметить, что b и c не указатели, а целые. Объявляя int* a, b, c; неопытный программист может подумать, что все три переменных - указатели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 10:34 |
|
||
|
указатели с++
|
|||
|---|---|---|---|
|
#18+
Что то мне кажется, что исходная программа делает немного больше телодвижений, чем требуется Во-первых, первый цикл можно начинать не с нулевого значения, а с единицы - зачем сравнивать текущий минимум с самим собой? Во втором цикле индекс минимального значения уже определен, поэтому новые сравнения не нужны : for (int i = min+1; i < 5; i++) a[i] = 0; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 13:54 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39098814&tid=2018751]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 268ms |
| total: | 433ms |

| 0 / 0 |
