Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474

Потенциальная утечка памяти

15.03.2026, 13:57. Показов 11146. Ответов 118
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогаю тут знакомому делать лабораторную по программированию на С++. Делаю в Qt так как начал его изучать.
Задание:
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) максимальный по модулю элемент массива;[1]
2) сумму элементов массива, расположенных между первым и вторым положительными элементами.
Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных.
Вот, что у меня получилось:
C++ (Qt)
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
 main.cpp
#include <QCoreApplication>
#include<conio.h>
#include<math.h>
#include <QTextStream>
 
/* в среде разработки Qt на C++ позволяет использовать все идентификаторы
 из пространства имён std без указания префикса std::(например для count,cin,endl)*/
using namespace std;
 
int main()
{
    // задаём локализацию всех функций программы на русский язык, по умолчанию это только английский язык
    setlocale(LC_ALL, "Rus");
    QTextStream cin(stdin); cin.setCodec("CP866");         // кодировка для ввода в консоль
    QTextStream cout(stdout); cout.setCodec("CP1251");     // кодировка для вывода из консоли
    // 1
    int i,n,imax;
    float max=0;
    cout << QString::fromUtf8("Введите размерность массива n:")<< endl;
    cin >> n;
    cout << QString::fromUtf8("Введите через пробел элементы мaccива, дробную часть через точку:") << endl;
    float *p=new float[n];
    for(i=0; i<n; i++)
        cin >> p[i];
    for (max=p[0], imax=i=0; i<n; i++)
        if(fabs(p[i])>fabs(max))
        {
            max=p[i];
            imax=i;
        }
    cout << QString::fromUtf8("\nМаксимальный по модулю элемент: ") << max << endl;
    cout << QString::fromUtf8("Позиция максимального по модулю элемента: ") <<imax+1;
    // 2
    float sum=0;
    for (i = 0; i < n; i++)  // проходим циклом по длине массива
    {
        if (p[i] > 0)        // если встретим первый положительный элемент
        {
            i++;             // увеличиваем счётчик на 1  
            /* далее идём циклом пока не встретим следующий положительный элемент 
               или пока не закончиться длина массива
            */          
            while (p[i] <= 0 && i < n)  
            {                              
                sum += p[i]; // суммируем не удовлетворяющие условию элементы массива в переменную sum
                i++;         // увеличиваем счётчик на 1 
            }
            // как только выполнилось одно из условий выходим из цикла
            break;                          
        }
    }
    cout << QString::fromUtf8("\nCyммa элементов расположенных между 1 и 2 положительными элементами: ") << sum;
    // 3
    cout << QString::fromUtf8("\nПреобразованный массив:") << endl;   
    for(i=0; i<n; i++)
        if(p[i]!=0)
        {
            cout << p[i] << " ";
        }
    for(i=0; i<n; i++)
        if(p[i]==0)
        {
            cout << p[i]<< " ";
        }    
    return 0;
}
Вроде как всё работает, но появляется нехорошее предупреждение:
C++ (Qt)
1
2
D:\Examples\Option9\main.cpp:65:12: Potential leak of memory pointed to by 'p' [clang-analyzer-cplusplus.NewDeleteLeaks]
D:\Examples\Option9\main.cpp:65:12 : Потенциальная утечка памяти, на которую указывает 'p' [clang-analyzer-cplusplus.NewDeleteLeaks]
Помогите разобраться что не так.
И если можно подскажите как в этом коде сделать ЗАЩИТУ если в консоли будет набрано не правильное количество элементов.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.03.2026, 13:57
Ответы с готовыми решениями:

Утечка памяти
Доброго времени суток. Написал оконное приложение. Столкнулся с проблемой - утекает память. ...

Шаблоны STL & утечка памяти.
Доброе время суток. Имеются 2 класса: 1)TVoteServer 2)TVoteServers - класс коллекция TVoteServer...

Утечка памяти
Доброго времени суток! Столкнулся с проблемой утечки памяти! Будь у меня маленькая программка,...

118
 Аватар для vlisp
1071 / 992 / 153
Регистрация: 10.08.2015
Сообщений: 5,447
16.03.2026, 11:47
Студворк — интернет-сервис помощи студентам
Какой-то gwbasic и цирк дилетантов . задача же элементарная, чего вы из кожи вон лезете и через голову прыгаете?
Цитата Сообщение от GAZot Посмотреть сообщение
Вроде как всё работает, но появляется нехорошее предупреждение:
Ты память взял и не отдал, тебе компилятор предупреждает, не будь м
0
Заблокирован
16.03.2026, 13:50
Цитата Сообщение от GAZot Посмотреть сообщение
попытался понять ваш диалог о разделителях, так и не понял
Не знать чего то не страшно. Для задания это не нужно, так как и фильтры ввода.

Но в качестве ликбеза: Десятичный разделитель
Нормативные акты и практика в России
Десятичные разделители в странах и языках

Пример, калькуляторы на Windows 7 и Windows 10 имеют различное поведение на ввод.
7 - всегда использует десятичный разделитель как точку, так и как запятую.
10 - в зависимости от раскладки клавиатуры в момент ввода.
А вот отображения(грубо говоря вывод), оба, берут из формата установленного региона.

Теперь в контексте С++.
В данной теме используется Форматированный ввод/вывод.
Что это значит?
Что есть некоторые соглашение о текстовом формате используемых, в этом процессе, данных.

Добавлено через 59 секунд
Цитата Сообщение от vlisp Посмотреть сообщение
Какой-то gwbasic и цирк дилетантов . задача же элементарная
Всем "очень важно" на твои пустые придирки и мнение =)
0
Заблокирован
Эксперт функциональных языков программированияЭксперт С++
16.03.2026, 14:58
Лучший ответ Сообщение было отмечено GAZot как решение

Решение

Цитата Сообщение от vlisp Посмотреть сообщение
память
насчет памяти Алексей1153 уже всё сказал: он не только показал, как очистить, так еще посоветовал перейти на vector, что, на мой взгляд, более правильное решение

GAZot, вот для double и с повторным вводом, если ошибка

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
48
49
50
51
52
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
 
int main() 
{
    int n{};
    std::string input;
    std::vector<double> numbers;
    bool validInput = false;
    
    while (!validInput) 
    {
        std::cout << "Enter the array size n: ";
        std::cin >> n;
        
        if (n <= 0) 
        {
            std::cerr << "ERROR: Please enter a positive integer." << std::endl;
            std::cin.clear();
            std::cin.ignore();
            continue;
        }
        
        std::cin.ignore();
        
        std::cout << "Enter " << n << " numbers separated by spaces: ";
        std::getline(std::cin, input);
        
        std::istringstream iss(input);
        numbers.clear();
        double num;
        int count{};
        
        while (iss >> num) 
        {
            numbers.push_back(num);
            count++;
        }
        
        if (count != n) 
            std::cerr << "ERROR: Expected " << n << " numbers, but got " << count << ". Please try again." << std::endl;
        else 
            validInput = true;
    }
    
    std::cout << "Array elements: ";
    for (int i{}; i < n; ++i)
        std::cout << numbers[i] << " ";
    std::cout << std::endl;
}
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
16.03.2026, 17:16  [ТС]
Royal_X спасибо большое за ваш код, единственное что вы мне посоветуете сделать что бы текст стал на русском
0
1980 / 836 / 115
Регистрация: 01.10.2012
Сообщений: 5,222
Записей в блоге: 2
16.03.2026, 18:16
Цитата Сообщение от GAZot Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
cout << QString::fromUtf8("\nПреобразованный массив:") << endl;   
    for(i=0; i<n; i++)
        if(p[i]!=0)
        {
            cout << p[i] << " ";
        }
    for(i=0; i<n; i++)
        if(p[i]==0)
        {
            cout << p[i]<< " ";
        }
Это печать(и) исходного массива, а не преобразованный массив как требует задание. Наверно лучшим решением (чтобы поместить нули в конец) будет std::remove_if, но, как я понимаю, Вам нужно решение попроще. Можно так
C++
1
2
3
4
5
6
7
8
9
int place = 0;
for (int i = 0; i < n; ++i) 
 if (p[i] != 0.0f) {
  if (i != place) {
    p[place] = p[i];
    p[i] = 0.0f;
  }
  ++place;
 }
Да, и переменную "i" лучше каждый раз объявлять в цикле for, не стоит на этом экономить
0
Заблокирован
Эксперт функциональных языков программированияЭксперт С++
16.03.2026, 18:27
Цитата Сообщение от GAZot Посмотреть сообщение
единственное что вы мне посоветуете сделать что бы текст стал на русском
проблема в том, как сделать так, чтобы кириллический текст отображался корректно на всех платформах. Тут тема уже выходит за рамки С++ и Qt, и связана с кодировкой консоли платформы.
На форуме было несколько тем про это, воспользуйся поиском. И в этих темах я всегда выступал за использовании ASCII в консоли и полный отказ от юникодных символов в консоли, если стоит задача создать стабильно работающую программу для всех платформ.
На винде консоль нужно переключить в режим юникода и тут без WinAPI не обойтись, если хочется прям сделать всё четенько, а не тяп-ляп методами, типа system("chcp 65001 > nul") Даже всякие _setmode(_fileno(stdout), _O_U16TEXT) это уже вызов WinAPI и выход за пределы чистого С++. То же самое касается SetConsoleCP(CP_UTF8) и SetConsoleOutputCP(CP_UTF8).
Возможно, в Qt тоже есть функции. Например, мне кажется, что QTextStream и так работает на юникоде, нужно только в манифесте приложения указать юникод. Хз, я консольные приложения на кириллице не пишу, не знаю, короче.
0
1980 / 836 / 115
Регистрация: 01.10.2012
Сообщений: 5,222
Записей в блоге: 2
17.03.2026, 14:50
Цитата Сообщение от GAZot Посмотреть сообщение
/* в среде разработки Qt на C++ позволяет использовать все идентификаторы
 из пространства имён std без указания префикса std:например для count,cin,endl)*/
Qt здесь ни при чем, using namespace работает и без него. Но лучше не экономить на написании std::, наоборот, пусть все его вызовы будут хорошо видны. По моим наблюдениям опытные программисты пишут все std::

Добавлено через 5 минут
Цитата Сообщение от GAZot Посмотреть сообщение
// задаём локализацию всех функций программы на русский язык, по умолчанию это только английский язык
Локализация - это масса совершенно напрасно потерянного времени. Чем быстрее Вы научитесь писать все по-английски - тем лучше.
0
Заблокирован
Эксперт функциональных языков программированияЭксперт С++
17.03.2026, 15:02
Цитата Сообщение от vlisp Посмотреть сообщение
ТС напишет какую-то чухню, сразу набегают обыватели и начинают флудить, офтопить и писать еще большую чухню не понятно зачем, даже если ответ во 2 посте закрывает запрос ТС
ответ во 2-м посте действительно содержательный, но на этом тема не закончилась и у ТС были последующие дополняющие просьбы, причем, человек просил помочь не словами, а кодом. Именно по этой причине, ТС посчитал лучшим ответом пост 44.
Таким образом, если все думали точно так же, как и ты, то тема дальше 2-го поста не развивалась бы и ТС не получил бы того, что получил.
Я еще бы понял твою критику, если бы ТС удовлетворился 2-м постом и дальше не стал бы участвовать в этой теме. В таком случае ты был бы прав, ведь, какой смысл "флудить, офтопить", как ты там высказался. Но здесь не этот случай. У ТС были другие дополняющие просьбы, на что собственно "обыватели" пытались реагировать.
Более того, даже сейчас, на мой взгляд, тема не закрыта. Желающие могут ответить на пост 46, тем самым, дополнив пост 49.
Цитата Сообщение от Igor3D Посмотреть сообщение
Локализация - это масса совершенно напрасно потерянного времени. Чем быстрее Вы научитесь писать все по-английски - тем лучше.
довольно субъективное утверждение, но для консольных приложений я с вами соглашусь. Консольное приложение по своей самой сути предполагает, что оно рассчитано для специалистов, а не для обычных конечных пользователей, соответственно, специалисты обязаны знать английский, иначе они не специалисты, а профаны.
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
17.03.2026, 15:55  [ТС]
И всё таки, если я захочу написать по русски, что делать. Я попытался добавить в код Royal_X локализацию всех функций программы на русский язык
C++ (Qt)
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
#include <QCoreApplication>
 
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
 
#include<math.h>
#include <QTextStream>
 
int main()
{
    setlocale(LC_ALL, "Rus");
    QTextStream cin(stdin); cin.setCodec("CP866");
    QTextStream cout(stdout); cout.setCodec("CP1251");
    
    int n{};
    std::string input;
    std::vector<double> numbers;
    bool validInput = false;
    while (!validInput)
    {
        std::cout << "Enter the array size n: ";
        std::cout << QString::fromUtf8("Введите размерность массива n:")<< endl;
        ...
но сразу вылетела ошибка
C++ (Qt)
1
2
main.cpp:25:19: error: invalid operands to binary expression ('std::ostream' (aka 'basic_ostream<char>') and 'QString')
system_error:217:5: note: candidate function template not viable: no known conversion from 'QString' to 'const std::error_code' for 2nd argument
Добавлено через 1 минуту
C++ (Qt)
1
// std::cout << "Enter the array size n: ";
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
17.03.2026, 16:42  [ТС]
Почему здесь понимает:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
main.cpp
 
#include <QCoreApplication>
#include<conio.h>
#include<math.h>
#include <QTextStream>
 
/* в среде разработки Qt на C++ позволяет использовать все идентификаторы
 из пространства имён std без указания префикса std::(например для count,cin,endl)*/
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Rus");
    QTextStream cin(stdin); cin.setCodec("CP866");         
    QTextStream cout(stdout); cout.setCodec("CP1251");  
    // 1
    int i,n,imax;
    float max=0;
    cout << QString::fromUtf8("Введите размерность массива n:")<< endl;
    cin >> n;
    ...
0
1980 / 836 / 115
Регистрация: 01.10.2012
Сообщений: 5,222
Записей в блоге: 2
17.03.2026, 17:56
Цитата Сообщение от GAZot Посмотреть сообщение
Почему здесь понимает:
Потому что здесь QTextStream (а не std::cout). Избегайте неоднозначности, по имени должно быть видно "это кто", напр
C++
1
2
QTextStream qt_cin(stdin); qt_cin.setCodec("CP866");         
QTextStream qt_cout(stdout); qt_cout.setCodec("CP1251");

Не по теме:

Цитата Сообщение от GAZot Посмотреть сообщение
если я захочу написать
Это еще надо заслужить :)


Да, и 2 (и более) операторов в 1 строке - это не запрещено, и вроде "дело вкуса", и все такое, но.. лучше не надо
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
17.03.2026, 20:15  [ТС]
Igor3D спасибо большое не заметил.
vlisp вот вы сами говорите, что 3-я страница тут обсуждается не о чём, а что я вынес из ваших 4 постов, что я не туда засунул. Вот реально кроме Royal_X никто и не помог ну и Igor3D обратил внимание на ошибку. Так зачем вы забиваете форум поучениями и спорами с коллегами, я имею ввиду 000d60.

Добавлено через 3 минуты
А вот интересно здесь можно попросить модератора этот спор со странички удалить.
0
Заблокирован
Эксперт функциональных языков программированияЭксперт С++
17.03.2026, 20:38
GAZot, запусти приложение в архиве и скажи, у тебя русский текст выводится? Я написал тот же код, что предлагал выше, на Qt с использованием еще WinAPI для консольного приложения, проверил на моем компе - все норм, русский текст отображается правильно.
GAZot, только когда выводится массив приложение сразу закрывается, я забыл паузу поставить. Так что, запускай экзешник из cmd, чтобы видеть всё.

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
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
#include <QCoreApplication>
#include <QTextStream>
#include <QString>
#include <QVector>
 
#ifdef Q_OS_WIN
#include <windows.h>
#endif
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
 
#ifdef Q_OS_WIN
    SetConsoleOutputCP(CP_UTF8);
    SetConsoleCP(CP_UTF8);
#endif
 
    QTextStream cin(stdin);
    QTextStream cout(stdout);
    QTextStream cerr(stderr);
 
    int n = 0;
    QVector<double> numbers;
 
    while (true)
    {
        cout << "Введите размер массива n: " << Qt::flush;
 
        QString line = cin.readLine();
 
        bool ok = false;
        n = line.trimmed().toInt(&ok);
 
        if (!ok || n <= 0)
        {
            cerr << "ОШИБКА: Введите положительное целое число.\n" << Qt::flush;
            continue;
        }
 
        cout << "Введите " << n << " чисел через пробел: " << Qt::flush;
 
        QString inputLine = cin.readLine();
 
        QStringList parts = inputLine.trimmed().split(' ', Qt::SkipEmptyParts);
        numbers.clear();
        numbers.reserve(n);
 
        bool allValid = true;
        for (const auto &part : parts)
        {
            bool numOk = false;
            double num = part.toDouble(&numOk);
            if (numOk)
                numbers.append(num);
            else
            {
                allValid = false;
                break;
            }
        }
 
        if (!allValid || numbers.size() != n)
        {
            cerr << "ОШИБКА: Ожидалось " << n << " чисел, получено "
                 << numbers.size() << ". Попробуйте снова.\n" << Qt::flush;
        }
        else
            break;
    }
 
    cout << "Элементы массива: ";
    for (double num : numbers)
        cout << num << " ";
    cout << "\n" << Qt::flush;
}
Вложения
Тип файла: zip Test.zip (5.02 Мб, 4 просмотров)
0
Заблокирован
Эксперт функциональных языков программированияЭксперт С++
17.03.2026, 20:45
Цитата Сообщение от Royal_X Посмотреть сообщение
только когда выводится массив приложение сразу закрывается, я забыл паузу поставить. Так что, запускай экзешник из cmd, чтобы видеть всё.
ты потом в конце у себя добавь

C++
1
2
cout << "Нажмите Enter для выхода..." << Qt::endl;
cin.readLine();
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
17.03.2026, 20:59  [ТС]
не очень понял, куда добавить, у меня только .exe
0
Заблокирован
Эксперт функциональных языков программированияЭксперт С++
17.03.2026, 21:05
GAZot, вот, попробуй. Я заново собрал. Запускай Test.exe (файлик Qt6Core.dll должен лежать рядом). И скажи мне, русский текст отображается норм или нет?

А вот сам код

Кликните здесь для просмотра всего текста
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
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
#include <QCoreApplication>
#include <QTextStream>
#include <QString>
#include <QVector>
 
#ifdef Q_OS_WIN
#include <windows.h>
#endif
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
 
#ifdef Q_OS_WIN
    SetConsoleOutputCP(CP_UTF8);
    SetConsoleCP(CP_UTF8);
#endif
 
    QTextStream cin(stdin);
    QTextStream cout(stdout);
    QTextStream cerr(stderr);
 
    int n = 0;
    QVector<double> numbers;
 
    while (true)
    {
        cout << "Введите размер массива n: " << Qt::flush;
 
        QString line = cin.readLine();
 
        bool ok = false;
        n = line.trimmed().toInt(&ok);
 
        if (!ok || n <= 0)
        {
            cerr << "ОШИБКА: Введите положительное целое число.\n" << Qt::flush;
            continue;
        }
 
        cout << "Введите " << n << " чисел через пробел: " << Qt::flush;
 
        QString inputLine = cin.readLine();
 
        QStringList parts = inputLine.trimmed().split(' ', Qt::SkipEmptyParts);
        numbers.clear();
        numbers.reserve(n);
 
        bool allValid = true;
        for (const auto &part : parts)
        {
            bool numOk = false;
            double num = part.toDouble(&numOk);
            if (numOk)
                numbers.append(num);
            else
            {
                allValid = false;
                break;
            }
        }
 
        if (!allValid || numbers.size() != n)
        {
            cerr << "ОШИБКА: Ожидалось " << n << " чисел, получено "
                 << numbers.size() << ". Попробуйте снова.\n" << Qt::flush;
        }
        else
            break;
    }
 
    cout << "Элементы массива: ";
    for (double num : numbers)
        cout << num << " ";
    cout << "\n" << Qt::flush;
 
    cout << "Нажмите Enter для выхода..." << Qt::endl;
    cin.readLine();
}


Нативный код винды полагаю, что можно вообще убрать, а консольку переводить в режим юникода посредством манифеста. Но для тебя так проще, не нужно еще сношаться с компилятором ресурсов.
Вложения
Тип файла: zip Test.zip (3.45 Мб, 10 просмотров)
0
1980 / 836 / 115
Регистрация: 01.10.2012
Сообщений: 5,222
Записей в блоге: 2
17.03.2026, 22:15
Проще написать эту лабу чем объяснять
Кликните здесь для просмотра всего текста
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <QTextStream>
#include <QString>
#include <QVector>
#include <QDebug>
 
int main()
{
    printf("Enter a string of float values\nExample: 1.2 -3.0 0 4 0.0 5 -7\n\nValues: ");
    QTextStream stream(stdin);
    QString line;
    if (!stream.readLineInto(&line))
        return -1;
    
    QTextStream stream2(&line, QTextStream::ReadOnly);
    QVector<double> vec;
    while (!stream2.atEnd()) {
        double d;
        stream2 >> d;
        if (stream2.status() != QTextStream::Ok) {
            qDebug() << "input error: " << line.mid(stream2.pos());
            return -1;
        }
        vec.push_back(d);
    }
    if (!vec.size()) return -1;
    qDebug() << "source" << vec;
    
    int place = 0;
    double sum = 0.0, max = 0.0;
    int sumR[2] = { -1, -1 };
    for (int i = 0; i < (int) vec.size(); ++i) {
        double & v = vec[i];
        
// adjust max
        if (fabs(v) > fabs(max))
            max = v;
        
// adjust sumR
        if (v > 0.0) {
            if (sumR[0] < 0)
                sumR[0] = i;
            else
                if (sumR[1] < 0)
                    sumR[1] = i;
        }
            
// adjust sum
        else
            if ((sumR[0] >= 0) && (sumR[1] < 0))
                sum += v;
        
// move zeroes down
        if (v != 0.0) {
            if (i != place) {
                vec[place] = v;
                v = 0.0;
            }
            ++place;
        }
    }
    
    qDebug() << "max =" << max;
    qDebug() << "sum =" << sum;
    qDebug() << "vec =" << vec;
 
    return 0;
}
0
17.03.2026, 23:04

Не по теме:

Цитата Сообщение от Igor3D Посмотреть сообщение
Проще написать эту лабу
только после этих слов я прочел первый пост :D оказывается там расписана целая задача)))
Цитата Сообщение от 4blK4blPblK Посмотреть сообщение
а тут аж Qt
я тоже не понимаю, зачем тут Qt? Ну раз хочет ТС этот Qt, то пусть он будет

0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
18.03.2026, 06:29  [ТС]
000d60 Что ты меня всё подкалываешь, посмотри вопрос я почти всё написал, даже с русским языком справился, ну память не очистил - косяк. А вот с проверкой не справился поэтому и обратился.

Добавлено через 41 минуту
Qt здесь не при чём, но он стоит у меня в качестве IDE работы с C++, поэтому и делаю в нём, заодно и со средой знакомлюсь. И вот уже вижу что здесь проблема с кодировкой, варианты ответов в основном на eng.
0
фрилансер
 Аватар для Алексей1153
6508 / 5758 / 1135
Регистрация: 11.10.2019
Сообщений: 15,406
18.03.2026, 07:35
GAZot, Qt это фреймворк.

IDE у тебя, видимо, QtCreator
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.03.2026, 07:35

Будет ли утечка памяти при выполнении данного кода?
собстна, сабж. char* cpy(char* source, int pos, int kolv) { char* dist = new char; for(int...

Утечка памяти в работе с классами
вроде утечка памяти наблюдается в функции &quot;loadfromfile&quot;, помогите пожалуйста исправить ...

Утечка памяти, пользуюсь vld
Начал разбираться чо это такое, утечка памяти. Как самы простой способ нашел программу Visual Leak...

Утечка памяти при умножении матрицы на число
Всем доброго времени суток. Хочу спросить у Вас совета по поводу распределения памяти в...

Утечка памяти CppWebBrowser
Всем здравствуйте У меня возникла проблема: Утечка памяти CppWebBrowser вот код IHTMLDocument2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru