Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740

Debug Assertion Failed

11.06.2014, 02:39. Показов 4563. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Написал такую программу.
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
#include <stdio.h>
 
int n, m;
int i, q, d;
 
void merge(int a[], int b[], int c[], int n, int m){
    int A(0), B(0);
 
    while((A + B) < (n + m))
    {
        if( (B >= m) || ( (A < n) && (a[A] >= b[B]) ) )
        {
            c[A + B] = a[A];
            ++A;
        } else
        {
            c[A + B] = b[B];
            ++B;
        }
    }
}
int main()
{
    FILE *f;
    FILE *e;
    f = fopen("merge.dat", "r");
 
    fscanf(f,"%d", &n);
    int *a = new int[n];
 
    for(i = 0; i < n;i++)
        fscanf(f,"%d", &a[i]);
    fscanf(f,"%d", &m);
    int *b = new int[m];
 
    for(q = 0;q < m;q++)
        fscanf(f,"%d", &b[q]);
    fclose(f);
 
    e = fopen("merge.sol", "w");
    int *c = new int[n + m];
 
    merge(a, b, c, n, m);
 
    for(d = 0; d < (n + m);d++)
        fprintf(e,"%d\n", c[d]);
    fclose(e);
 
    delete[]a;
    delete[]b;
    delete[]c;
 
    return 0;
}
Выводит ошибку "Debug Assertion Failed. Line 52". Скажите, в чем проблема?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.06.2014, 02:39
Ответы с готовыми решениями:

Debug assertion failed!
пишу библиотеку функции для работы с массивом. В функции вставки со сдвигом возникает ошибка при вызове realloc #define...

Debug assertion failed
#include &lt;iostream&gt; using namespace std; class Employee { friend class Leader; private: char m_name; char m_no; public: ...

Debug assertion failed
Во время отладки вылазит такая ошибка,не могу понять в чём дело

26
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 04:42
Студворк — интернет-сервис помощи студентам
Зачем здесь, вообще, файлы? Из пустого в порожнее переливание...
Вот с файлами и с рандомами, но сортировка криво работает:
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 <stdio.h>
#include <stdlib.h>
#include <ctime>
 
int n, m;
int i, q, d;
 
void merge(int a[], int b[], int c[], int n, int m){
    int A(0), B(0);
 
    while((A + B) < (n + m))
    {
        if( (B >= m) || ( (A < n) && (a[A] >= b[B]) ) )
        {
            c[A + B] = a[A];
            ++A;
        } else
        {
            c[A + B] = b[B];
            ++B;
        }
    }
}
 
int main()
{
    FILE *g;
    FILE *f;
    FILE *e;
 
    g = fopen("merge.dat", "w");
 
    srand(time(0));
 
    fprintf(g, "%d\n", n = 1 + rand() % 10);
    int *a = new int[n];
 
    for(i = 0; i < n; i++)
        fprintf(g,"%d ", a[i] = rand() % 20);
    fprintf(g, "%c", '\n');
 
    fprintf(g, "%d\n", m = 1 + rand() % 10);
    int *b = new int[m];
 
    for(q = 0;q < m;q++)
        fprintf(g,"%d ", b[q] = rand() % 20);
    fprintf(g, "%c", '\n');
    fclose(g);
 
    f = fopen("merge.dat", "r");
 
    fscanf(g,"%d", &n);
 
    for(i = 0; i < n; i++)
        fscanf(g,"%d", &a[i]);
    
    fscanf(g,"%d", &m);
    for(q = 0;q < m;q++)
        fscanf(g,"%d", &b[q]);
    fclose(f);
 
    e = fopen("merge.sol", "w");
    int *c = new int[n + m];
 
    merge(a, b, c, n, m);
 
    for(d = 0; d < (n + m);d++)
        fprintf(e,"%d\n", c[d]);
    fclose(e);
 
    delete[]a;
    delete[]b;
    delete[]c;
 
    return 0;
}
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
13.06.2014, 04:50  [ТС]
alsav22, Вот, я исправил код под себя, как мне нужно, но все равно выдает "Неправильный ответ".
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
80
81
#include <stdio.h>
 
int n, m;
int i, q, d;
 
void merge(int a[], int b[], int c[], int n, int m){
    int A(0), B(0);
 
    while((A + B) < (n + m))
    {
        if( (B >= m) || ( (A < n) && (a[A] >= b[B]) ) )
        {
            c[A + B] = a[A];
            ++A;
        } else
        {
            c[A + B] = b[B];
            ++B;
        }
    }
}
int main()
{
    FILE *g;
    FILE *f;
    FILE *e;
 
    g = fopen("merge.dat", "w");
 
    scanf("%d", &n);
    int *a = new int[n];
 
    for(i = 0; i < n;i++)
        scanf("%d", &a[i]);
 
    scanf("%d", &m);
    int *b = new int[m];
 
    for(q = 0;q < m;q++)
        scanf("%d", &b[q]);
 
    fprintf(g, "%d\n", n);
 
    for(i = 0; i < (n - 1);i++)
        fprintf(g,"%d ", a[i]);
    fprintf(g, "%d\n", a[n-1]);
 
    fprintf(g, "%d\n", m);
 
    for(q = 0;q < (m - 1);q++)
        fprintf(g,"%d ", b[q]);
    fprintf(g, "%d\n", a[m - 1]);
    fclose(g);
 
    f = fopen("merge.dat", "r");
 
    fscanf(g,"%d", &n);
 
    for(i = 0; i < n;i++)
        fscanf(g,"%d", &a[i]);
    fscanf(g,"%d", &m);
 
    for(q = 0;q < m;q++)
        fscanf(g,"%d", &b[q]);
    fclose(f);
 
    e = fopen("merge.sol", "w");
    int *c = new int[n + m];
 
    merge(a, b, c, n, m);
 
    for(d = 0; d < (n + m);d++)
        fprintf(e,"%d\n", c[d]);
    fclose(e);
 
    delete[]a;
    delete[]b;
    delete[]c;
 
    return 0;
}
Цитата Сообщение от alsav22 Посмотреть сообщение
но сортировка криво работает
То есть, дело может быть в сливании массивов?
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 05:05
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
но все равно выдает "Неправильный ответ".
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
То есть, дело может быть в сливании массивов?
Для этого достаточно открыть блокнотом файл merge.sol и посмотреть результат.
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
13.06.2014, 14:26  [ТС]
alsav22, Вот взгляните. Данные во входном и выходном файлах(изображения). Вроде же верно.
Изображения
  
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 16:21
C++
1
2
3
4
 
for(q = 0;q < (m - 1);q++)
     fprintf(g,"%d ", b[q]);
fprintf(g, "%d\n", a[m - 1]); // с какого испугу тут массив a[] появился?
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Вроде же верно.
Насчёт сортировки я не знал, что числа, в исходных массивах, должны идти в невозрастающем порядке, поэтому и написал, что сортировка криво работает.
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
13.06.2014, 17:20  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
с какого испугу тут массив a[] появился?
да, это мой пролет) Сейчас попробую.

Добавлено через 11 минут
alsav22, Все равно "Неправильный ответ". Ну как так? Вот код.
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
80
81
#include <stdio.h>
 
int n, m;
int i, q, d;
 
void merge(int a[], int b[], int c[], int n, int m){
    int A(0), B(0);
 
    while((A + B) < (n + m))
    {
        if( (B >= m) || ( (A < n) && (a[A] >= b[B]) ) )
        {
            c[A + B] = a[A];
            ++A;
        } else
        {
            c[A + B] = b[B];
            ++B;
        }
    }
}
int main()
{
    FILE *g;
    FILE *f;
    FILE *e;
 
    g = fopen("merge.dat", "w");
 
    scanf("%d", &n);
    int *a = new int[n];
 
    for(i = 0; i < n;i++)
        scanf("%d", &a[i]);
 
    scanf("%d", &m);
    int *b = new int[m];
 
    for(q = 0;q < m;q++)
        scanf("%d", &b[q]);
 
    fprintf(g, "%d\n", n);
 
    for(i = 0; i < (n - 1);i++)
        fprintf(g,"%d ", a[i]);
    fprintf(g, "%d\n", a[n-1]);
 
    fprintf(g, "%d\n", m);
 
    for(q = 0;q < (m - 1);q++)
        fprintf(g,"%d ", b[q]);
    fprintf(g, "%d\n", b[m - 1]);
    fclose(g);
 
    f = fopen("merge.dat", "r");
 
    fscanf(g,"%d", &n);
 
    for(i = 0; i < n;i++)
        fscanf(g,"%d", &a[i]);
    fscanf(g,"%d", &m);
 
    for(q = 0;q < m;q++)
        fscanf(g,"%d", &b[q]);
    fclose(f);
 
    e = fopen("merge.sol", "w");
    int *c = new int[n + m];
 
    merge(a, b, c, n, m);
 
    for(d = 0; d < (n + m);d++)
        fprintf(e,"%d\n", c[d]);
    fclose(e);
 
    delete[]a;
    delete[]b;
    delete[]c;
 
    return 0;
}
А вот, на всякий случай, условие задачи.

Формат входного файла merge.dat

Текстовый файл merge.dat содержит четыре строки. В первой строке записано натуральное число N (1 ≤ N ≤ 100 000) — количество дуболомов в первой шеренге.

Вторая строка содержит N натуральных чисел, записанных через пробел. Числа идут в невозрастающем порядке. Каждое число лежит в диапазоне от 1 до 1 000 000 000.

В третьей строке записано натуральное число M (1 ≤ M ≤ 100 000) — количество дуболомов во второй шеренге.

Четвертая строка содержит M натуральных чисел, записанных через пробел. Числа идут в невозрастающем порядке. Каждое число лежит в диапазоне от 1 до 1 000 000 000.

Формат выходного файла merge.sol

Текстовый файл merge.sol должен содержать N+M чисел, идущих в невозрастающем порядке. Каждое число — это рост соответствующего дуболома из первой или из второй шеренги. Каждое число должно выводиться в отдельную строку.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 17:22
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Все равно
Это, к найденной ошибке, не относится. Выручало то, что массивы одинаковой длины, и последние элементы одинаковые.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2014, 17:22

Debug assertion failed
Здравствуйте, ошибка выскакивает, как решить? Выскакивает при входе в конструктор класса ниже //Класс для создания...

Debug assertion failed
Проблема при попытке релиза, дебажится при этом нормально, объясните мне, что может быть не так, где искать баги. (скрин ниже) ...

Debug Assertion Failed
Создавал небольшой генератор ролей для персонажа и натолкнулся на проблему пиктрелейтед. До определенного момента все работало, пока я не...

Debug assertion failed
Здравствуйте! Есть 2 двусвязных списка. Нужно написать метод merge который эти списки соединяет. Сам метод я написал. Запускаю, ввожу...

Debug assertion failed
Приветствую! Не могу найти ошибку в функции readn, которая должна: считывать сначала размерность матрицы из файла, потом выделять память...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru