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

Линейный список. Картотека - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ std::vector::erase http://www.cyberforum.ru/cpp-beginners/thread816465.html
Всем привет. Буду очень рад, если кто-нибудь может мне объяснить логику... см. скриншот....
C++ Найти ошибку (Вычисление функции с помощью разложения в ряд) Итак,проблема с разницей в показаниях Задание Вычисление функции с помощью разложения в ряд Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от хнач до хкон с шагом dx с точностью e . Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента,значение функции, значение функции через ряд тейлора, ... http://www.cyberforum.ru/cpp-beginners/thread816462.html
C++ массив объектов
добрый вечер всем. Возникла такая проблема - необходимо создать массив деков символов. Я хочу создать пустой объект - нулевого размера. а затем подавать на вход размер. Только не могу сообразить как правильно это сделать. Вот код. подскажите пожалуйста где ошибка. При попытке собрать проект студия говорит, что я пытаюсь переопределить значение по умолчанию в конструкторе. У Лафоре ничего...
Обращение к строкам файла по ее номеру C++
К примеру есть файл file.txt, написанный в текстовом редакторе, с таким содержанием The quick brown fox jumps over the lazy dog. Jackdaws love my big sphinx of quartz. The five boxing wizards jump quickly. Можно ли как-то обратиться по номеру строки, чтобы вывести ее на экран. Я понимаю, что нужно использовать seekg, read те char out;
C++ Диапазоны значений перечислителей http://www.cyberforum.ru/cpp-beginners/thread816424.html
Доброго времени суток, уважаемые форумчане! Для чего нужны диапазоны значений перечислителей, если самим перечислителям соответствуют только те значения, которыми они инициализированы при объявлении? Поначалу, когда я читал, упустил этот момент и подумал, что на перечислитель будет указывать любое значение его диапазона, тогда полезность его очевидна (особенно при выборе диапазонов с...
C++ Создать класс [B]TreeChar[/B], для работы с элементами двоичного дерева Создать класс TreeChar, для работы с элементами двоичного дерева ASCII-символов. В качестве членов-данных рекомендуется брать элементы самоссылочной структуры следующего вида: struct Node { char data; Node *LeftPtr, *RightPtr; }; где LeftPtr и RightPtr адрес левого и правого узла, соответственно. Определить в этом классе функции-члены класса, обеспечивающие: заполнение дерева,... подробнее

Показать сообщение отдельно
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
24.03.2013, 22:22     Линейный список. Картотека
евг, смотрим

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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <locale>               //для работы с юникод 
#include <string>
using namespace std;
 
typedef int BOOL;
#define TRUE 1
#define FALSE 0
 
struct List
{
    List *next;
 
    int number;                         //Номер.
    wstring tip,                        //тип.
    adress;                             //aдрес.
 
    void EnterInf()                     //функция для инициализации элементов списка
    {
        wcout << L"Введите адрес: ";
            cin.ignore();
            getline(wcin, adress);
        wcout << L"Введите номер: ";
            cin >> number;
        wcout << L"Введите тип: ";
            cin.ignore();
            getline(wcin, tip);
 
        cout << endl;
    }
 
    void ShowInf()                      //функция выода содержимого эл-ов списка
    {
        wcout << L"\nAдрес: " << setw(10 - strlen("Aдрес")) << adress;
        wcout << L"\nHомер: " << setw(10 - strlen("Hомер")) << number;
        wcout << L"\nTип: " << setw(10 - strlen("Tип")) << tip << "\n";
    }
 
    int getNumber()                     //функция получения номера эл-а списка(ключ)
    {
        return number;
    }
};
 
class ListNode
{
    private:
        List *Head;                     //голова списка
 
    public:
        ListNode()                      //конструктор по умолчанию
        {
            Head = NULL;                //изначально список пустой
        }
 
        void addToBack()        //добавляем в конец
        {
            List *Ptr = new List;       //выделяем память
            Ptr -> EnterInf();          //инициализируем
            Ptr -> next = NULL;
 
            if(Head == NULL)            //если список пустой
            {
                Head = Ptr;
            }
            else                        //иначе добавляем в конец
            {
                List *Ptr_f = Head; 
 
                while(Ptr_f -> next != NULL)        //ищем последний элемент
                    Ptr_f = Ptr_f -> next;
 
                Ptr_f -> next = Ptr;                //последний указывает на новый
                Ptr -> next = NULL;
            }
        }
 
        void removeFromBack()
        {
            List *temp;
 
            if(Head == NULL)                    //если список пуст
                wcout << L"Список пуст!\n";
            else if(Head -> next == NULL)       //если в списке один элемент
            {
                delete Head;
                Head = NULL;
            }
            else                                //если несколько элементов
            {
                List *Ptr_f = Head;
                while(Ptr_f -> next != NULL)        //ищем последний
                {
                    temp = Ptr_f;
                    Ptr_f = Ptr_f -> next;
                }
 
                delete Ptr_f;                   //удаляем последний
                temp -> next = NULL;                //элемент перед последним теперь последний
            }
        }
 
        void showCard(const int &_number)
        {
            List *current = Head;
            BOOL flag = FALSE;
 
            if(Head -> next != NULL)                //ищем во всем списке
            {
                while(current -> getNumber() != _number && current -> next != NULL)
                {
                    if(current -> getNumber() == _number)
                    //если ключ найден выводим информацию
                    {
                        flag = TRUE;
                        wcout << L"Информация о карточке: ";
                            current -> ShowInf();
 
                        break;      //прекращаем цикл, так как ключ уникален
                                    //и больше совпадений не будет
                    }
 
                    current = current -> next;
                }
            }
 
            if(!flag)                                   //если ключ не найден
                wcout << L"Карточка не найдена!\n";
 
            cout << endl;
        }
 
        void removeByKey(int const value)
        //ключом будет номер карточки(т.к. он уникален)
        {
            List *current = Head;
 
            if(value == Head -> getNumber())    //если искомый ключ в первом эл-те
            {
                List *tmp = Head -> next;       //переменная иници эл-ом после головы
                delete Head;                    //удаляем голову
 
                wcout << L"Карточка успешно удалена!\n\n";
 
                Head = tmp;                     //голова равна следующему
            }
            else
            {
                List *temp = NULL;
                bool flag = false;
 
                while(current != NULL)
                //ищем во все списке
                {
                    if(current -> getNumber() == value)
                    //если ключ найден
                    {
                        flag = true;    
                        break;          //прекращаем поиск
                    }
             
                    temp = current;                 //предыдущий эл-т
                    current = current -> next;      //удаляемый эл-т
                }
                
                if(!flag)                                   //если ключ не найден
                    wcout << L"Карточка не найдена!\n\n";
                else
                {
                    temp -> next = current -> next;     //предыдущ указывает на эл-т
                                                        //после удаляемого
                    delete current;                     //удаляем нужный
 
                    wcout << L"Карточка успешно удалена!\n\n";
                }
 
            }
 
        }
 
        void showItem()                     //выводим весь список
        {
            List *current = Head;
            if(current == NULL)             //если список пустой 
                wcout << L"Список пуст!";
            else                            //иначе выводим до конца
            {
                wcout << L"Список: ";
                while(current != NULL)
                {
                    current -> ShowInf();
                    current = current -> next;          //переходим на следующий
                }
            }
 
            cout << endl;
        }
};
 
void instructions();                    //инструкция к меню
void Menu();                            //меню
 
int _tmain(int argc, _TCHAR* argv[])
{
    wcout.imbue(locale(".866"));            //для вывода юникод строк
    wcin.imbue(locale(".866"));             //для ввода юникод строк
 
    Menu();                                 //вызываем функцию меню
 
    cout << "\n\n";
    return 0;
}
 
void Menu()
{
    ListNode Univers;
    int choice, value;
 
    instructions();                     //вызываем функцию инструкции к меню
 
    do{
        cout << "? ";
            cin >> choice;              //выбираем пункт меню
 
        switch(choice)
        {
            case 1:
                Univers.addToBack();
                Univers.showItem();
                break;
            case 2:
                Univers.removeFromBack();
                Univers.showItem();
                break;
            case 3:
                wcout << L"Введите номер карточки: ";
                    cin >> value;
 
                Univers.showCard(value);
                break;
            case 4:
                wcout << L"Введите ключ карточки: ";
                    cin >> value;
 
                Univers.removeByKey(value);
                break;
        }
    }while(choice != 5);
 
    wcout << L"Конец работы со списком!\n";
}
 
void instructions()
{
    wcout << L"Выберите:\n" <<
        L"1 - Добавить в список\n" <<
        L"2 - Удалить из списка\n" <<
        L"3 - Поиск по номеру\n" <<
        L"4 - Удаление по ключу\n" <<
        L"5 - Завершить обработку списка\n";
}
 
Текущее время: 00:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru