Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как перевести строку в hex и обратно? https://www.cyberforum.ru/ cpp-beginners/ thread1464121.html
Немогу найти в гугле функцию какбы перевести строку в hex и обратно, мб у кого завалялась?
C++ Динамический класс для работы со строками
Помогите пожалуйста, возмущается, выдает ошибки :(( задание : Создать динамический класс для работы со строками ( последовательностями символов) . Максимальная длина последовательности - 65535 ,...
C++ Расскажите про IDE Intel Parallel Studio XE 2015 https://www.cyberforum.ru/ cpp-beginners/ thread1464113.html
Реклама на сайте Intel Parallel Studio XE 2015 написано хорошо, а тех кто пользовался стоит ли установить себе? Добавлено через 34 минуты Пиаршик плохой из меня=( как тему назавеш так, ее и...
C++ Ошибка. Почему если записываемое значение равно10, то пишет неправильно https://www.cyberforum.ru/ cpp-beginners/ thread1464099.html
int writeLittleEndianShort(ostream& out, short value) { union { char bytes; short s; } data; data.s = value; out « data.bytes; return 1; } out - файл куда пишем почему если short value=10...
Матрицы поворота в двумерном пространстве C++
Нужно создать класс - 2D матрицу поворота, и перегрузить операции умножения на скаляр, сложения, вычитания, умножения и деления (умножения на обратную). С самим кодом все понятно; вопрос такой:...
C++ Виртуальная функция https://www.cyberforum.ru/ cpp-beginners/ thread1464093.html
Создать производный класс Trapez(равнобокая трапеция). Определить в классе наследнике: -перегруженные функции для изменения сторон -перегруженные ф-ию вычисления площади -перегреженнуб фун-ию...
C++ Оформить простейшие задачи в виде функций https://www.cyberforum.ru/ cpp-beginners/ thread1464091.html
Ребят помогите пожалуйста с задачками для CodeBlocks. Реализовать задачи 1 и 2 в виде функций выполняемых условно-бесконечном цикле "ввод данных- обработка -вывод - вопрос пользователю о новой...
Вершина дерева содержит два целых числа и три указателя на поддеревья. Данные в дереве упорядочены C++
Вершина дерева содержит два целых числа и три указателя на поддеревья. Данные в дереве упорядочены. Написать функцию включения нового значения в дерево с сохранением упорядоченности....
C++ Как считать из файла в массив? Подскажите как из файла который имеет такую структуру 10|25|45| считать в массив из файла(test.txt) одни цифры, то есть | - является разделителем используя библиотеку fstream ? Добавлено через... https://www.cyberforum.ru/ cpp-beginners/ thread1464072.html C++ Сортировка массива по убыванию методом выбора минимума https://www.cyberforum.ru/ cpp-beginners/ thread1464071.html
Сортировать по убыванию методом выбора минимума. Есть массив: 1 4 5 7 6 4 5 3 7 8 2 7 4 1 3 4 5 6 9 1 3 2 6 8 5 На...
Доступ к переменным в DLL программе из внешних програм C++
Подскажите пожалуйста, как реализовать Записать данные из программы №1 в программу DLL и считать данные из DLL программой №2 По отдельности каждая часть работает 1. Программы №1 ...
C++ Вывести информацию о поездах, пребывающих в заданное время Ввести в компьютер такую информацию о поездах: номер поезда, название направления движения, время прибытия. Вывести по указанию пользователя или сообщение о поездах, прибывающих в заданное время, или... https://www.cyberforum.ru/ cpp-beginners/ thread1464032.html
0 / 0 / 1
Регистрация: 05.04.2015
Сообщений: 66
0

Как удалить элементы из списка? - C++ - Ответ 7697985

31.05.2015, 18:00. Показов 652. Ответов 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
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <cstdlib>
#include <cassert>
 
using namespace std;
struct Book {
    char name[50];
    char athor[50];
    char country[50];
    int year;
    int price;
    Book *next;
 
    Book() { }
    ~Book(){}
    Book(Book &tmp) {
 
        name[50] = tmp.name[50];
        athor[50] = tmp.athor[50];
        country[50] = tmp.country[50];
        year = tmp.year;
        price = tmp.price;
    }
    Book& operator=(Book &tmp) {
        if (this == &tmp)
            return *this;
        name[50] = tmp.name[50];
        athor[50] = tmp.athor[50];
        country[50] = tmp.country[50];
        year = tmp.year;
        price = tmp.price;
        return *this;
    }
};
 
class List {
public:
    List();
    ~List();
    size_t getSize() const;
    friend ostream& operator<<(ostream& out, List& list); //Дружественная функция — это функция, которая не является членом класса, но имеет доступ к членам класса, объявленным в полях private или protected.
    friend istream& operator>>(istream& in, List& list);
    friend ostream& operator<<(ostream& out, Book &list);
    friend void createList(List &list);
    friend void sortList(List &list);
    friend void fstreamLisrt(List list);
 
    Book& operator[](size_t index);
private:
    Book *Head;
    Book *Tail;
    static size_t size;
};
 
size_t List::size = 0;
 
List::List() { }
 
List::~List() {
    Book *del = Head;
    while (del) {
        Book *temp = del->next;
        delete del;
        del = temp;
    }
}
 
std::ostream& operator<<(ostream& out, List& list) {
    out << left;
    out << setw(15) << "Название" << "\t" << std::setw(13) << "Фамилия автора" << "\t" << std::setw(10) << "Страна выпуска" << "\t"
        << std::setw(5) << "Год" << "\t" << std::setw(13) << "Цена" << std::endl;
    for (size_t i = 0; i < list.size; ++i) {
        //setw - это установка ширины
        out << std::setw(15) << list[i].name << "\t" << std::setw(13) << list[i].athor << "\t"
            << std::setw(10) << list[i].country << "\t" << std::setw(5) << list[i].year << "\t" << std::setw(13) << list[i].price << std::endl;
    }
    return out;
}
 
std::istream& operator>>(std::istream& in, List& list) {
    char ans;
    int counter = 0;
    do {
        Book *book = new Book;
        //std::cin.ignore(std::cin.rdbuf()->in_avail());
        std::cin.ignore();
        std::cout << "Введите название книги: ";
        in.getline(book->name, 50);
        std::cout << "Введите фамилию автора: ";
        in.getline(book->athor, 50);
        std::cout << "Введите название страны: ";
        in.getline(book->country, 50);
        std::cout << "Введите год издания: ";
        in >> book->year;
        std::cout << "Цена: ";
        in >> book->price;
        if (!list.Head) {
            list.Head = list.Tail = book;
            book->next = 0;
        }
        else {
            list.Tail->next = book;
            book->next = 0;
            list.Tail = book;
        }
        counter++;
        list.size++;
        std::cout << "Добавить еще? (y/n): ";
        in >> ans;
 
    } while (ans != 'n');
    return in;
    
 
}
void createList(List& list) {
    char path[15];
    std::cout << "Введите название файла: ";
    std::cin.ignore();
    std::cin.getline(path, 15);
    std::ifstream fin(path);
    if (fin.is_open())
        std::cout << "Файл успешно открыт" << std::endl;
    else {
        std::cout << "Файл открыть не удалось" << std::endl;
        std::cout << "Нажмите любую клавишу . . .";
        std::cin.get();
        exit(EXIT_FAILURE);
    }
    while (!fin.eof()) {
        Book *book = new Book;
        fin >> book->name;
        fin >> book->athor;
        fin >> book->country;
        fin >> book->year;
        fin >> book->price;
        if (!list.Head) {
            list.Head = list.Tail = book;
            book->next = 0;
        }
        else {
            list.Tail->next = book;
            book->next = 0;
            list.Tail = book;
        }
        list.size++;
    }
}
 
Book& List::operator[](size_t index) {
    assert(index >= 0 && index < size);
    Book* temp = Head;
    for (size_t i = 0; i < index; ++i, temp = temp->next);
    return *temp;
}
 
std::ostream& operator<<(std::ostream& out, Book &book) {
    out << std::left;
    out << std::setw(15) << book.name << std::setw(15) << book.athor
        << std::setw(5) << book.country << std::setw(8)
        << book.year << std::setw(13) << book.price << std::endl;
    return out;
 
}
 
void sortList(List &list) {
    int pos;
    for (size_t i = 0; i < list.size - 1; ++i) {
        pos = i;
        for (size_t j = i; j < list.size; ++j)
            if (list[pos].price > list[j].price)
                pos = j;
        Book tmp = list[i];
        list[i] = list[pos];
        list[pos] = tmp;
    }
}
 
void fstreamList(List &list){
    int bom;
    std::ifstream fin("book.xls");
    cin.ignore();
    std::cout << "Cписок записан в файл" << endl;
    std::ofstream fout("book.xls", std::ios_base::out);
    fout << list;
    cin.ignore();
    cout << "Прочитать список из файла? (y/n): "; cin >> bom;
    cout << endl;
    if (bom = !'n'){
        std::ifstream fin("book.xls", std::ios::in);
        if (!fin.is_open()) // если файл не открыт
            std::cout << "Файл не может быть открыт!\n"; // сообщить об этом
        else
        {
            std::cout << "........................................................" << std::endl;
            std::cout << "Чтение из файла..." << std::endl;
            std::cout << fin.rdbuf() << std::endl;
        }
        fin.close();
    }
 
}
 
 
 
int main() {
    setlocale(LC_ALL, "Russian");
    List list;
    int ans;
    int seb;
    cout << "Пожалуйста, выберите: " << endl;
    cout << "1 - Считать из файла" << endl;
    cout << "2 - Ввести с клавиатуры" << endl;
    cout << "Введите цифру: ";
    cin >> ans;
 
    switch (ans) { // Позволяет осуществить выбор среди нескольких фрагментов кода, в зависимости от значения целочисленного выражения.
    case 1:
        createList(list);
        break;
    case 2:
        std::cin >> list;
        break;
    default:
        std::cout << "Неверный ввод! Повторите: ";
        std::cin >> ans;
        break;
    }
    std::cout << "Неотсортированный список: " << std::endl;
    std::cout << list;
    std::cout << "Отсортировать список по цене? (y/n): ";
    std::cin >> seb;
    if (seb = !'n'){
        sortList(list);
        std::cout << "Отсортированный по цене:" << std::endl;
        std::cout << list;
        
        std::cin.get();
        std::cin.get();
        
    }
    fstreamList(list);
    return 0;
}


Вернуться к обсуждению:
Как удалить элементы из списка? C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2015, 18:00
Готовые ответы и решения:

Как удалить одинаковые элементы из списка?
Нужно удалить из списка повторяющиеся элементы. Например в списке 1 1 0 0 3 3 оставить только 1 0...

Удалить из списка все элементы с нечётными значениями и вывести указатель p2 на начало преобразованного списка.
Здравствуйте. Не получается решить задачу. Условие. Дан непустой двусвязный список. Удалить из ...

Как удалить элементы из списка?
У меня есть список который выглядить так var = как мне получить вот это: var =

Удалить из списка нечетные элементы. Вывести оставшиеся элементы списка
Дано неотрицательное N и набор из N чисел. Создать линейно-связанный список, содержащий исходные...

2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2015, 18:00
Помогаю со студенческими работами здесь

Заданы три списка. Удалить из первого списка все элементы остальных списков
Помогите пожалуйста, мне нужно сессию досрочно сдать( в роддом надо) а практика только началась, а...

Удалить из списка все парные элементы и поместить их в конец списка в обратном порядке
Доброго времени суток, уважаемие форумчани, помогите Создать список L , элементами которого...

Удалить из списка все элементы, равные последнему; найти длину полученного списка
Помогите реализовать.Создайте список и Удалите из списка все элементы, равные последнему, найдите...

Удалить из списка все отрицательные элементы и поместить их в конец списка в обратном порядке
Пожалуста, помогите решить задачку: Составит программу, которая создает список L елементами...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru