Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 30.11.2020
Сообщений: 31

Ошибка: при выводе всех элементов очереди добавляется в конец -842150451

03.04.2021, 15:57. Показов 935. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Первая ошибка, что при выводе всех элементов очереди добавляется в конец всегда -842150451, не могу понять как исправить эту ошибку. Также надо реализовать следующие операции:
a. определение текущего числа элементов в очереди;
b. определение размера очереди;

 Комментарий модератора 
П.5.16.Правил
Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.


Помогите, пожалуйста, довести весь код до ума.

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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#include <windows.h>
#include <iostream>
#include <conio.h>
#include <tchar.h>
#include <clocale>
 
using namespace std;
 
/*Объявление главной структуры*/
struct Queue
{
    int Data;
    struct Queue* next; // Указатель на следующий элемент очереди 
};
 
Queue* head; // Указатель на голову очереди
Queue* tail; // Указатель на хвост очереди
 
int kol = 0; //Количество элементов
 
void Creation();                    /*Функция, которая создает очередь*/
void Add_last(Queue* temp);         /*Функция, которая добавляет элемент в конец*/
void Head_to_tail();                /*Считывание элемента из "головы" и перенос в "хвост"*/
void show_menu();                   /*Вывод информации для главного меню*/
void menu();                        /*Главное меню*/
void Loading(struct Queue* array);  /*Загрузка данных из очереди в массив*/
void inf();                         /*Информация об элементе*/
void check_kol();                   /*Проверка на пустой список*/
 
/*Функция, которая создает очередь*/
void Creation() // Создание очереди
{
    head = (Queue*)malloc(sizeof(Queue));
    head->next = NULL;
    tail = head;
    kol = 0;
}
 
/*Проверка на пустой список*/
void check_kol()
{
    if (kol == 0)
    {
        cout << "Список пуст!" << endl;
        system("pause");
        menu();
    }
}
 
/*Функция, которая добавляет элемент в конец*/
void Add_last(Queue* temp)
{
    tail->Data = temp->Data;
    tail->next = (Queue*)malloc(sizeof(Queue));
    tail = tail->next;
    tail->next = NULL;  //обнуление указателя на следующий элемент 
    kol++;
}
 
/*Считывание элемента из "головы" и перенос в "хвост"*/
void Head_to_tail()
{
    Queue* buff = head;
    tail->Data = buff->Data;
    tail->next = (Queue*)malloc(sizeof(Queue));
    tail = tail->next;
    tail->next = NULL;
    buff = head->next;
    free(head);
    head = buff;
}
 
/*Вывод списка*/
void Tablitsa()
{
    int i = 0;
    for (Queue* p = head; p; p = p->next)
        printf("%d) %d\n", ++i, p->Data);
}
 
/*Вывод информации для главного меню*/
void show_menu()
{
    system("cls");
    cout << "1 - Добавить элемент" << endl;
    cout << "2 - Просмотр одного элемента" << endl;
    cout << "3 - Просмотр всех элементов" << endl;
    cout << "4 - Выход" << endl;
}
 
/*Загрузка данных из очереди в массив*/
void Loading(struct Queue* array)
{
    for (int i = 0; i < kol; i++) {
        array[i].Data = head->Data;
        Head_to_tail();
    }
}
 
/*Ввод элементов с клавиатуры*/
void input()
{
    system("cls");
    Queue queue;
    int num;
    cout << "Введите число: ";
    cin >> num;
    queue.Data = num;
    Add_last(&queue);
}
 
/*Информация об элементе*/
void inf()
{
    int Num;
    system("cls");
    cout << "Введите номер элемента: ";
    cin >> Num;
    Num = Num - 1;
    Queue* array = new Queue[kol];
    Loading(array);
    cout << "Число: " << array[Num].Data << endl;
}
 
/*Главное меню*/
void menu()
{
    char ch;
    show_menu();
    while (1)
    {
        ch = _getch();
        if (ch == 49)
        {
            system("cls");
            input();
            system("pause");
            menu();
        }
        if (ch == 50)
        {
            system("cls");
            check_kol();
            inf();
            system("pause");
            menu();
        }
        if (ch == 51)
        {
            system("cls");
            check_kol();
            Tablitsa();
            system("pause");
            menu();
        }
        if (ch == 52)
        {
            exit(0);
        }
    }
}
 
/*Главная функция*/
int main()
{
    setlocale(LC_ALL, "rus");
    Creation();
    menu();
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.04.2021, 15:57
Ответы с готовыми решениями:

Переместить N начальных элементов первой очереди в конец второй очереди
Дано число N (&gt; 0) и две непустые очереди; адреса начала и конца первой равны P1 и P2, а второй - P3 и P4. Переместить N начальных...

Переместить N начальных элементов первой очереди в конец второй очереди
вот условие задачи Дано число N(&gt;0) и две непустые очереди; адреса начала и конца первой равны P1 и P2, а второй - P3 иP4. Переместить N...

Перемещение элементов первой очереди в конец другой очереди
Задано две непустые очереди; адреса начала и конца первой очереди P1 и P2, а второй - P3 и P4. Переместить элементы первой очереди (в...

6
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
03.04.2021, 16:46
Цитата Сообщение от ssoooonechka Посмотреть сообщение
Первая ошибка, что при выводе всех элементов очереди добавляется в конец всегда -842150451, не могу понять как исправить эту ошибку. Т
Цитата Сообщение от ssoooonechka Посмотреть сообщение
/*Функция, которая создает очередь*/
void Creation() // Создание очереди
Это выводится элемент, который ты создаёшь в этой функции. Не надо его создавать. Просто проверяй head при добавлении элемента, в Add_last

Добавлено через 58 секунд
Цитата Сообщение от ssoooonechka Посмотреть сообщение
/*Загрузка данных из очереди в массив*/
void Loading(struct Queue* array)
{
    for (int i = 0; i < kol; i++) {
        array[i].Data = head->Data;
        Head_to_tail();
    }
}
Это тоже переделай по аналогии с Tablitsa()
Head_to_tail убери вообще
0
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
03.04.2021, 16:54
ssoooonechka, как задача изначально формулируется? у тебя какая-то лютая смесь С и С++ - на чем написать-то нужно? И потом:
7 строка тянет в глобальную видимость всё пространство std.
и дальше тоже сплошной "глобализм"
0
0 / 0 / 0
Регистрация: 30.11.2020
Сообщений: 31
03.04.2021, 18:42  [ТС]
Цитата Сообщение от SergioO Посмотреть сообщение
как задача изначально формулируется?
Задача звучит следующим образом:
Реализовать представление очереди. Работу со структурами организовать в виде текстового меню.
2. Дополнительно разработать следующие операции:
a. определение текущего числа элементов в очереди;
b. определение размера очереди;

Вообще надо написать на С++, но как-то вообще не получается довести код до ума, также нельзя использовать различные библиотеки для очереди, нужно построить на основе списка.
0
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
03.04.2021, 18:51
Цитата Сообщение от ssoooonechka Посмотреть сообщение
b. определение размера очереди;
это в смысле сколько байт занимает?

Не по теме:

завтра смогу попробовать - сегодня поздно уже просто

0
0 / 0 / 0
Регистрация: 30.11.2020
Сообщений: 31
03.04.2021, 18:56  [ТС]
Цитата Сообщение от SergioO Посмотреть сообщение
это в смысле сколько байт занимает?
предполагаю, что да
0
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
04.04.2021, 06:28
Цитата Сообщение от ssoooonechka Посмотреть сообщение
Реализовать представление очереди.
а какую очередь нужно реализовать: LIFO, FIFO, с произвольным доступом? и есть ли требования по реализации: на базе массивов или списков?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.04.2021, 06:28
Помогаю со студенческими работами здесь

Ошибка: добавляется -1 в конец карточки товара
Здравствуйте модх почему-то синонимизирует карточки по другому и добавляет -1 в конец, отчего чпу меняется. из-за чего происходит не...

При выводе из файла добавляется лишний символ
Есть содержимое файла: 12345 Once I caught a fish alive 45678910 Then I let it go again 111213314 Код выводит это...

Реализовать функцию удаления из очереди всех элементов, размещенных до минимального элемента очереди
Помогите, пожалуйста, реализовать функцию удаления из очереди всех элементов, розмещенных до минимального элемента очереди для односвязного...

Ошибка при выводе элементов структуры
Есть файл содержимое, которого примерно такое Ni Du MATI Va Kr MATI где первый столбик - имя, второй - фамилия, третий - университет....

При выводе текста в Memo добавляется пустая строка (без пробелов, просто курсор стоит)
вот код как я пытался убрать этот курсор: procedure FullShowText(l:TLabel); var s:string; begin Form2.ADOQuery1.Close; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru