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

ћассив из двух очередей - C++

¬осстановить пароль –егистраци€
 
 
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
21.01.2014, 12:21     ћассив из двух очередей #1
Ќеобходимо создать массив из двух очередей,
c=(c0, c1) Ц массив из двух очередей
подскажите как это сделать? ” мен€ есть двусв€зный список spis, с0 и с1 - двусв€зные списки тоже, как из них сделать массив?  ак описать этот массив, никак не могу пон€ть.

C++
1
2
3
4
5
6
7
8
9
10
struct spis
{
 int data;
 struct spis *prev;  
 struct spis *next;
};
struct spis *head, *tail;
void main ()
 {
  struct spis *c0,*c1;
ѕосле регистрации реклама в сообщени€х будет скрыта и будут доступны все возможности форума.
egor2116
 јватар дл€ egor2116
337 / 368 / 42
–егистраци€: 20.01.2013
—ообщений: 1,100
21.01.2014, 12:35     ћассив из двух очередей #2
«адание не совсем €сное.
 ак € пон€л это есть две очереди(queue) они заполнены какими то значени€ми вам нужно(наверное) создать класс массива(на подобии std::vector) и этот класс инициализируетс€ двум€ очеред€ми и их значени€ переписываютс€ в массив.
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
21.01.2014, 12:45  [“—]     ћассив из двух очередей #3
ћне вообще надо реализовать сортировку сли€нием. Ќо при реализации алгоритма в псевдокоде написано:
ќбозначим n Ц количество элементов в S
a, b Ц рабочие списки
c=(c0, c1) Ц массив из двух очередей
p Ц предполагаемый размер серии
q Ц фактический размер серии в списке a
r Ц фактический размер серии в списке b
m Ц текущее количество элементов в списках a и b
i Ц номер активной очереди

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<–асщепление (S, a, b, n)>
p:= 1
DO (p < n)
   <инициализаци€ очередей c0, c1>
   i:=0, m:=n
   DO (m > 0)
      IF (m вЙ• p) q:=p ELSE q:=m FI
      m:= m Ц q
      IF (m вЙ• p) r:=p ELSE r:=m FI
      m:= m Ц r
      <сли€ние(a, q, b, r, ci )>
      i:=1Цi
   OD
   a:=c0.Head, b:=c1.Head
   p:=2p
OD
c0.Tail вЖТ next:=NIL
S:=c0.Head
¬от строка про массивы мен€ ввела в ступор, € не понимаю как два двусв€зных списка засунуть в один массив. “.е. это наверное должен быть динамический массив, массив массивов, но как его инициировать € не понимаю, уже весь инет перерыла, не могу найти ответа...
egor2116
 јватар дл€ egor2116
337 / 368 / 42
–егистраци€: 20.01.2013
—ообщений: 1,100
21.01.2014, 12:59     ћассив из двух очередей #4
как € пон€л то массив это результат сли€ни€ и сортировки.
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
21.01.2014, 13:12  [“—]     ћассив из двух очередей #5
да это так, но этот массив же надо как-то объ€вить, чтобы поместить в него эти очереди, а как это сделать ума не приложу...

ƒобавлено через 2 минуты
хот€ это не результат сли€ни€, это данные из очередей а и b будут помещены в определенном пор€дке в очереди с0 и с1, а эти очереди надо чтобы были почему то в массиве.....зачем это делать € не понимаю до конца, но знающим люд€м наверное лучше известно (тем кто писал псевдокод в учебнике)

ƒобавлено через 2 минуты
€ бы попробовала реализовать без массива, мне кажетс€ так было бы проще, но там зачем-то массив надо создать
egor2116
 јватар дл€ egor2116
337 / 368 / 42
–егистраци€: 20.01.2013
—ообщений: 1,100
21.01.2014, 13:21     ћассив из двух очередей #6
чтобы поместить в него эти очереди,
«ачем ??
я пон€л так
¬ход€щие данные 2 очереди с данными
¬ыходные данные сортированный массив содержащий данные двух очередей.

≈сли не так обратитесь за разъ€снени€ми к преподавателю.
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
21.01.2014, 13:25  [“—]     ћассив из двух очередей #7
а как этот массив описать?
_script_
169 / 137 / 34
–егистраци€: 01.05.2012
—ообщений: 414
21.01.2014, 13:43     ћассив из двух очередей #8
÷итата —ообщение от ”ль€ниус ѕосмотреть сообщение
ћне вообще надо реализовать сортировку сли€нием.
≈сли так тов вот пример сортировки сли€нием:
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
void merge(int *a, long lb, long split, long ub) {
// —ли€ние упор€доченных частей массива в буфер temp
// с дальнейшим переносом содержимого temp в a[lb]...a[ub]
  // текуща€ позици€ чтени€ из первой последовательности a[lb]...a[split]
  long pos1=lb;
 
  // текуща€ позици€ чтени€ из второй последовательности a[split+1]...a[ub]
  long pos2=split+1;
 
  // текуща€ позици€ записи в temp
  long pos3=0;
 
  int *temp = new int[ub-lb+1];
 
  // идет сли€ние, пока есть хоть один элемент в каждой последовательности
  while (pos1 <= split && pos2 <= ub) {
    if (a[pos1] < a[pos2])
      temp[pos3++] = a[pos1++];
    else
      temp[pos3++] = a[pos2++];
  }
  // одна последовательность закончилась -
  // копировать остаток другой в конец буфера
  while (pos2 <= ub)   // пока втора€ последовательность непуста
    temp[pos3++] = a[pos2++];
  while (pos1 <= split)  // пока перва€ последовательность непуста
    temp[pos3++] = a[pos1++];
 
  // скопировать буфер temp в a[lb]...a[ub]
  for (pos3 = 0; pos3 < ub-lb+1; pos3++)
    a[lb+pos3] = temp[pos3];
 
  delete []temp;
}
 
void mergeSort(int *A, int lb,int  ub)
{
    long split;                   // индекс, по которому делим массив
    if (lb < ub)
    {                // если есть более 1 элемента
        split = (lb + ub)/2;
       // cout << split<<endl;
        mergeSort(A, lb, split);       // сортировать левую половину
        mergeSort(A, split+1, ub);// сортировать правую половину
        merge(A, lb, split, ub);    // слить результаты в общий массив
    }
}
¬з€ть отсюда: http://algolist.manual.ru/sort/merge_sort.php
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
22.01.2014, 06:58  [“—]     ћассив из двух очередей #9
€ видела эту страницу,но там речь идет о массивах, а не о массивах списков (
_script_
169 / 137 / 34
–егистраци€: 01.05.2012
—ообщений: 414
22.01.2014, 13:03     ћассив из двух очередей #10
”ль€ниус, аналогично можно сделать сли€ние списков в массив)
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
23.01.2014, 07:55  [“—]     ћассив из двух очередей #11
 онечно можно, но вот если ты это делаешь в первый раз, препод не помогает, а самой оч т€жко... Ќекому вопросы задавать, до всего приходитс€ доходить самой, что-то оч долго получаетс€, так бы спросила и все ...
я в новой версии уже объ€вила двусв€зный список и отдельно очередь, а и b у мен€ двусв€зные списки, с0 и с1 - очередь, как последние засунуть в динамический массив ума не приложу... ¬ообще туго лабораторка продвигаетс€ ((((

ƒобавлено через 12 часов 31 минуту
egor2116, _script_, посмтрите пожалуйста мои наработки, может какие мысли возникнут.  омпил€тор мен€ ругает на чем свет стоит, говорит € как то не так работаю с очередью, ему не нравитс€..
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
#include  <stdio.h>
#include  <conio.h>
#include <time.h>
#include  <stdlib.h>
#include <alloc.h>
#include <math.h>
#define ESC 27
typedef struct SPIS
{
 int data;
 struct SPIS *prev;
 struct SPIS *next;
}spis ;
typedef struct QUEUE
{
 int data;
 struct QUEUE *prev; 
 struct QUEUE *next; 
} queue;
 
void create (int *mas, int n);*
void separation (spis *S,
         spis **a,
         spis **b,
         int n);
void init (queue*);
spis *head, *tail;*
queue *first, *last;
 
void main ()
 {
  long i, //*Ѓђ•а *™в®Ґ*Ѓ© Ѓз•а•§®
  n,//™ЃЂ®з•б⥁ нЂ•ђ•*вЃҐ Ґ бѓ®б™•
  sum,
  p,//ѓа•§ѓЃЂ*£*•ђл© а*Іђ•а б•а®®
  q,//д*™в®з•б™®© а*Іђ•а б•а®® Ґ бѓ®б™• *
  r,//д*™в®з•б™®© а*Іђ•а б•а®® Ґ бѓ®б™• b
  m;//в•™гй•• ™ЃЂ®з•б⥁ нЂ•ђ•*вЃҐ Ґ бѓ®б™*е a ® b
  int *mas;  //ђ*бᮥ §Ђп дЃађ®аЃҐ**®п ѓЃбЂ•§ЃҐ*в•Ђм*Ѓбв® з®б•Ђ
  char key;
  spis *S,*a,*b; //а*°Ѓз®• бѓ®б™®
  queue *c0,*c1;
  do
  {
   sum=0;
   randomize();
   clrscr ();
   fflush(stdin);
   printf("\n ВҐ•§®в• І**з•*®• n - ™ЃЂ®з•б⥁ нЂ•ђ•*вЃҐ ђ*бᮥ*   ");
   scanf("%d",&n);
   mas=(int*)malloc(n*sizeof (int));
   for (i=0; i<n; i++)
    {
     mas[i]=random(100);
     sum+=mas[i]; //ѓЃ§бз•в ™Ѓ*ваЃЂм*Ѓ© бгђђл
    }
   create(mas,n);
   separation (head,&a,&b,n);
   p=1;
   while (p<n)
   {
    //®*®ж®*Ђ®І*ж®п Ѓз•а•§•©
    init(c0);
    init(c1);
 
    i=0;
    m=n;
    while (m>0)
    {
     if (m>=p)
      q=p;
     else
      q=m;
     m=m-r;
     //бЂ®п*®•
     i=1-i;
    }
   a=c0.first;
   b=c1.head;
   p=2*p;
   }
   c0.tail->next=NULL;
   S=c0.head;
 
 
   printf("\n СЃав®аЃҐ™* ђ•вЃ§Ѓђ Ш•ЂЂ*");
   printf("\n ДЂп бЂгз*©*Ѓ© ѓЃбЂ•§ЃҐ*в•Ђм*Ѓбв®:");
  // Shell (mas,n,sum);
   printf(" ДЂп гѓЃап§Ѓз•**Ѓ© ѓЃбЂ•§ЃҐ*в•Ђм*Ѓбв®:");
  // Shell (mas,n,sum);
   free(mas);
   puts ("\n ВҐ•бв® §аг£Ѓ• ™ЃЂ®з•б⥁ нЂ•ђ•*вЃҐ ђ*бᮥ*? (Н•в=Esc)");
   key=getch();
  }
  while (key!=ESC);
 }
 
void create (int *mas, int n)
{
 int i;
 spis *p,
  *pred;//г™*І*в•Ђм ** ѓа•§л§гйго бваг™вгаг
 pred=NULL;
 for (i=0;i<n;++i)
 {
  p=(spis*) malloc(sizeof(spis));
  p->data=mas[i];
  p->prev=pred;
  if (pred!=NULL)//•бЂ® бѓ®бЃ™ *• ѓгбв
   pred->next=p;//*ЃҐл© нЂ•ђ•*в бв**ЃҐ®вбп бЂ•§гой®ђ
  else //•бЂ® бѓ®бЃ™ ѓгбв
   head=p;//бЃІ§**®• ѓ•аҐЃ£Ѓ нЂ•ђ•*в* бѓ®б™*
  pred=p;
 }
 tail=p;
 tail->next=NULL;
}
 
void separation (spis *S,
         spis **a,
         spis **b,
         int n)
{
  spis *k,*p;long i;
  *a=S;
  *b=S->next;
  n=0;
  k=*a;
  p=*b;
  while(p!=NULL)
  {
   ++n;
   k->next=p->next;
   k=p;
   p=p->next;
  }
 
}
 
 void init  (queue *c)
 {
    c=(queue*) malloc(sizeof(queue);
    first=NULL;
    c=first;
    last=NULL;
    c=last;
 }
egor2116
 јватар дл€ egor2116
337 / 368 / 42
–егистраци€: 20.01.2013
—ообщений: 1,100
23.01.2014, 14:58     ћассив из двух очередей #12
—делать задание это пол дела, дл€ начала нужно пон€ть что нужно делать вот за этим и обратитесь к преподу.
ѕо делу
„то это ?
C++
1
void create (int *mas, int n);*
„то это
C++
1
spis *head, *tail;*
„то это ?
C++
1
queue *first, *last;
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
23.01.2014, 18:10  [“—]     ћассив из двух очередей #13
÷итата —ообщение от egor2116 ѕосмотреть сообщение
—делать задание это пол дела, дл€ начала нужно пон€ть что нужно делать вот за этим и обратитесь к преподу.
¬ целом то € понимаю что делать, € в инициации списков путаюсь. —ейчас это сделать не просто € на ƒќ, пишу им а им пофиг, так обидно, деньги получаетс€ берут а консультаций не дают, им некогда у них сесси€, им пофиг, что € не понимаю чего либо, поэтому приходитс€ сидеть и пытатьс€ что-то пон€ть самой, ну или наде€тьс€ на сайты где помогут формучани...

÷итата —ообщение от egor2116 ѕосмотреть сообщение
ѕо делу

„то это ?

void create (int *mas, int n);
Ёто € передаю в функцию данные с указателем динамический массив случайных чисел дл€ того, чтобы скопировать данные из массива в структуру, потом, в другой функции, € выполн€ю разделение структуры на структуры a b. ј дальше стопор

÷итата —ообщение от egor2116 ѕосмотреть сообщение
„то это
C++
1
spis *head, *tail;*
Ёто объ€вление указателей на начало и конец списка двусв€зного
÷итата —ообщение от egor2116 ѕосмотреть сообщение
„то это ?

queue *first, *last;
Ёто объ€вление указателей на начало и конец очереди, пробовала их объ€вл€ть не так, а через объ€вление новой структуры, но наверное делала это не правильно, потому что компил€тор ругалс€. ѕробовала объ€вл€ть структуру —0 и —1 отдельно, но тоже как то криво не получилось.
ўас компил€тор ругаетс€ на этапе инициализации очередей —0 и —1, наверное € ее как то не так провожу...
egor2116
 јватар дл€ egor2116
337 / 368 / 42
–егистраци€: 20.01.2013
—ообщений: 1,100
24.01.2014, 13:09     ћассив из двух очередей #14
1. ќб€зательно писать на — ?
2. ќб€зательно ли использовать указатели дл€ построени€ очереди ?
3. ћое предыдущее сообщение
C++
1
void create (int *mas, int n);*
„то это за звездочки в конце обь€влени€ функции, опечатка при копировании кода или нет ?
4. ќтформатируйте код непон€тно где какие функции кому принадлежат.
5. ¬ыложите сообщени€ ошибок.
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
24.01.2014, 14:21  [“—]     ћассив из двух очередей #15
ќб€зательно на —и и об€зательно с использованием очереди, а на счет указателей, то не об€зательно.
«вездочка. это тут опечатка мо€.
Ќа счет форматировани€ функций € не пон€ла...
ј вот с ошибками. вручную набирать ооочень долго, € вам код выложу, скопируйте его и запустите, там вылезет куча ошибок...
» всетаки остаетс€ одна большуща€ проблема. как из структур сделать массив структур.
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
#include  <stdio.h>
#include  <conio.h>
#include <time.h>
#include  <stdlib.h>
#include <alloc.h>
#include <math.h>
#define ESC 27
typedef struct SPIS
{
 int data;
 struct SPIS *next; // г™*І*в•Ђм ** ѓЃбЂ•§гойго бваг™вгаг
} spis ;
void create (int n);//бЃІ§**®• бѓ®б™*
void separation (spis *,
         spis **a,
         spis **b,
         int n);//а*І§•Ђ•*®•*/
void Mergesort(spis **a, spis **b);
spis *head, *tail;//г™*І*в•Ђм ** **з*ЂЃ ® ™Ѓ*•ж бѓ®б™*
 
void main ()
 {
  long n;//™ЃЂ®з•б⥁ нЂ•ђ•*вЃҐ Ґ бѓ®б™•
  char key;
  spis *a,*b; //а*°Ѓз®• бѓ®б™®
  head=NULL;
  tail=NULL;
  do
  {
   randomize();
   clrscr ();
   fflush(stdin);
   printf("\n ВҐ•§®в• І**з•*®• n - ™ЃЂ®з•б⥁ нЂ•ђ•*вЃҐ ђ*бᮥ*   ");
   scanf("%d",&n);
   create(n);
   separation (head,&a,&b,n);
   Mergesort (&a, &b);
 
 
   puts ("\n ВҐ•бв® §аг£Ѓ• ™ЃЂ®з•б⥁ нЂ•ђ•*вЃҐ ђ*бᮥ*? (Н•в=Esc)");
   key=getch();
  }
  while (key!=ESC);
 }
 
void create (int n)
{
 long i,sum=0;
 spis *p;
 int *mas;  //ђ*бᮥ §Ђп дЃађ®аЃҐ**®п ѓЃбЂ•§ЃҐ*в•Ђм*Ѓбв® з®б•Ђ
 mas=(int*)malloc(n*sizeof (int));
   for (i=0; i<n; i++)
    {
     mas[i]=random(100);
     sum+=mas[i]; //ѓЃ§бз•в ™Ѓ*ваЃЂм*Ѓ© бгђђл
    }
 for (i=0;i<n;++i)
 {
  p=(spis *)malloc(sizeof(spis));//Ґл§•Ђп•ђ ѓ*ђпвм §Ђп ѓ•аҐЃ© І*ѓ®б®
  p->data=mas[i];
  p->next=NULL;
  if (head==NULL) //бЃІ§*•ђ ѓ•аҐл© нЂ•ђ•*в Ѓз•а•§®
  {
   head=p;//•бЂ® Ѓз•а•§м бЃбвЃ®в ®І Ѓ§*Ѓ£Ѓ нЂ•ђ•*в*, вЃ І**з•*®п г™*І*в•Ђ•©
   tail=p;//** ѓ•аҐл© ® ѓЃбЂ•§*®© нЂ•ђ•*вл бЃҐѓ*§*ов
  }
  else
  {
   tail->next=p;//*ЃҐл© нЂ•ђ•*в ѓа®бЃ•§®*п•вбп ™ ѓЃбЂ•§*•ђг нЂ•ђ•*вг Ѓз•а•§®
   tail=p;//*ЃҐл© нЂ•ђ•*в Ѓ°к鹿п•вбп ѓЃбЂ•§*®ђ
   }
  }
  free(mas);
}
 
 
 
void separation (spis *head,
         spis **a,
         spis **b,
         int n)
{
  spis *S;long i;
  S=head;
  *a=S;
  *b=S->next;
  n=0;
  while((*b)!=NULL)
  {
   ++n;
   (*a)->next=(*b)->next;
   *a=*b;
   *b=(*b)->next;
  }
 
}
 
void Mergesort (spis **a, spis **b)
{
 long i, //*Ѓђ•а *™в®Ґ*Ѓ© Ѓз•а•§®
  n,//™ЃЂ®з•б⥁ нЂ•ђ•*вЃҐ Ґ бѓ®б™•
  p,//ѓа•§ѓЃЂ*£*•ђл© а*Іђ•а б•а®®
  q,//д*™в®з•б™®© а*Іђ•а б•а®® Ґ бѓ®б™• *
  r,//д*™в®з•б™®© а*Іђ•а б•а®® Ґ бѓ®б™• b
  m;//в•™гй•• ™ЃЂ®з•б⥁ нЂ•ђ•*вЃҐ Ґ бѓ®б™*е a ® b
  char key;
  spis *S, *c0,*c1; //а*°Ѓз®• бѓ®б™®
  p=1;
   while (p<n)
   {
    //®*®ж®*Ђ®І*ж®п Ѓз•а•§•©
    c0->(*head)=NULL;
    c1->head=NULL;
 
    i=0;
    m=n;
    while (m>0)
    {
     if (m>=p)
      q=p;
     else
      q=m;
     m=m-r;
     //бЂ®п*®•
     i=1-i;
    }
   a=(*c0)->head;
   b=c1->head;
   p=2*p;
   }
   (c0->tail)->next=NULL;
   S=c0->head;
 
}
 
 
void init  (spis **c)
 {
    spis *C;
    C=*c;
    head=NULL;
    tail=NULL;
    head=C;
    tail=C;
 }
egor2116
 јватар дл€ egor2116
337 / 368 / 42
–егистраци€: 20.01.2013
—ообщений: 1,100
24.01.2014, 14:27     ћассив из двух очередей #16
как из структур сделать массив структур
“ак же как и из всего остального
C++
1
SPIS * lists = new SPIS[5];
или
C++
1
SPIS lists[5];
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
24.01.2014, 14:46  [“—]     ћассив из двух очередей #17
не понимаю как можно конкретно две структуры с0 и с1 объединить в массив . ћожете написать?
egor2116
 јватар дл€ egor2116
337 / 368 / 42
–егистраци€: 20.01.2013
—ообщений: 1,100
24.01.2014, 15:01     ћассив из двух очередей #18
ѕри выполнении вашего кода у мен€ выдало таки ошибки
давайте разбирать
1. warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
2.
3. main.cpp:30: error: `randomize' undeclared (first use this function)
4. main.cpp:30: error: (Each undeclared identifier is reported only once for each function it appears in.)
5. main.cpp:31: error: `clrscr' undeclared (first use this function)

6.
7. main.cpp:55: error: `random' undeclared (first use this function)
8. main.cpp: In function `void Mergesort(spis**, spis**)':
9. main.cpp:113: error: expected unqualified-id before '(' token
10. main.cpp:114: error: 'struct SPIS' has no member named 'head'
11. main.cpp:128: error: base operand of `->' has non-pointer type `SPIS'
12. main.cpp:129: error: 'struct SPIS' has no member named 'head'
13. main.cpp:132: error: 'struct SPIS' has no member named 'tail'
14. main.cpp:133: error: 'struct SPIS' has no member named 'head'
1. ” мен€ предупреждение - игнорируем.
3. Ќе об€вленна€ функци€ - обь€вить и определить или удалить.
4. ѕро эту же функцию.
5. Ќе об€вленна€ функци€ - обь€вить и определить или удалить.
7. Ќе об€вленна€ функци€ - обь€вить и определить или удалить.
9. в функции void Mergesort(spis**, spis**)'; обратите внимание на эти строки
C++
1
2
c0->(*head)=NULL;
   a=(*c0)->head;
10. ¬ структуре SPIS нет пол€ с именем head
11. ругаетс€ на эту строку a=(*c0)->head;
12. ¬ структуре SPIS нет пол€ с именем head
13. ¬ структуре SPIS нет пол€ с именем tail
14. ¬ структуре SPIS нет пол€ с именем head

«акоментируйте весь проект оставив только разкоментированными подключение библиотек и пустую функцию main. ƒалее разкоментируйте объ€вление и определение структур и так открывайте код по немногу.
я вижу очень много ошибок особенно в функции void Mergesort (spis **a, spis **b), тут проще переписать чем исправить.(но это только мое мнение)

ƒобавлено через 12 минут
не понимаю как можно конкретно две структуры с0 и с1 объединить в массив . ћожете написать?
ќбь€вите их сразу массивом
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
28.01.2014, 08:09  [“—]     ћассив из двух очередей #19
egor2116, ¬от вс€ проблема, что € не понимаю, как объ€вить их массивом. как потом этот массив передать в функцию... Ќа самом деле у мен€ не выводит описани€ ошибок в функци€х, но с этим разберусь, гласное этот массив,

ƒобавлено через 32 минуты
egor2116,
÷итата —ообщение от egor2116 ѕосмотреть сообщение
9. в функции void Mergesort(spis**, spis**)'; обратите внимание на эти строки
 од C++
1
2
c0->(*head)=NULL;
* *a=(*c0)->head;
я вижу эту ошибку, но € не понимаю как ее исправить, подскажите. пожалуйста...

ƒобавлено через 53 секунды
и все остальные ошибки это одна ошибка -€ не правильно обращаюсь с указател€ми, а как правильно не пойму
MoreAnswers
Ёксперт
37091 / 29110 / 5898
–егистраци€: 17.06.2006
—ообщений: 43,301
29.01.2014, 11:31     ћассив из двух очередей
≈ще ссылки по теме:

ƒан массив A(N). —формулировать массив B(M), элементами которого €вл€ютс€ большие из двух р€дом сто€щих в массиве A чисел C++
 ак пользоватьс€ стандартной библиотекой ќчередей? C++
C++ »з двух целочисленных массивов различной размерности сформировать общий массив. ”пор€дочить полученный массив

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

»ли воспользуйтесь поиском по форуму:
egor2116
 јватар дл€ egor2116
337 / 368 / 42
–егистраци€: 20.01.2013
—ообщений: 1,100
29.01.2014, 11:31     ћассив из двух очередей #20
€ не правильно обращаюсь с указател€ми, а как правильно не пойму
ѕочитайте про указатели.
C++
1
c0->(*head)=NULL;
c0 это указатель на узел списка который содержит указатель на следующий узел,
зачем его разыменовывать, а второе с0 не содержит указател€ с именем head.
(наверное как то так)
C++
1
с0->next = NULL;
“а же проблема
C++
1
*a=(*c0)->head;
a - указатель на узел списка(зачем его разыменовывать)
с0 не содержит указател€ с именем head.
Ќаверное как то так
C++
1
a = co->next;
ћой вам совет, этот код не жизнеспособен слишком много ошибок, проще переписать.
Ќайдите в сети рабочий пример реализации списка, посмотрите как он сделан что бы пон€ть суть, после этого добавите необходимый функционал.
ѕример двусв€зного списка
Yandex
ќбъ€влени€
29.01.2014, 11:31     ћассив из двух очередей
ќтвет —оздать тему
ќпции темы

“екущее врем€: 11:38. „асовой по€с GMT +3.
 ибер‘орум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
–ейтинг@Mail.ru