Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249

Ошибка при вызове функции

25.12.2015, 17:59. Показов 2779. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ошибка в строке 90, при пошаговом выполнении она появляется при вызове функции, до захода в нее, хотя список сформирован правильно, т.к. до нее выводится. Подскажите пожалуйста как это исправить
Входной файл приложила.
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <iostream>
#include <fstream>
#include <Windows.h>
using namespace std;
 
struct Queue
{
    char ch;
    Queue *next;
};
 
void Add(Queue *&first, Queue *&last, char ch)
{
    Queue *newelem = new Queue;
    newelem->ch = ch;
    newelem->next = nullptr;
    if (first == nullptr)
        first = last = newelem;
    else
        last = last->next = newelem;
}
 
void Transform(Queue *&first, Queue *&last)
{
    Queue *oldlast = last;
    bool end = false;
    for (Queue *cur = first, *prev = nullptr; cur != nullptr && !end;)
    {
        if (cur == oldlast)
            end = true;
        if (cur->ch >= '0' && cur->ch <= '9')
        {
            if (prev != nullptr)
                prev->next = cur->next;
            last->next = cur;
            cur->next = nullptr;
            last = cur;
            cur = prev->next;
        }
        else
            cur = cur->next;
    }
}
 
void Print(ofstream &fout, Queue *first)
{
    for (Queue *cur = first; cur != nullptr; cur = cur->next)
        fout << cur->ch;
    fout << endl;
}
 
void Clear(Queue *&first, Queue *&last)
{
    for (Queue *tmp = first; first != nullptr; tmp = first)
    {
        first = first->next;
        delete tmp;
    }
    last = nullptr;
}
 
void Print(Queue *first)
{
    for (Queue *cur = first; cur != nullptr; cur = cur->next)
        cout << cur->ch;
    cout << endl;
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    char ch;
    Queue *first = nullptr, *last = nullptr;
 
    while (!fin.eof())
    {
        while (true)
        {
            ch = fin.get();
            if (ch != '\n' && !fin.eof())
                Add(first, last, ch);
            else
                break;
        }
        Print(first);
        system("pause");
        Transform(first, last);
        Print(fout, first);
        Clear(first, last);
    }
 
    fin.close();
    fout.close();
 
    system("pause");
    return 0;
}
Миниатюры
Ошибка при вызове функции  
Вложения
Тип файла: txt input.txt (33 байт, 6 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.12.2015, 17:59
Ответы с готовыми решениями:

Ошибка при вызове функции
Добрый день! Есть функция по расчету детерминанта int _det(int size,double **arr,double &amp;det) { int i,j,k; det=1; double b; ...

Ошибка при вызове функции
В функции NewWords вызывается функция correct,при отладке я не могу войти в эту функцию,к тому же потом не выводится элементы объекта...

GCC ошибка при вызове функции
Здравствуйте. Проблема в следующем: при вызове функции sub из тела add выдается ошибка. http://puu.sh/3bFZj.png Путем экспериментов...

5
 Аватар для _Valera_
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
25.12.2015, 18:08
Лучший ответ Сообщение было отмечено MayaNash как решение

Решение

стр 33
Цитата Сообщение от Керра Посмотреть сообщение
if (prev != nullptr)
* * * * * * * * prev->next = cur->next;
тут проверка стоит , а ниже уже нет

Цитата Сообщение от Керра Посмотреть сообщение
cur = prev->next;
то есть prev->next, вполне может и не существует.
1
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
25.12.2015, 18:13
Лучший ответ Сообщение было отмечено MayaNash как решение

Решение

В функции Transform указатель prev в цикле не меняется и всегда равен nullptr,а в 38 строке мы к нему обращаемся.
2
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
25.12.2015, 18:15  [ТС]
Спасибо большое!
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
25.12.2015, 18:18
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

Вот так нормально работает.
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
void Transform(Queue *&first, Queue *&last)
{
    Queue *oldlast = last;
    bool end = false;
    for (Queue *cur = first, *prev = nullptr; cur != nullptr && !end;)
    {
        if (cur == oldlast)
            end = true;
        if (cur->ch >= '0' && cur->ch <= '9')
        {
            if (prev != nullptr)
                prev->next = cur->next;
            last->next = cur;
            cur->next = nullptr;
            last = cur;
            cur = prev->next;
        }
        else
        {
            prev = cur;
            cur = cur->next;//Добавить это
        }
    }
}
3
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
25.12.2015, 18:19  [ТС]
Дада, я поняла))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.12.2015, 18:19
Помогаю со студенческими работами здесь

Ошибка компиляции при вызове функции strcpy
Подскажите пожалуйста чего он ругается

Ошибка компиляции при вызове виртуальной функции
Здравствуйте. Сильно не плюйтесь, в С я не силен. Пишу на джаве, но попал в руки код, в котором нужно разобраться. Не пойму в чем...

Ошибка при вызове шаблона функции в другом классе
цель моей функции- выводить значения переменной в любом формате. функция в классе : .h class A { template &lt;typename...

Ошибка при вызове виртуальной функции в производном классе
Здравствуйте, извините, если подобная тема появлялась, но либо у меня руки не от туда растут, либо ее небыло... проблема в следующем:...

Ошибка при вызове функции добавления нового элемента в массив
Описывается класс Datchik. Затем в классе Lists объявляется массив объектов класса датчик и описывается функция NewDatchik добавления...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru