|
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 472
|
|||||||||||
Потенциальная утечка памяти15.03.2026, 13:57. Показов 9757. Ответов 118
Метки нет (Все метки)
Здравствуйте! Помогаю тут знакомому делать лабораторную по программированию на С++. Делаю в Qt так как начал его изучать.
Задание: В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) максимальный по модулю элемент массива;[1] 2) сумму элементов массива, расположенных между первым и вторым положительными элементами. Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных. Вот, что у меня получилось:
И если можно подскажите как в этом коде сделать ЗАЩИТУ если в консоли будет набрано не правильное количество элементов.
0
|
|||||||||||
| 15.03.2026, 13:57 | |
|
Ответы с готовыми решениями:
118
Утечка памяти Шаблоны STL & утечка памяти. Утечка памяти |
|
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,426
|
||
| 18.03.2026, 11:25 | ||
|
У тебя задача в 2 действия. но ты решил даже тут читернуть. в итоге у тебя количество ненужных циклов сильно больше нуля. программа неоптимизированная и медленная. так не то что на плюсах, даже на си не пишут.
0
|
||
|
6315 / 3039 / 1055
Регистрация: 01.06.2021
Сообщений: 11,587
|
|||||||||||||
| 18.03.2026, 14:50 | |||||||||||||
|
Ты ввел всех в заблуждение своими постами и даже кодом из первого поста, в котором ты используешь Qt. На 59-м сообщении оказалось, что Qt тебе и не нужен, а ты имел в виду Qt Creator ![]() Итак, тебе просто нужно написать консольное приложение на С++, без Qt. Судя по твоему коду из первого поста, при создании проекта в Qt Creator ты ошибочно выбрал в качестве типа проекта "Qt Console Application". Вместо этого ты должен был выбрать "Non-Qt Project / Plain C++ Application". А что касается отображения кириллицы в Qt Creator, то там своя специфика. Я вообще советую в настройках проектах, в Run Settings выбрать Run in terminal, так более-менее будет норм, поскольку стандартное окно ввода/вывода слабенькое, а во втором случае, когда выбрано Run in terminal, включается режим эмуляции системного терминала во встроенном окне. А если хочется чтобы вызывалось прям само черное системное окно терминала, то кроме включения в настройках проекта Run in terminal, еще нужно в настройках IDE убрать галочку Use internal terminal.
ввод данных с клавы и кириллицу сам добавишь, выше я уже показал, как это делать. Еще, в условии сказано "Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных.", но не сказано, должен ли соблюдаться изначальный порядок ненулевых чисел? Я соблюдаю этот порядок, но если порядок не нужен, замени std::stable_partition на std::partition.
0
|
|||||||||||||
| 18.03.2026, 16:22 | |||
Спорный вопрос, но во всяком случае юзать эти ф-ции можно тому кто уже умеет обойтись без них. Иначе получается такая "обезьяна без кармана" Особенно последний пункт (нули в конец), его необходимо уметь делать рукамиКстати структура решения та же что и в стартовом посте - последовательно/независимо решаются 3 задачи в 3 циклах. Такой порядок необязателен, можно все сделать в одном цикле. Что лучше - ну на такой задании без разницы, просто иметь ввиду что есть альтернатива
0
|
|||
|
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,426
|
|
| 18.03.2026, 16:24 | |
|
0
|
|
|
6315 / 3039 / 1055
Регистрация: 01.06.2021
Сообщений: 11,587
|
||||
| 18.03.2026, 16:50 | ||||
|
Преимущества моего кода: - читаемость, сразу видно, что там происходит - разделение ответственности (твой код же хрупкий - изменение одной логики легко сломает другую). У меня все можно быстро вынести в разные функции. - реализации из STL могут использовать векторизацию и другие оптимизации компилятора. К тому же, я даже могу быстро заменить accumulate на reduce и прикрутить execution. - переиспользуемость: лямбды в моем варианте легко вынести, переиспользовать, протестировать отдельно. У тебя же все намертво вшито в цикл.
0
|
||||
|
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 472
|
|
| 18.03.2026, 17:22 [ТС] | |
|
да QtCreator
Добавлено через 24 минуты Да последний код Royal_X это что то, я думаю препод у студента сам охренет от него. Мне кажется это всё равно, что в начальных классах на уроке математике рассказывать про интегралы
0
|
|
|
6315 / 3039 / 1055
Регистрация: 01.06.2021
Сообщений: 11,587
|
||
| 18.03.2026, 17:29 | ||
|
0
|
||
|
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 472
|
|
| 18.03.2026, 17:31 [ТС] | |
|
Мне понравилось, специально посмотрел, что за функции.
0
|
|
|
6315 / 3039 / 1055
Регистрация: 01.06.2021
Сообщений: 11,587
|
|||
| 18.03.2026, 17:39 | |||
|
Добавлено через 5 минут Qt6Core.dll повысит размер почти на 10 МБ
0
|
|||
|
фрилансер
6496 / 5727 / 1133
Регистрация: 11.10.2019
Сообщений: 15,292
|
||
| 18.03.2026, 17:45 | ||
|
А циклы провоцируют смешивать ответственность - например, сразу заполнить массив и вывести на экран. А это обычно - плохая архитектура или снижение производительности
1
|
||
| 18.03.2026, 19:22 | ||||||||||||
![]()
![]()
0
|
||||||||||||
|
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 472
|
|
| 18.03.2026, 21:06 [ТС] | |
|
Ребят, ребят а Вы вообще в курсе, что чат переместили в ветку С++ для начинающих и я уже почти страницу модератору отправил на удаление
0
|
|
|
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
|
||
| 18.03.2026, 22:03 | ||
|
GAZot, ежели решил
P.S. Сорри, если другие участники на это уже указывали. Лень читать предыдущие посты - так что всем предлагаю меня понять и простить
0
|
||
|
Заблокирован
|
||||||||
| 18.03.2026, 23:12 | ||||||||
|
Раз пошла такая пьянка, то и я поговнокодю и пофлудю.
Задача выполненная с помощью общих алгоритмов легко пишется, читается и редактируется. Они проверены и работоспособны, в отличие от своего сишкокодерства. Есть моменты когда пишешь низкоуровневый код с указателями, выделениями памяти и прочим. Но это редкие случаи. Преждевременная оптимизация - большой порок. И в контексте С++ приносит больше вреда чем пользы. Вот в моём коде(ниже под спойлером) можно оптимизировать решение второй задачи, но нужно ли? Уже ближе к реальному коду. Но реальный код не будет состоять из трёх задач. И поэтому будет систематизирован и выделен в фрагменты кода отвечающие за отдельные задачи, включая ввод, фильтр его содержимого и обработку ошибок. Кликните здесь для просмотра всего текста
https://onlinegdb.com/Gd-uBfRGpg Теперь про ввод данных. Стандартные потоки - это обобщенный подход к обработки ввода-вывода. И задача/желание ТС, иметь контроль над вводом(а именно ввод несколько значений с контролем на их количество, больше/меньше ожидаемого), выходит за возможности семантики стандартных потоков. Поэтому, необходимую логику, разбивают на более мелкие задачи и используют те же средства. Если это нужно, были уже примеры/варианты и от меня и от Royal_X. Теперь у меня вопрос к душнилам-тошнилам в этой теме. Правда ли для обучающего процесса, нужно каждую задачу писать в таком стиле? Да ещё и в классы это обернуть(потому что это С++)? Или для ознакомления с чем, достаточно это что-то и только его использовать? [риторические вопросы] И ещё сомнительно что я все случаи учёл, особенно при вводе. А std::cin - особый поток со своим поведением. Хоть у него и может быть случай eof(Ctrl+D для емулятора терминала onlinegdb.com, вероятно выполняется код на unix системе)), но на практике этого мало кто знает и использует. Поэтому это учитывают и соответственно организовывают интерактивность с пользователем. p.s. Для ТС. 99,99% всего кода на С++ - это базовые общие инструменты, особенно стандартные. И это касается практически всех библиотек и фреймворков. На все случаи жизни всего не сделать и это естественно. Поэтому каждая команда делает инструменты под себя и свои задачи. Стандартные потоки не для всяких задач одинаково полезные. Но на их основе можно многое сделать. Так что при обучающем процессе, свои "хотелки" нужно держать в узде, ну или быть готовым эпически их преодолевать усложняя на ровном месте задачу и код. А тема показательная, таки ![]() Добавлено через 45 секунд Recrut_rf, да норм всё, можно курить здесь ![]() Добавлено через 15 минут Royal_X, кстати, твой последний exe-ик, на Qt, консольный. Нормально отображает русские символы на Win10 x64. Но вот на ниже системах, я в этом сомневаюсь. И как по заказу, всегда найдется какая то "зверушка"[цензура] на virustotal, которая обнаружит там угрозу)
1
|
||||||||
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,247
|
|||||||||||
| 19.03.2026, 00:48 | |||||||||||
0
|
|||||||||||
|
Заблокирован
|
|||||||
| 19.03.2026, 01:05 | |||||||
|
И конечно же, нужно и код который был бы, если бы это была задача с вводом не от пользователя, со всеми данными для решения всех трех подзадач и только базовыми инструментами С++. Которой эта задача и является.
Мы знаем только про std::cin/cout/endl, как учат на первом уроке.
И мешать всё в один проход, это анти-паттерн, который способен искривить даже ровные молодые руки. Но это лишь для первых заданий. Циклы и прочее. И на кой тут Qt, кодировки, ошибки ввода и прочий геморой, который на данном этапе обучения и задачи вообще не нужны. Нельзя объять всё и сразу. ТС, моргни три с половиной раза, если тебя держит в заложниках преподователь-извращенец. Добавлено через 1 минуту
0
|
|||||||
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,247
|
|
| 19.03.2026, 01:23 | |
|
0
|
|
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,247
|
|
| 19.03.2026, 01:25 | |
|
000d60,
Быстро ты гонишь. Ударно работаешь. Жаль читателей не очень много. Я за тобою не поспеваю. Код выше... Они редактирование перекрыли, Да и ты что то вклеил..
0
|
|
|
Заблокирован
|
|
| 19.03.2026, 01:31 | |
|
0
|
|
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,247
|
|
| 19.03.2026, 01:32 | |
|
0
|
|
| 19.03.2026, 01:32 | |
|
Будет ли утечка памяти при выполнении данного кода? Утечка памяти в работе с классами Утечка памяти, пользуюсь vld Утечка памяти при умножении матрицы на число Утечка памяти CppWebBrowser Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|
|
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время?
Никакой пенсии. Никакого нового. . .
|
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю
Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы
Кратко. . .
|
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем
**Полевые заметки о двухнедельной совместной работе**. . .
|
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|