Форум программистов, компьютерный форум CyberForum.ru

Что за ошибка и почему? - C++

Восстановить пароль Регистрация
 
Kiragaz
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 13
12.04.2013, 21:18     Что за ошибка и почему? #1
Нужно сделать двунаправленный список с кучей функций, список создал, много чего сделал, осталось добавление и обновление.
Уже около недели воюю с программой пытаясь добиться хоть какого нибудь добавления, но пока ничего, может поможете советом или ещё как нибудь разобраться что я пишу не так.

Вот то что у меня есть
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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
//------------------------------------------------------------------------------
#include <iostream.h>
#include <fstream.h>
#include <ctime.h>
#include <windows.h>
#include <stdio.h>
#include <vcl.h>
//==============================================================================
//обьявление списка
struct Double_List {//структура данных
                    int Data;//информационное поле
                    char performer[30];
                    Double_List *Next, //адресное поле
                                *Prior; //адресное поле
             };
 
Double_List *Head; //указатель на первый элемент списка
int prd;
int prdx;
Double_List *Current;//указатель на текущий элемент списка (при необходимости)
Double_List *Endl;//указатель на конец списка
 
//==============================================================================
//создание двунаправленного списка (добавления в конец)
void Make_Double_List(int n,Double_List** Head,Double_List* Prior){
  if (n > 0) {
    (*Head) = new Double_List();//выделяем память под новый элемент
    cout << "Введите год издания и исполнителя: ";
    cin >>(*Head)->Data>>(*Head)->performer;//вводим значение информационного поля
    (*Head)->Prior = Prior;
    (*Head)->Next=NULL;//обнуление адресного поля
    Make_Double_List(n-1,&((*Head)->Next),(*Head));
  }
  else (*Head) = NULL;
}
 
//==============================================================================
//печать двунаправленного списка
void Print_Double_List(Double_List* Head) {
  if (Head != NULL) {
    cout << Head->Data <<"-"<<Head->performer<< "\t";
    Print_Double_List(Head->Next);//переход к следующему элементу
  }
  else cout << "\n";
}
 
//==============================================================================
//вставка элемента с заданным номером в двунаправленный список
Double_List* Insert_Item_Double_List(Double_List* Head,int Number,int Data,char performer){
  Number--;
  Double_List *NewItem=new Double_List();
  NewItem->Data=Data;
  NewItem->performer=performer; //вот на эту строчку ругается вот так: [C++ Error] Unit1.cpp(53): E2277 Lvalue required
  NewItem->Prior=NULL;
  NewItem->Next = NULL;
  if (Head == NULL) {//список пуст
    Head = NewItem;
  }
  else {//список не пуст
    Double_List *Current=Head;
    for(int i=1; i < Number && Current->Next!=NULL; i++)
    Current=Current->Next;
    if (Number == 0){ //вставляем новый элемент на первое место
      NewItem->Next = Head;
      Head->Prior = NewItem;
      Head = NewItem;
    }
    else {//вставляем новый элемент на непервое место
      if (Current->Next != NULL) Current->Next->Prior = NewItem;
      NewItem->Next = Current->Next;
      Current->Next = NewItem;
        NewItem->Prior = Current;
      Current = NewItem;
    }
  }
  return Head;
}
 
//==============================================================================
 /*удаление элемента с заданным номером из двунаправленного списка*/
Double_List* Delete_Item_Double_List(Double_List* Head, int Number){
  Double_List *ptr;//вспомогательный указатель
  Double_List *Current = Head;
  for (int i = 1; i < Number && Current != NULL; i++)
    Current = Current->Next;
  if (Current != NULL){//проверка на корректность
    if (Current->Prior == NULL){//удаляем первый элемент
      Head = Head->Next;
      delete(Current);
      Head->Prior = NULL;
      Current = Head;
    }
    else {//удаляем непервый элемент
      if (Current->Next == NULL) {
      //удаляем последний элемент
        Current->Prior->Next = NULL;
        delete(Current);
        Current = Head;
      }
      else {//удаляем непервый и непоследний элемент
        ptr = Current->Next;
        Current->Prior->Next =Current->Next;
        Current->Next->Prior =Current->Prior;
        delete(Current);
        Current = ptr;
      }
    }
  }
  return Head;
}
 
//==============================================================================
//сортировка списка
void Sort_Double_List(Double_List* &top,Double_List* &endl,int key){
{//сортировка Выбором
Double_List* sort;    // элемент для того, чтобы запоминать отсортированные элементы
Double_List* big;    // переменная для хранения или самого большого элемента, или наоборот
Double_List* temp;   // временная переменная, ней мы пробегаем по циклам
temp = big = Head;       // начальные значения
sort = NULL;
 while (big!=NULL)    // пока у нас есть не отсортированные элементы
 {
    big=temp;     // запоминаем наименший элемент как первый из неотсорт списка
    if(big!=NULL) //проверка последнего прохода
    {
    while (temp!=NULL)
    {
            switch(key)
        {   //проверка по ключу            //поиск минимального элемента
            case 1://по году издания
            if (temp->Data<big->Data) big=temp;break;
        }
 
      temp=temp->Next;//следующий элемент
    }
    if (big->Prior!=NULL)
       big->Prior->Next=big->Next;   // отчленение минимального из списка
    if (big->Next!=NULL)
       big->Next->Prior=big->Prior;
    if (sort!=NULL)
    {
        big->Next=sort->Next;    // так вставляем если уже есть
        sort->Next=big;           // сортированный список
        big->Prior=sort;
        if(big->Next!=NULL)     // для последнего элемента,
        {                          // чтобы не присваивать  пустоте значения
        big->Next->Prior=big;
        }
        sort=big;              //запомиманем конец отсортированного списка
    }
    else                       // если первый элемент отсортированного
      {
        if (big!=Head) big->Next=Head;
        big->Prior=NULL;
        big->Next->Prior=big;
        Head=sort=big;       // запоминаем указатели на конец и
      }                     // начала нового сортированного списка
  temp=big->Next; // передвигаем указатель на начало не сорт списка
      }
 }
temp=Head;
while(temp!=NULL)
   {
     endl=temp;
     temp=temp->Next;
   } //находим последний элемент
  }
 }
 
//==============================================================================
//освобождение памяти, выделенной под двунаправленный список
void Delete_Double_List(Double_List* Head){
  if (Head != NULL){
    Delete_Double_List(Head->Next);
    delete Head;
  }
}
 
//==============================================================================
//нахождение номера элемента в списке
Double_List *Search(int Number)
{
    Double_List *lmnt=Head->Next;
    while(lmnt!=Head && lmnt->Data!=Number)
    {
        lmnt = lmnt->Next;
        prd+=1;
    }
    if (lmnt == Head)
        return lmnt;
    else
        return NULL;
}
/*
//==============================================================================
int Empty()
{
    if ( Head->Next==Head && Head->Prior == Head ) return 1;
    else return 0;
}
//==============================================================================
Double_List *SearchB(int Number)
{
   Double_List *lmnt=Head->Next;
    while(lmnt!=Head && lmnt->Data!=Number)
    {
        lmnt = lmnt->Prior;
        prdx+=1;
    }
    if (lmnt == Head)
        return lmnt;
    else
        return NULL;
}
 
//==============================================================================
void AddAft(int Number, int point)
{
        Double_List* lmnt=(Double_List*)malloc(10*sizeof(Double_List));
        lmnt->Next=Head;
        lmnt->Prior=Head;
        lmnt->Data=Number;
        Head->Next=lmnt;
        Head->Prior=lmnt;
 
    Double_List *current=Search(point);
    if (current!=NULL)
    {
        Double_List *lmnt=(Double_List*)malloc(10*sizeof(Double_List));
        lmnt->Next=current->Next;
        lmnt->Prior=current;
        lmnt->Data=Number;
        current->Next->Prior=lmnt;
        current->Next=lmnt;
     }
 
}
 
//==============================================
void AddBef(int Number, int point)
{
  Double_List *current = SearchB(point);
    if (current!=NULL)
    {
      Double_List *lmnt=(Double_List*)malloc(10*sizeof(Double_List));
        lmnt->Data=Number;
        lmnt->Next=current;
        lmnt->Prior=current->Prior;
        current->Prior->Next=lmnt;
        current->Prior=lmnt;
            }
 
}
*/
 
//==============================================================================
main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
int Number,lmnt,Data;
int n,key;
char ans2,performer;
 
//создание списка из n элементов
cout<<"Введите количество элементов для спика: ";
cin>>n;
Make_Double_List(n,&Head,NULL);
//вывод списка на экран
Print_Double_List(Head);
 
//удаление элемента списка
cout<<"Какой элемент удалить: ";
cin>>Number;
Delete_Item_Double_List(Head,Number);
Print_Double_List(Head);
 
cout<<"Куда всталлять: ";
cin>>Number;
cout<<"Что вставлять: ";
cin >>Data>>performer;
Insert_Item_Double_List(Head,Number,Data,performer);
Print_Double_List(Head);
 
 /*
//добовление элемента в список
 cout << " Введите элемент для добавления : " ;
            cin >> lmnt;
            cout << endl;
            if (Empty() == 1 )
            {
                AddAft(lmnt,0);
                cout << " Элемент добавлен " << endl;
            } else
   cout << "1 - Добавить перед " << endl << "2 - Добавить после  " << endl << "Ваш выбор:  " ;
             cin >> ans2;
            switch(ans2)
             {
            case '1' :
                 cout << " Перед каким элементом добавить: ";
                 cin >> Number;
                AddAft(lmnt,Number);
                 cout<<" Элемент добавлен "<< endl; break;
            case '2' :
                 cout << " После какого элемента добавить: ";
                 cin >> Number;
                AddBef(lmnt,Number);
                 cout << " Элемент добавлен " << endl; break;
            default :
                     cout << " Ошибка, такого пункта нету"<< endl; break;
             }
 
 */
 
//нахождение номера элемента в списке
cout << "Введите год издания: ";
cin >> lmnt;
prd=0;
if (Search(lmnt)!= NULL)
 {
cout<<"Элемент не найден."<<endl;
  }
else
{cout << prd+1 << endl;}
 
//сортировка списка
Sort_Double_List(Head,Endl,1);
Print_Double_List(Head);
 
//удаление списка целиком
Delete_Double_List(Head);
 
 
system ("pause");
}
Заранее спасибо за помощь!!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2013, 21:18     Что за ошибка и почему?
Посмотрите здесь:

Почему возникает ошибка? C++
Почему ошибка? C++
C++ Почему ошибка значения?
(матрица)Почему ошибка в if? C++
почему работает несмотря ни на что? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
12.04.2013, 22:51     Что за ошибка и почему? #2
Цитата Сообщение от Kiragaz Посмотреть сообщение
осталось добавление и обновление.
То есть списка вообще нет. И это после
Цитата Сообщение от Kiragaz Посмотреть сообщение
с кучей функций, список создал, много чего сделал,
. С чего ты вообще взял, что что то сделал? Как ты вообще тестил, если у тебя даже добавления нет?
gazlan
2855 / 1803 / 271
Регистрация: 27.08.2010
Сообщений: 4,883
Записей в блоге: 1
13.04.2013, 08:04     Что за ошибка и почему? #3
Написано все криво и код нечитаемый. Инициализации нигде нет, а так... добавление работает.

Вот это смотрел:

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
// обьявление списка
struct ListNode 
{                 
   int            Data;    // информационное поле
   char           pszPerformer[30];
   ListNode*      Next;    // адресное поле
   ListNode*      Prior;   // адресное поле
};
 
ListNode*      Head    = NULL;   // указатель на первый элемент списка
ListNode*      Current = NULL;   // указатель на текущий элемент списка (при необходимости)
ListNode*      Endl    = NULL;   // указатель на конец списка
         
int      prd  = 0;
int      prdx = 0;
 
//==============================================================================
 
// создание двунаправленного списка (добавления в конец)
void MakeList(DWORD dwSize,ListNode** Head,ListNode* Prior)
{
   if (!dwSize) 
   {
      *Head = NULL;
 
      return;
   }
 
   *Head = new ListNode(); // выделяем память под новый элемент
 
   if (!*Head)
   {
      return;
   }
 
   cout << "Введите год издания и исполнителя: ";
 
//   cin >> (*Head)->Data >> (*Head)->pszPerformer;  // вводим значение информационного поля
(*Head)->Data = 1;
strcpy((*Head)->pszPerformer,"TEST");
 
   (*Head)->Prior = Prior;
   (*Head)->Next  = NULL;  //обнуление адресного поля
   
   MakeList(dwSize - 1,&((*Head)->Next),*Head);
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ListNode* Search(int iNum)
{
   ListNode*   lmnt = Head->Next;
 
   while ((lmnt != Head) && (lmnt->Data != iNum))
   {
      lmnt = lmnt->Next;
 
      ++prd;
   }
 
   if (lmnt == Head)
   {
      return lmnt;
   }
 
   return NULL;
}
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
void AddAfter(int Number,int point)
{
   ListNode*   lmnt = (ListNode*)malloc(sizeof(ListNode));
 
   lmnt->Next  = Head;
   lmnt->Prior = Head;
   lmnt->Data  = Number;
   
   Head->Next  = lmnt;
   Head->Prior = lmnt;
 
   ListNode*      current = Search(point);
 
   if (!current)
   {
      return;
   }
 
   ListNode*   lmnt = (ListNode*)malloc(sizeof(ListNode));
 
   lmnt->Next  = current->Next;
   lmnt->Prior = current;
   lmnt->Data  = Number;
 
   current->Next->Prior = lmnt;
   current->Next        = lmnt;
}


И здесь надо исправить:

C++
1
2
3
4
5
// вставка элемента с заданным номером в двунаправленный список
ListNode* InsertNode(ListNode* Head,int Number,int Data,const char* const pszPerformer)
{
// ...
   strcpy(NewItem->pszPerformer,pszPerformer);
Kiragaz
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 13
13.04.2013, 09:40  [ТС]     Что за ошибка и почему? #4
Цитата Сообщение от taras atavin Посмотреть сообщение
То есть списка вообще нет. И это после
. С чего ты вообще взял, что что то сделал? Как ты вообще тестил, если у тебя даже добавления нет?
сам список создаётся, только я не могу в имеющийся список добавить новый элемент
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.04.2013, 09:43     Что за ошибка и почему? #5
Цитата Сообщение от Kiragaz Посмотреть сообщение
сам список создаётся, только я не могу в имеющийся список добавить новый элемент
если ты не можешь добавит элемент, то как он создаётся? "Я на улицу вышел, только до сих пор с кровати встать не могу"? Список состоит из элементов, пока ни один в него не добавлен, списка нет.
Kiragaz
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 13
13.04.2013, 10:24  [ТС]     Что за ошибка и почему? #6
C++
1
2
3
4
5
6
void AddAfter(int Number,int point)
{
   ListNode*   lmnt = (ListNode*)malloc(sizeof(ListNode));
//.......
 
   ListNode*   lmnt = (ListNode*)malloc(sizeof(ListNode));
Ругается и выдаёт ошибки
[C++ Error] Unit1.cpp(219): E2344 Earlier declaration of 'lmnt'
[C++ Error] Unit1.cpp(235): E2238 Multiple declaration for 'lmnt'

буду пробовать с тем что исправить надо
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.04.2013, 10:25     Что за ошибка и почему? #7
Цитата Сообщение от Kiragaz Посмотреть сообщение
void AddAfter(int Number,int point)
{
* *ListNode* * lmnt = (ListNode*)malloc(sizeof(ListNode));
//.......
ListNode* * lmnt = (ListNode*)malloc(sizeof(ListNode));
Две одинаковые переменные в одной функции объявлять нельзя.
Kiragaz
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 13
13.04.2013, 10:30  [ТС]     Что за ошибка и почему? #8
Цитата Сообщение от taras atavin Посмотреть сообщение
если ты не можешь добавит элемент, то как он создаётся? "Я на улицу вышел, только до сих пор с кровати встать не могу"? Список состоит из элементов, пока ни один в него не добавлен, списка нет.
Извиняюсь не ясно выразился, я создаю список постоянно добавляя в конец, дальше по программе я хочу добавить в мой список элемент в определённую позицию, к примеру между 1 и 2 элементами, но именно это и не получается

Добавлено через 1 минуту
это я из примера взял что мне предложили ранее
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
void AddAfter(int Number,int point)
{
   ListNode*   lmnt = (ListNode*)malloc(sizeof(ListNode));
 
   lmnt->Next  = Head;
   lmnt->Prior = Head;
   lmnt->Data  = Number;
   
   Head->Next  = lmnt;
   Head->Prior = lmnt;
 
   ListNode*      current = Search(point);
 
   if (!current)
   {
      return;
   }
 
   ListNode*   lmnt = (ListNode*)malloc(sizeof(ListNode));
 
   lmnt->Next  = current->Next;
   lmnt->Prior = current;
   lmnt->Data  = Number;
 
   current->Next->Prior = lmnt;
   current->Next        = lmnt;
}
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.04.2013, 10:33     Что за ошибка и почему? #9
Цитата Сообщение от Kiragaz Посмотреть сообщение
Извиняюсь не ясно выразился, я создаю список постоянно добавляя в конец, дальше по программе я хочу добавить в мой список элемент в определённую позицию, к примеру между 1 и 2 элементами, но именно это и не получается
ну это другое дело, добавление в конец, в начало и в середину - 3 разных добавления.
Kiragaz
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 13
13.04.2013, 11:08  [ТС]     Что за ошибка и почему? #10
вот ещё один вариант добавления в середину если выбирать добавление перед элементом зацикливается, а если после то выбивает ошибку
и тут я не могу пока сообразить как добавлять обе части информационного поля
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
//добовление элемента в список
 cout << " Введите элемент для добавления : " ;
            cin >> lmnt;
            cout << endl;
            if (Empty() == 1 )
            {
                AddAft(lmnt,0);
                cout << " Элемент добавлен " << endl;
            } else
   cout << "1 - Добавить перед " << endl << "2 - Добавить после  " << endl << "Ваш выбор:  " ;
             cin >> ans2;
            switch(ans2)
             {
            case '1' :
                 cout << " Перед каким элементом добавить: ";
                 cin >> Number;
                AddAft(lmnt,Number);
                 cout<<" Элемент добавлен "<< endl; break;
            case '2' :
                 cout << " После какого элемента добавить: ";
                 cin >> Number;
                AddBef(lmnt,Number);
                 cout << " Элемент добавлен " << endl; break;
            default :
                     cout << " Ошибка, такого пункта нету"<< endl; break;
             }
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
//==============================================================================
int Empty()
{
    if ( Head->Next==Head && Head->Prior == Head ) return 1;
    else return 0;
}
//==============================================================================
Double_List *SearchB(int Number)
{
   Double_List *lmnt=Head->Next;
    while((lmnt!=Head) && (lmnt->Data!=Number))
    {
        lmnt = lmnt->Prior;
        ++prdx;
    }
    if (lmnt == Head)
        return lmnt;
    else
        return NULL;
}
 
//==============================================================================
void AddAft(int Number, int point)
{
        Double_List* lmnt= (Double_List*)malloc(sizeof(Double_List));
 
        lmnt->Next=Head;
        lmnt->Prior=Head;
        lmnt->Data=Number;
 
        Head->Next=lmnt;
        Head->Prior=lmnt;
 
    Double_List *Current=Search(point);
 
    if (!Current)
   {
 
 
        Double_List* lmnt= (Double_List*)malloc(sizeof(Double_List));
 
        lmnt->Next=Current->Next;
        lmnt->Prior=Current;
        lmnt->Data=Number;
 
        Current->Next->Prior=lmnt;
        Current->Next=lmnt;
 return;
   }
 
}
 
//==============================================
void AddBef(int Number, int point)
{
  Double_List *Current = SearchB(point);
 
    if (Current!=NULL)
    {
      Double_List *lmnt=(Double_List*)malloc(sizeof(Double_List));
 
        lmnt->Data=Number;
        lmnt->Next=Current;
        lmnt->Prior=Current->Prior;
 
        Current->Prior->Next=lmnt;
        Current->Prior=lmnt;
            }
 
}
Добавлено через 26 минут
А если так писать то ругается на строку вызова подпрограммы в мэйне
вот такие ошибки
[C++ Error] Unit1.cpp(294): E2034 Cannot convert 'int' to 'const char *'
[C++ Error] Unit1.cpp(294): E2342 Type mismatch in parameter 'performer' (wanted 'const char * const', got 'char')
C++
1
2
3
4
5
6
7
8
9
main()
{
cout<<"Куда всталлять: ";
cin>>Number;
cout<<"Что вставлять: ";
cin >>Data>>performer;
Insert_Item_Double_List(Head,Number,Data,performer);
Print_Double_List(Head);
}
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
//вставка элемента с заданным номером в двунаправленный список
Double_List* Insert_Item_Double_List(Double_List* Head,int Number,int Data,const char* const performer){
  Number--;
  Double_List *NewItem=new Double_List();
  NewItem->Data=Data;
  strcpy(NewItem->performer,performer);
  NewItem->Prior=NULL;
  NewItem->Next = NULL;
  if (Head == NULL) {//список пуст
    Head = NewItem;
  }
  else {//список не пуст
    Double_List *Current=Head;
    for(int i=1; i < Number && Current->Next!=NULL; i++)
    Current=Current->Next;
    if (Number == 0){ //вставляем новый элемент на первое место
      NewItem->Next = Head;
      Head->Prior = NewItem;
      Head = NewItem;
    }
    else {//вставляем новый элемент на непервое место
      if (Current->Next != NULL) Current->Next->Prior = NewItem;
      NewItem->Next = Current->Next;
      Current->Next = NewItem;
        NewItem->Prior = Current;
      Current = NewItem;
    }
  }
  return Head;
Kiragaz
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 13
15.04.2013, 22:17  [ТС]     Что за ошибка и почему? #11
Ясно мысли кончились(((( Печально!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2013, 23:21     Что за ошибка и почему?
Еще ссылки по теме:

Почему ошибка? C++
почему ошибка? C++
Почему ошибка? C++

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

Или воспользуйтесь поиском по форуму:
gazlan
2855 / 1803 / 271
Регистрация: 27.08.2010
Сообщений: 4,883
Записей в блоге: 1
15.04.2013, 23:21     Что за ошибка и почему? #12
А если так писать то ругается на строку вызова подпрограммы в мэйне
вот такие ошибки
[C++ Error] Unit1.cpp(294): E2034 Cannot convert 'int' to 'const char *'
[C++ Error] Unit1.cpp(294): E2342 Type mismatch in parameter 'performer' (wanted 'const char * const', got 'char')
Грубейшие ошибки преобразования типа.

Приведи, хотя бы, листинг в читаемый вид, а то нет желания глаза ломать об эту мешанину.
Yandex
Объявления
15.04.2013, 23:21     Что за ошибка и почему?
Ответ Создать тему
Опции темы

Текущее время: 12:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru