Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 22.11.2020
Сообщений: 11
1

Ошибка в динамическом массиве

05.03.2021, 02:43. Показов 1086. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1 Задача Создать массив в виде динамического списка
2 Задача Создать новый динамический список из первого динамического списка без min и max
3 Задание Создайте новый динамический список из первого динамического списка поменяв местами 1 элемент с min

Подскажите где ошибка
Программа компилируется но с некорректными данными

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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;
 
struct p
{
    int e;
    p* next;
};
 
// процедура виведення елементів списку
void print(p* list)
{
    while (list)
    {
        cout << list->e << " ";
        list = list->next;
    }
}
int main()
{
    system("cls");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    //srand(time(NULL));
    int k, n, m;
    p* begin = NULL; // вказівник на голову списку
    p* last = NULL; // вказівник на поточний останній елемент списку
    p* list = NULL; // вказівник на поточний елемент списку
    p* begin1 = NULL; // вказівник на голову списку
    p* last1 = NULL; // вказівник на поточний останній елемент списку
    p* list1 = NULL; // вказівник на поточний елемент списку
    p* begin2 = NULL; // вказівник на голову списку
    p* last2 = NULL; // вказівник на поточний останній елемент списку
    p* list2 = NULL; // вказівник на поточний елемент списку
    
    cout << "Введіть кількість елементів масиву n = ";
    cin >> n;
    int min=50, max=-50;
    while (n>0)
    {
    last = new p;
    last->e = rand()%100-50;
 
    if((last->e)>max)
    {
        max=last->e;
    }
    if((last->e)<min)
    {
        min=last->e;
    }
 
    if (begin == NULL)
    {
    last->next = NULL;
    begin = last;
    }
    else
    {
    last->next = NULL;
    list->next = last;
    }
    list = last;
    n--;
    }
 
    list=begin;
    while(list)
    {
        if(last->e != min && last->e != max)
        {
        last1 = new p;
        last1->e = last->e;
        if (begin1 == NULL)
        {
            last1->next = NULL;
            begin1 = last1;
        }
        else
        {
            last1->next = NULL;
            list1->next = last1;
        }   
        list1 = last1;
        }
    list = list->next;
    }
    
    int w=0, z;
    list=begin;
    while(list)
    {
        if(w==0)
        {
        z=last->e;
        last2 = new p;
        last2->e = min;
            if (begin2 == NULL)
            {
                last2->next = NULL;
                begin2 = last2;
            }
            else
            {
                last2->next = NULL;
                list2->next = last2;
            }
                list2 = last2;
        w++;
        }
        else
        {
            if(last->e != min)
            {
            last2 = new p;
            last2->e = last->e;
                if (begin2 == NULL)
                {
                    last2->next = NULL;
                    begin2 = last2;
                }
                else
                {
                    last2->next = NULL;
                    list2->next = last2;
                }
                list2 = last2;
            }
            else
            {
                last2 = new p;
                last2->e = z;
                if (begin2 == NULL)
                {
                    last2->next = NULL;
                    begin2 = last2;
                }
                else
                {
                    last2->next = NULL;
                    list2->next = last2;
                }
                list2 = last2;  
                }
        }
    list = list->next;
    }
    
    
    cout << "\nСтоворений масив у вигляді списку = \n";
    print(begin);
    cout << "\nПеретворений масив у вигляді списку без min і max = \n";
    list1=begin1;
    cout << "\nПеретворений масив у вигляді списку із заміною 1 елемента з min = \n";
    list2=begin2;
    print(begin2);
    
    //звільняємо виділену динамічну пам'ять під список
    while (begin)
    {
        list = begin;
        begin = list->next;
        delete list;
    }
    delete begin;
    //звільняємо виділену динамічну пам'ять під список
    while (begin1)
    {
        list1 = begin1;
        begin1 = list1->next;
        delete list1;
    }
    delete begin1;
    //звільняємо виділену динамічну пам'ять під список
    while (begin2)
    {
        list2 = begin2;
        begin2 = list2->next;
        delete list2;
    }
    delete begin2;
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2021, 02:43
Ответы с готовыми решениями:

Ошибка в динамическом массиве
Проблема при добавлении сотрудника. Первый сотрудник добавляется просто прекрасно, а вот при записи...

Ошибка в одноиерном динамическом массиве
Здравствуйте, программа не правильно выводит на экран обработанный массив. Пункт 1 выполняется,...

Ошибка присваивания в динамическом массиве структур
Доброго времени суток! Я новичок в программировании, прошу не пинать сильно :) Изучаю С++ по...

В динамическом массиве удалить N элементов, начиная с номера K (ошибка)
Помогите, как исправить ошибку? Нужно из массива arr , который перед этим формируется рандомно....

2
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
05.03.2021, 06:39 2
Цитата Сообщение от progam Посмотреть сообщение
массив в виде динамического списка
Массив и список это совершенно разные структуры данных, каждая из которых обладает определенными свойствами.
0
0 / 0 / 0
Регистрация: 22.11.2020
Сообщений: 11
05.03.2021, 16:30  [ТС] 3
я понял но какая ошибка в самом коде
0
05.03.2021, 16:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2021, 16:30
Помогаю со студенческими работами здесь

Функция для удаления элемента в двумерном динамическом массиве. В чем ошибка?
функция для удаления элемента в двум дин массиве (пока только часть в которой указывается какой...

Ошибка в программе. Нужно добавить строку в динамическом массиве в указанную пользователем позицию
Вот то , что у меня есть. Выводит массив до pos и выкидывает. #include &lt;iostream&gt; #include...

Хочу чтобы в динамическом массиве вводились мои значения, вылазит ошибка об отправлении отчёта
Работаю на visual c++ 6.0 ,прогу мне нужно писать через source file. Суть такова: динамический...

Ошибка "double free or corruption" в динамическом двумерном массиве
Доброго времени. Не могу понять, почему выскакивает эта ошибка: *** Error in `./a.out': double...

Не могу найти ошибку с подсчетом суммы элементов в интервале[a,b] в динамическом одномерном массиве массиве.
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;iomanip&gt;...

nullptr в динамическом массиве
Посмотрел видео SimpleCode. В целом он говорит, что после delete нужно присваивать nullptr. int...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru