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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.89
ta_4to
1 / 1 / 0
Регистрация: 13.02.2010
Сообщений: 36
#1

Предметный указатель - C++

01.06.2010, 18:18. Просмотров 2718. Ответов 2
Метки нет (Все метки)

Уважаемые программисты! Очень прошу о помощи....
Последняя лабораторная горит.....не понимаю как дописать
Помогите пожалуйста!!!
Предметный указатель организован в виде линейного списка.
Каждая компонента указателя содержит слова и номера страниц,на которых это слово встречается.Количество номеров страниц,относящихся к одному слову,лежит в диапазоне от 1 до 10.
Написать программу,которая обеспечивает:
1.Начальное формирование предметного указателя
2.Вывод предметного указателя
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
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
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
using namespace std;
 
struct dek_node
 
{
int* data;
char* word;
dek_node *prev;
dek_node *next;
 
};
dek_node *CreateDek(int Data,char Word);//создание элемента
void ExtractBegin(dek_node *dek);// вывод сначала
dek_node *PutBegin(dek_node *dek,int Data, char Word);//вставка в начало
dek_node *PutEnd(dek_node *dek,int Data, char Word);//вставка в конец
void ExtractEnd(dek_node *dek);//вывод с конца
 
int main()
{
int i;
int data;
char slovo;
cout << "Vvedite element deka = ";
cin>>data;
cin >>slovo;
dek_node *dek = CreateDek(data, slovo);
cout << "Dobavit v nachalo Deka = ";
cin >>data;
cin >> slovo;
dek = PutBegin(dek, data, slovo);
cout << "Dobavit v konec Deka = ";
cin >>data;
cin >> slovo;
dek = PutEnd(dek, data, slovo);
cout << "\nDek s nachala: \n";
ExtractBegin(dek);
cout << "\n";
cout << "Dek s konca: \n";
ExtractEnd(dek);
getch();
return 0;
}
////////////////////////////////////////////////////////////////
dek_node *CreateDek(int Data,char Word)
{
dek_node *dekNode = new dek_node;
dekNode->data = Data;
dekNode->word = Word;
dekNode->prev = NULL;
dekNode->next = NULL;
return dekNode;
}
/////////////////////////////////////////////////////////////////
dek_node *PutBegin(dek_node *dek,int Data, char Word)
{
dek_node *dekNode = new dek_node;
while (dek->prev != 0) dek = dek->prev;
dekNode->data = Data;
dekNode->word = Word;
dekNode->prev = NULL;
dekNode->next = dek;
dek->prev = dekNode;
return dekNode;
}
/////////////////////////////////////////////////////////////////
dek_node *PutEnd(dek_node *dek,int Data, char Word[aword])
{
dek_node *dekNode = new dek_node;
while (dek->next != 0) dek = dek->next;
dekNode->data = Data;
dekNode->word = Word;
dekNode->prev = dek;
dekNode->next = NULL;
dek->next = dekNode;
return dekNode;
}
/////////////////////////////////////////////////////////////////
void ExtractEnd(dek_node *dek)
{
while (dek->next != 0) dek = dek->next;
do
{
cout << dek->data << " "<<dek->word<<endl;
dek = dek->prev;
}
while(dek->prev != 0);
cout << dek->data<<' '<<dek->word<<endl;
}
/////////////////////////////////////////////////////////////////
void ExtractBegin(dek_node *dek)
{
while (dek->prev != 0) dek = dek->prev;
do
{
cout << dek->data << " "<<dek->word<<endl;
dek = dek->next;
} while(dek->next != 0);
cout << dek->data << " "<<dek->word<<endl;
}
/////////////////////////////////////////////////////////////////
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2010, 18:18     Предметный указатель
Посмотрите здесь:

Предметный указатель. - C++
Предметный указатель организован в виде вектора. Каждая компонента указателя содержит слово и номера страниц, на которых это слово...

Описать класс *предметный указатель* - C++
Описать клас *предметный указатель*. Каждый компонент указателя содержит слово и номер страницы, на которых ето слово встречаеться....

Требуется на основе исходного файла построить предметный указатель и вывести его в файл - C++
14. Строки текстового файла input.txt состоят из слов, разделенных одним или несколькими пробелами. Перед первым, а также после последнего...

Класс "Предметный указатель" - C++
Разработать программу на языке С++ на основе объектно-ориентированного подхода, содержащей классы и объекты. Описать класс «предметный...

Зачем использовать Указатель на указатель? - C++
Подскажите зачем использовать Указатель на указатель? И как работают двумерные массивы за счет указателей?

Преобразование в указатель на указатель на константу - C++
В упор не могу понять правила которые приводит Дьюхерст для преобразований &quot;многоуровневых&quot; указателей. (Дьюхерст &quot;Скользкие места...

Указатель на указатель - разница способов - C++
int a =5; int *b = &amp;a; int **e =&amp;b; //первый способ //Нужно писать столько * скока указателей.. int *f = b; //Втрой...

Указатель на указатель заполнение матрицы - C++
Помогите как самому вбивать матрицу скоко на скоко и элементы этой матрицы ( без функций ) используя только &lt;iostream&gt;. (помощь)

Задача на указатели.Указатель на указатель. - C++
Таблица футбольного чемпионата задана квадратной матрицей порядка n, в которой все элементы, принадлежащие главной диагонали равны 0, а...

Указатель на указатель, класс группа - C++
помогите пожалуйста не могу понять что со строкой 312 знаю что с указателем что то не то... но исправить не получается //4. В...

Указатель на указатель внутри структуры - C++
Приветствую. Есть 2 структуры: enum category { Technical, History, Fiction }; struct BOOK { char author; char name; int...

Указатель на указатель заполнение матрицы - C++
Напишите как самому вбивать матрицу скок на скока и каждый элемент в нем (заранее спасибо)!


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
11.11.2010, 12:49     Предметный указатель #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
я вот так написал

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
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <ctime>
struct List 
{
       char word[100];
       int page[10];
       List *next;
       List *pred;
};
void CreateList (List *&head,int n,int *g) 
{
    char w[100];
    List *p;    
    char k;
    cout<<"Dobavit' element v spisok? (y/n) :";
    cin>>k;
    int s=0;
    while (k=='y')
    {
        p=new List;  
        cout<<"vvedite slovo :";
        cin>>w;
        strcpy(p->word,w);
        char h='y';   
        n=0;
        cout<<"vvedite nomera stranic :"<<endl;
        while (h=='y' && n<10)   
        {
            cin>>p->page[n];
            n++;
            cout<<"eshe? (y/n) :";
            cin>>h;              
        }
        g[s]=n;
        s++;
        p->next=head;
        p->pred=head->pred;
        head->pred=p;
        p->pred->next=p;
        cout<<"Dobavit' element v spisok? (y/n) :";
        cin>>k;
    }
    return;
}
int PrintList (List *&head,int *g) 
{     
    int s=0;  
    List *p;
    p=head->next;
    if (head->next==head)
    {
       cout<<"spisok pust";
       return 0;
    }
    else
    {
        cout<<"predmetnbli ukazatel' :"<<endl;  
        while (p->next!=head->next)
        {
            cout<<p->word<<" : ";
            for (int i=0;i<g[s];i++)
               if (i!=g[s]-1) 
                  cout<<p->page[i]<<",";
               else 
                  cout<<p->page[i]<<".";   
            cout<<endl;
            p=p->next; 
            s++;                
        }     
    }                               
    return 1;       
}
void search (List *&head,int r,int *g)
{
    if (r)
    {  
       int j=0;
       char w[100]; 
       List *p;
       p=head->next;
       cout<<"zadaite slovo : ";
       cin>>w;
       int f=0;
       while(p->next!=head->next)
       {
          if (strcmp(p->word,w)==0) 
          {
               cout<<"stranicbl : ";                     
               for (int i=0;i<g[j];i++)                     
                  if (i!=g[j]-1) 
                     cout<<p->page[i]<<",";
                  else 
                     cout<<p->page[i]<<".";   
               f=1;                       
          }  
          if (!f)
             cout<<"dannoe slovo ne vstrechaets9";
          j++;
          p=p->next;                                                          
       }
    } 
    return;    
}
int main()
{
    char h;
    while (1)
    {
       system("cls");   
       cout<<"sozdat' predmetnbli ukazatel' ? (y/n) :";    
       cin>>h; 
       switch (h)
       {
          case 'y':     
          {               
             List *head;
             head=new List; 
             head->next=head;                              
             head->pred=head; 
             int t=0;
             int k[10];
             CreateList(head,t,k);
             system("cls");             
             int r=PrintList(head,k); 
             char q;            
             cout<<"iskat' slovo ? (y/n) :";
             cin>>q; 
             while (q=='y')
             {             
                search(head,r,k);
                getch();
                cout<<endl<<"iskat' slovo ? (y/n) :";
                cin>>q;
             }             
             getch();
          }   
          break;
          case 'n':
             return 0;  
       }
    }
}
Tartygin
-12 / 0 / 0
Регистрация: 08.10.2016
Сообщений: 23
Завершенные тесты: 1
18.04.2017, 12:17     Предметный указатель #3
Gabberr, а можете сказать для чего используется n? Используется для подсчёта количества страниц на которых может встретиться введенное до этого слово? И для чего нужен g[s] и зачем его присваивать n-у?
Ответ Создать тему
Опции темы

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