Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 21.11.2016
Сообщений: 18
1

Класс "Предметный указатель"

13.05.2017, 13:48. Показов 4481. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Разработать программу на языке С++ на основе объектно-ориентированного подхода, содержащей классы и объекты. Описать класс «предметный указатель».
Обеспечить следующие возможности:
― Каждый компонент указателя содержит слово и номера страниц, на которых, это слово встречается;
― Количество номеров страниц, относящихся к одному слову, от одного до десяти;
― Предусмотреть возможность формирования указателя с клавиатуры и из файла, вывода указателя, вывода номеров страниц для заданного слова, удаления элемента из указателя;

// Как сформировать указатель из файла? и в самой проге выходит лажа с поиском слова и удалением (пункты 2 и 4)
помогите пожалуйстаа!!!
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
#include <iostream>
#include <list>
#include <conio.h>
#include <vector>
#include <algorithm>
#include<string.h>
 
using namespace std;
 
class Work
{
public:
    char name[30];
    int number[10];
    int CountNumber();
    void input(int n);
    void output(int n);
    void search(int n);
    void deletetask(int n);
    void menu(int n);
};
 
vector<Work> v(10);
 
void Work :: input(int n)
{
    
    int j = 10;
    
    cout<<"Формирование предметного указателя"<<endl;
 
 
    
    for (int i = 0; i < v.size(); i++)
    {
        cout << " Введите слово № "<< i+1 <<" : ";
        cin >> v[i].name;
 
        cout << " Введите номера страницы: ";
        for (int j = 0; j < 10; j++)
        {
            cin >> v[i].number[j];
        }
        
    }
    cout<<"Формирование завершено\n";
}
 
void Work::output(int n)
{
    
    cout<<"Вывод предметного указателя :"<<endl;
        for (int i = 0; i < v.size(); i++)
        {
            cout<<"Слово: "<<v[i].name<<endl;
            cout << "Номера страниц : ";
            for (int j = 0; j < 10; j++)
            {
                 cout << " "<< v[i].number[j];
                
            }
            cout << "" << endl;
        }
}
 
void Work::search(int n)
{
    char NameSearch[30];
 
    cout << "Введите искомое слово : ";
    cin >> NameSearch;
 
    for (int i = 0; i < v.size(); i++)
    {
        if ((strcmp(v[i].name, NameSearch) == 0))
        
        
            cout << "Слово: "<< v[i].name << endl;
            cout << "Номера страниц : ";
            cout << " "<< v[i].number[10];
 
            for (int j = 0; j < 10; j++)
            {
                 cout << " "<< v[i].number[j];
            }
    }
}
  
void Work::deletetask(int n)
{
    char DeleteName[30];
 
    cout << "Введите слово, которое хотите удалить : ";
    cin >> DeleteName;
 
    for (int i = 0; i < v.size(); i++)
    {
        if (strcmp(v[i].name, DeleteName) == 0)
        v.erase(v.begin()+i);
        --i;    
    }
 
}
 
void Work :: menu(int n)
{
    cout << "" << endl;
    cout << "-------------------------------------------------------------------------------" << endl;
    cout << "" << endl;
    cout << "                     - 1 -  Создать предметный указатель." << endl;
    cout << "                     - 2 -  Поиск слова." << endl;
    cout << "                     - 3 -  Итог предметного указателя." << endl;
    cout << "                     - 4 -  Удаление элемента." << endl;
    cout << "" << endl;
    cout << "-------------------------------------------------------------------------------" << endl;
    cout << "" << endl;
 
    char z = tolower(getch());
 
    switch(z)
    {
        case '1' : input(n); break;
        case '2' : search(n); break;
        case '3' : output(n); break;
        case '4' : deletetask(n); break;
    }
}
 
int main()
{
    
    int n=10;
 setlocale(0,"rus");
    Work w;
    for(;;)
    {
        w.menu(n);
    }
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2017, 13:48
Ответы с готовыми решениями:

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

Предметный указатель.
Предметный указатель организован в виде вектора. Каждая компонента указателя содержит слово и...

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

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

7
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
13.05.2017, 14:09 2
Цитата Сообщение от nya_ Посмотреть сообщение
C++
1
cout << " "<< v[i].number[10];
Это убери.

Добавлено через 11 минут
Цитата Сообщение от nya_ Посмотреть сообщение
C++
1
2
3
4
5
6
for (int i = 0; i < v.size(); i++)
    {
        if (strcmp(v[i].name, DeleteName) == 0)
        v.erase(v.begin()+i);
        --i;    
    }
C++
1
2
3
4
5
6
7
8
for (int i = 0; i < v.size(); i++)
    {
        if (strcmp(v[i].name, DeleteName) == 0)
        {
              v.erase(v.begin()+i);
              --i;
        }    
    }
0
0 / 0 / 0
Регистрация: 21.11.2016
Сообщений: 18
13.05.2017, 14:09  [ТС] 3
все равно так же
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
13.05.2017, 14:29 4
Цитата Сообщение от nya_ Посмотреть сообщение
все равно так же
Так же - это как же?

Добавлено через 8 минут
Для начала, покажи исправленный код.
0
0 / 0 / 0
Регистрация: 21.11.2016
Сообщений: 18
13.05.2017, 14:34  [ТС] 5
с поиском слова
Миниатюры
Класс "Предметный указатель"  
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
13.05.2017, 14:47 6
Цитата Сообщение от nya_ Посмотреть сообщение
с поиском слова
Тело if помести в {}.
0
0 / 0 / 0
Регистрация: 21.11.2016
Сообщений: 18
13.05.2017, 15:16  [ТС] 7
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
#include <iostream>
#include <list>
#include <conio.h>
#include <vector>
#include <algorithm>
#include<string.h>
 
using namespace std;
 
class Work
{
public:
    char name[30];
    int number[10];
    int CountNumber();
    void input(int n);
    void output(int n);
    void search(int n);
    void deletetask(int n);
    void menu(int n);
};
 
vector<Work> v(10);
 
void Work :: input(int n)
{
    
    int j = 10;
    
    cout<<"Формирование предметного указателя"<<endl;
 
 
    
    for (int i = 0; i < v.size(); i++)
    {
        cout << " Введите слово № "<< i+1 <<" : ";
        cin >> v[i].name;
 
        cout << " Введите номера страницы: ";
        for (int j = 0; j < 10; j++)
        {
            cin >> v[i].number[j];
        }
        
    }
    cout<<"Формирование завершено\n";
}
 
void Work::output(int n)
{
    
    cout<<"Вывод предметного указателя :"<<endl;
        for (int i = 0; i < v.size(); i++)
        {
            cout<<"Слово: "<<v[i].name<<endl;
            cout << "Номера страниц : ";
            for (int j = 0; j < 10; j++)
            {
                 cout << " "<< v[i].number[j];
                
            }
            cout << "" << endl;
        }
}
 
void Work::search(int n)
{
    char NameSearch[30];
 
    cout << "Введите искомое слово : ";
    cin >> NameSearch;
 
    for (int i = 0; i < v.size(); i++)
    {
        if ((strcmp(v[i].name, NameSearch) == 0))
        {
        
        
            cout << "Слово: "<< v[i].name << endl;
            cout << "Номера страниц : ";
            
}
            for (int j = 0; j < 10; j++)
            {
                 cout << " "<< v[i].number[j];
            }
    }
}
  
void Work::deletetask(int n)
{
    char DeleteName[30];
 
    cout << "Введите слово, которое хотите удалить : ";
    cin >> DeleteName;
 
    for (int i = 0; i < v.size(); i++)
    {
        if (strcmp(v[i].name, DeleteName) == 0)
    {
    v.erase(v.begin()+i);
        --i;   } 
    }
 
}
 
void Work :: menu(int n)
{
    cout << "" << endl;
    cout << "-------------------------------------------------------------------------------" << endl;
    cout << "" << endl;
    cout << "                     - 1 -  Создать предметный указатель." << endl;
    cout << "                     - 2 -  Поиск слова." << endl;
    cout << "                     - 3 -  Итог предметного указателя." << endl;
    cout << "                     - 4 -  Удаление элемента." << endl;
    cout << "" << endl;
    cout << "-------------------------------------------------------------------------------" << endl;
    cout << "" << endl;
 
    char z = tolower(getch());
 
    switch(z)
    {
        case '1' : input(n); break;
        case '2' : search(n); break;
        case '3' : output(n); break;
        case '4' : deletetask(n); break;
    }
}
 
int main()
{
    
    int n=10;
 setlocale(0,"rus");
    Work w;
    for(;;)
    {
        w.menu(n);
    }
    system("pause");
    return 0;
}
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
13.05.2017, 17:01 8
Цитата Сообщение от nya_ Посмотреть сообщение
C++
1
2
3
4
5
6
7
for (int i = 0; i < v.size(); i++)
    {
        if (strcmp(v[i].name, DeleteName) == 0)
    {
    v.erase(v.begin()+i);
        --i;   } 
    }
Что за хрень со скобками?
В search() тело if() заканчивается после вложенного for().
0
13.05.2017, 17:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2017, 17:01
Помогаю со студенческими работами здесь

Указатель на указатель, класс группа
помогите пожалуйста не могу понять что со строкой 312 знаю что с указателем что то не то......

Как преобразовать указатель на класс к указателю на асбтрактный класс?
Но тут есть одна тонкость- два промежуточных класса. Вот код, надеюсь всё из него понятно....

Предметный указатель
Предметный указатель организован в виде линейного списка. Каждый компонент указателя содержит...

Задача "Предметный указатель"
Данную задачу нашел у яндекс академия, у них же предоставлено решение, но VS 2017 ругается и не...

Если в класс нужно передать указатель на указатель на массив строк неизвестной длинны?
Как проинициализировать массив строк wchar_t * (произвольного размера) , если его нужно передать в...

Описать класс ≪предметный указатель≫
Описать класс ≪предметный указатель≫ using System; using System.Collections.Generic; using...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru