Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Dimaskorik
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 28
#1

Списки(предметный указатель) - C++

16.12.2010, 09:38. Просмотров 1016. Ответов 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
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
#include <iostream.h>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <ctime>
using namespace std;
 
  char bufRus [256];
char* Rus(char* mes)
 { AnsiToOem (mes, bufRus);
    return bufRus;
 }
 
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<<Rus("добавить элемент в список? (y/n) :");
    cin>>k;
    int s=0;
    while (k=='y')
    {
        p=new List;  
        cout<<Rus("введите слово :");
        cin>>w;
        strcpy(p->word,w);
        char h='y';   
        n=0;
        cout<<Rus("введите номера страниц :")<<endl;
        while (h=='y' && n<10)   
        {
            cin>>p->page[n];
            n++;
            cout<<Rus("ещё? (y/n) :");
            cin>>h;              
        }
        g[s]=n;
        s++;
        p->next=head;
        p->pred=head->pred;
        head->pred=p;
        p->pred->next=p;
        cout<<Rus("добавить элемент в список? (y/n) :");
        cin>>k;
    }
    return;
}
int PrintList (List *&head,int *g) 
{     
    int s=0;  
    List *p;
    p=head->next;
    if (head->next==head)
    {
       cout<<Rus("список пуст");
       return 0;
    }
    else
    {
        cout<<Rus("предметный указатель' :")<<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<<Rus("задайте слово : ");
       cin>>w;
       int f=0;
       while(p->next!=head->next)
       {
          if (strcmp(p->word,w)==0) 
          {
               cout<<Rus("страницbl : ");                     
               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<<Rus("данное слово не встречается");
          j++;
          p=p->next;                                                          
       }
    } 
    return;    
}
int main()
{
    char h;
    while (1)
    {
       system("cls");   
       cout<<Rus("создать предметный указатель' ? (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<<Rus("искать слово ? (y/n) :");
             cin>>q; 
             while (q=='y')
             {             
                search(head,r,k);
                getch();
                cout<<endl<<Rus("искать слово ? (y/n) :");
                cin>>q;
             }             
             getch();
          }   
          break;
          case 'n':
             return 0;  
       }
    }
}
по заданию:
Предметный указатель организован как линейный список. Каждая компонента указателя содержит слово и номера страниц, на которых это слово встречается. Количество номеров страниц, относящихся к одному слову, от одного до десяти. Составить программу, которая обеспечивает:
• начальное формирование предметного указателя;
• вывод предметного указателя;
• вывод номеров страниц для заданного слова.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2010, 09:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Списки(предметный указатель) (C++):

Предметный указатель - C++
Уважаемые программисты! Очень прошу о помощи.... Последняя лабораторная горит.....не понимаю как дописать:( Помогите пожалуйста!!! ...

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

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

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

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

Списки структур. Указатель на узел другого списка внутри структуры - C++
Имеется следующий кусок кода: struct date { int day; int month; int year; }; /* Пациент */

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2010, 09:38
Привет! Вот еще темы с ответами:

Как получить ссылку на указатель или указатель на указатель в массиве? - C++
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

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

Функция, получающая указатель на обычную функцию, получает указатель на метод класса - C++
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая принимает указатель на функцию и...

Как правильно удалять выделенную память под указатель на указатель? - C++
есть код #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; void sort_1(const...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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