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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
FDrum
-3 / 0 / 0
Регистрация: 18.02.2010
Сообщений: 80
#1

Стек, дек, приоритетные очереди. - C++

21.05.2011, 17:28. Просмотров 776. Ответов 0
Метки нет (Все метки)

Разработать программу работы с деком. Дек организовать на массиве с циклическим заполнением и со сдвигом. Операции выполняются с обоих концов.

чего она не работает?
если кто может переделать ее в вижуал пожалуйста!

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
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
#include<stdlib.h>
#define n 10
   int s[n];
   int top_left,last_left,top_right,last_right;
   char c;
void clear_dek(void)
{  int i;
    top_left=last_left=0;
    top_right=last_right=n-1;
     for (i=0; i<n; i++) s[i]=0;
    }
void  print_dek(int x[n])
  { int i;
    for (i=0; i<n; i++)
     cout<<setw(4)<<x[i];
     cout<<endl;
  }
  void write_left(int x[n], int &ind)
   { int q;
     q=random(100)+1;
    if (ind!=0) x[ind+1]=x[ind];
     x[ind]=q;
     cout<<q<<endl;
     ind++;
      if (ind>n || last_left==last_right+1)
     { cout<<"Dek full\n";
       ind=0;
      }
   }
 void read_left(int x[n], int &ind, int &ind1)
  {  int i;
     if (ind1==ind)
     {
     cout<<"Dek empty\n"; getch(); exit(1);
    }
    for (i=0; i<=ind; i++)
    x[i]=x[i+1];
    ind1++;
     if (ind1>n-1) ind1=1;
 }
 void write_right(int x[n], int &ind)
 {  int q;
     q=random(100)+1;
    if (ind!=n)  x[ind-1]=x[ind];
     x[ind]=q;
     cout<<setw(4)<<q<<endl;
     ind--;
     if (ind<0 || last_left==last_right+1)
      {  cout<<"Dek full\n"; ind=n-1;}
 }
   void read_right(int x[n], int &ind, int &ind1)
    { int i;
     if (ind1==ind)
     { cout<<"Dek empty\n"; getch(); exit(1); }
    for (i=n-1; i>=ind; i--)
    x[i]=x[i-1];
    ind1--;
     if (ind1>n-1) ind1=0;
  }
void main(void)
 { int i;
   top_left=last_left=0;
    top_right=last_right=n-1;
   clrscr();
     randomize();
     do {
       clrscr();
       cout<<"0-exit\n";
       cout<<"1-clear_dek\n";
       cout<<"2-write_left\n";
       cout<<"3-read_left\n";
       cout<<"4-print_dek\n";
       cout<<"5-write_right\n";
       cout<<"6-read_right\n";
       cin>>i;
       switch(i) {
       case   1:  clear_dek(); break;
       case   2 : write_left(s,last_left); getch(); break;
       case   3 : read_left(s,last_left,top_left); getch(); break;
       case   4 : print_dek(s); getch(); break;
       case   5 : write_right(s,last_right); getch(); break;
       case   6 : read_right(s,last_right,top_right); getch(); break;
      }
   } while(i!=0);
       getch();
 }
Добавлено через 2 часа 25 минут
спасиб... уже разобрался))
тут теперь другая трабла
что не так с передачай масива в функцию и на оборот либо что-то не так в работе с памятью((
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
# include <iostream>
# include <conio.h>
# include <stdio.h>
# include <stdlib.h>
#include <time.h>
# include <dos.h>
using namespace std;
int const n=6, m=8;
 struct sp
 {int info;
  sp *adr_next;
 };
int search_sp (sp *,int key);
sp * create_sp (sp *m);
int * creat_mas(int *mas);
int search_mas (int *mas,int key);
 
int * creat_mas(int *mas)
{cout <<"\nMas of nambers:";
for(int i=0;i<=n;i++)
 {cout <<"\n";
  for(int j=0;j<=m;j++)
  {*(mas+i*m+j)=rand()%50;
   cout <<"  "<<*(mas+i*m+j)<<" ";
  }
 }
return mas;
}
 
sp * create_sp (sp *m)
{sp *t=m;
 rand();
 int i=0,n=rand()%20;
 printf("\n It's the vector of numbers, size of %d:",n);
 while(i<n)
  { m->adr_next=new(sp);
    m=m->adr_next;
    m->info=rand()%50;
    printf(" %d ",m->info);
    i++;
  }
 m->adr_next=NULL;
 return t;
}
 
int search_mas (int *mas,int key)
{for(int i=0;i<=n;i++)
   for(int j=0;j<=m;j++)
    if(*(mas+i*m+j)==key)
     return i*m+j;
return -1;
}
 
int search_sp (sp *m,int key)
{int i=0;
 while ((m!=NULL)&&(m->info!=key))
 {m=m->adr_next;i++;}
 if (m==NULL) return -1; else return i;
}
 
void main ()
{int a=8,b=12,key=0;
int i=0;
int *mas;
mas=new(int);
clock_t start, end;
 
cout <<" It's my number: "<<a%b;
sp * m=new(sp);
m=create_sp (m);
mas=creat_mas(mas);
cout <<"\n Enter the key of finding namber: ";
cin >>key;
start = clock();
for(long f=0;f<199999;f++)
{i=search_sp(m,key);}
end = clock();
cout <<"\n"<<i<<"\n";
if (i>=0)
 cout <<"\n Finded key "<<key<<" in position number: "<<i;
else
 cout <<"\n No finded key";
printf("\n Time for start searching %f",(end-start)/CLK_TCK);
 
cout <<"\n Enter the key of finding namber: ";
cin >>key;
start = clock();
for(long x=0;x<199999;x++)
{i=search_mas(mas,key);}
end = clock();
cout <<"\n";
if (i>=0)
 cout <<"\n Finded key "<<key<<" in position number: "<<i;
else
 cout <<"\n No finded key";
printf("\n Time for start searching %f",(end-start)/CLK_TCK);
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2011, 17:28     Стек, дек, приоритетные очереди.
Посмотрите здесь:

Каким образом можно записать стек и очередь в дек - C++
Прошу помощи. Есть программа создания стека и очереди с динамическим распределением памяти. Каким образом их можно записать в дек?Заранее...

Как можно объединить в одну структуру стек (очередь) и дек, при этом не создавая 2 структуры? - C++
Доброго всем вечера! У меня возник вопрос такой)) Как я могу объединить в одну структуру стек(очередь) и дек, при это не создавая 2...

Чем стек программно от очереди отличается? - C++
Чем стек программно от очереди отличается?

Найдите суммарную длину строк, принадлежащих очереди, кроме первой строки очереди - C++
Создать очередь строковых значений, для реализации используя односвязные списки.Реализовать операции добавления (enqueue) и удаления...

дек - C++
как сделать такую вещь? реализовать и протестировать контейнерный класс динамической структуры данных такой как дек. класс должен иметь...

Очередь и дек С++ - C++
Ребят, помогите пожалуйста сделать небольшую программу, ну просто горит(((. :wall: Разработать программу на С++, для реализации основных...

Полный дек - C++
Добрый день! мучаюсь с задачей - реализовать тип и функции (инициализация,добавление\извлечение элементов с обеих сторон,проверка на...

Дек символов - C++
Доброго времени суток всем. У меня такая проблема: есть задача - Реализовать класс &quot;Дек символов&quot; (на базе списка). Реализовать...

Простой дек - C++
Помогите решить задачу : Реализуйте структуру данных &quot;дек&quot;. Напишите программу, содержащую описание дека и моделирующую работу дека,...

Простой дек - C++
Всем доброго вечера Столкнулся со следующей проблемой. Есть задание на простой дек: Реализуйте структуру данных &quot;дек&quot;. Напишите...

Дек-шаблон - C++
Доброй ночи. У меня вопрос. Я хочу реализовать дек, а потом на его основе сделать шаблон. В деке могут храниться как числа, так и...

Шаблонный дек - C++
Задача реализовать шаблонный класс дека, и класс Итератора для навигации по деку. До добавления шаблонов все хорошо работало. Ныне такие...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru