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

Запись структуры в файл, чтение из файла и удаление (файловый ввод/вывод)

01.12.2016, 17:00. Показов 11774. Ответов 80
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер! Возникла такая проблема, что при добавлении записи, удаляются уже имеющиеся записи в файле.
Также не помешала бы помощь в вопросе удаления записи, с указанным возрастом. Ну и вывод всего содержимого в файле.
Спасибо, за помощь.
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
#include <iostream>
#include <fstream>
 
enum ChosenOperation { ADD = 1, SHOW, DELETE, EXIT };
 
enum SearchingCriteria { NAME = 1, ADDRESS, PHONE, AGE };
 
struct Human
{
    std::string full_name;  // фамилия имя отчество
    std::string address;    // домашний адрес
    std::string phone;      // телефон
    unsigned int age;       // возраст
};
 
void add_new_entry_to_file( std::string filename )
{
    std::cout << "\n\n\tAdding new student to database.\n\n";
 
    std::cout << "Enter number of entries: ";
    unsigned int number_of_entries;
    std::cin >> number_of_entries;
 
    std::cout << "\n\n\tEnter all nessesary data of each entry.\n\n";
    struct Human* human = new struct Human[number_of_entries];
 
    for ( unsigned int i = 0, nth; i < number_of_entries; ++i )
    {
        nth = i + 1;
        while ( std::cin.get() != '\n' );
 
        std::cout
            << "Enter full name of "
            << nth
            << " student: ";
        std::getline( std::cin, human[i].full_name );
 
        std::cout
            << "Enter address of "
            << nth
            << " student: ";
        std::getline( std::cin, human[i].address );
 
        std::cout
            << "Enter phone number of "
            << nth
            << " student: ";
        std::getline( std::cin, human[i].phone );
 
        std::cout
            << "Enter age of "
            << nth
            << " student: ";
        std::cin >> human[i].age;
        std::cout << "\n";
    }
 
    std::ofstream fout( filename.c_str() );
    for ( unsigned int i = 0; i < number_of_entries; ++i )
    {
        fout
            << human[i].full_name
            << "|"
            << human[i].address
            << "|"
            << human[i].phone
            << "|"
            << human[i].age
            << "\n";
    }
    fout.close();
 
    delete [] human;
}
 
void show_data( std::string filename )
{
    // TODO
}
 
void delete_data_in_file( std::string filename, int searching_criteria )
{
    // TODO
}
 
int main()
{
    int key = 0;
    while ( key != ChosenOperation::EXIT )
    {
        std::cout
            << "MENU:\n\n"
            << "\t1 - ADD\n"
            << "\t2 - SHOW\n"
            << "\t3 - Delete\n"
            << "\t4 - EXIT(Esc)\n\n"
            << "Press any key: ";
 
        std::cin >> key;
 
        switch ( key )
        {
            case ChosenOperation::ADD :
                add_new_entry_to_file( "Person.txt" );
 
            case ChosenOperation::SHOW :
                show_data( "Person.txt" );
 
            case ChosenOperation::SEARCH :
                delete_data_in_file( "Person.txt", SearchingCriteria::NAME );
 
            case ChosenOperation::EXIT :
                key = ChosenOperation::EXIT;
        }
    }
 
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.12.2016, 17:00
Ответы с готовыми решениями:

Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран
1.Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран 2.Ввод с клавиатуры и запись в массив,...

Чтение из файла STL (файловый ввод/вывод)
В чем проблема? map.ccp void Map::ReadFromFile(fstream&amp; F) { string s,key; int k, value, counter; map &lt;string, Pr&gt; ob; map...

Открыть текстовый файл, дозаписать в него данные, вывести содержимое файла (файловый ввод/вывод)
Открыть текстовый файл 1.txt, имя файла указывается в командной строке. Дозаписать в него данные. Вывести содержимое файла 1.txt построчно.

80
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
01.12.2016, 18:00
Цитата Сообщение от georgiisav988 Посмотреть сообщение
при добавлении записи, удаляются уже имеющиеся записи в файле
Флаги надо выставить соответствующие.

Добавлено через 4 минуты
ios_base::in - открыть файл для чтения
.
ios_base::out - открыть файл для записи
.
ios_base::ate - перейти к концу файла после его открытия
.
ios_base::арр - добавлять в конец файла
.
ios_base::trunc - усечь файл, если он существует
.
ios_base::binary - двоичный файл
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
01.12.2016, 18:01
Флаги можно комбинировать:
.
ios_base::out | ios_base::app - открыть для записи с разрешением только на добавление
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
01.12.2016, 18:03
Пример из учебника Стивена Праты:
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
// append.cpp -- appending information to a file
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>      // (or stdlib.h) for exit()
 
const char * file = "guests.txt";
int main()
{
    using namespace std;
    char ch;
 
// show initial contents
    ifstream fin;
    fin.open(file);
 
    if (fin.is_open())
    {
        cout << "Here are the current contents of the "
             << file << " file:\n";
        while (fin.get(ch))
            cout << ch;
        fin.close();
    }
 
// add new names
    ofstream fout(file, ios::out | ios::app);
    if (!fout.is_open())
    {
        cerr << "Can't open " << file << " file for output.\n";
        exit(EXIT_FAILURE);
    }
 
    cout << "Enter guest names (enter a blank line to quit):\n";
    string name;
    while (getline(cin,name) && name.size() > 0)
    {
          fout << name << endl;
    }
    fout.close();
 
// show revised file
    fin.clear();    // not necessary for some compilers
    fin.open(file);
    if (fin.is_open())
    {
        cout << "Here are the new contents of the "
             << file << " file:\n";
        while (fin.get(ch))
            cout << ch;
        fin.close();
   }
    cout << "Done.\n";
    // cin.get();
    return 0; 
}
1
0 / 0 / 1
Регистрация: 01.04.2016
Сообщений: 76
01.12.2016, 19:34  [ТС]
А на счет удаления записи, с указанным возрастом. Есть какие-нибудь подсказки? Или опять делать новую "Тему"?
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
01.12.2016, 21:53
Цитата Сообщение от georgiisav988 Посмотреть сообщение
А на счет удаления записи
georgiisav988, запись будем удалять непосредственно в файле? Или из массива структур? Если из массива, то лучше использовать вместо обычного сишного массива контейнер std::vector - там добавление и удаление элементов уже реализованы. А если непосредственно из файла, то тогда надо файл парсить по заданному параметру.

Цитата Сообщение от georgiisav988 Посмотреть сообщение
удаления записи, с указанным возрастом
Это называется поиск по заданному полю в массиве объектов пользовательского типа. Таких тем на форуме миллион.

Добавлено через 1 минуту
georgiisav988, по поводу show_data(). Я бы разбил эту функцию на две: read_data_from_file() и, собственно, show_data().

Добавлено через 2 минуты
georgiisav988, чтобы Вам было проще и было какое-то понимание происходящего, я бы посоветовал всё-таки что-нибудь почитать.

Добавлено через 50 минут
georgiisav988, тот же Прата прекрасно всё объясняет по данному вопросу (файловый ввод/вывод) в 6 главе (начиная со страницы 287) и, уже более подробно, в 17 главе (начиная со страницы 1015).
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
01.12.2016, 21:54
georgiisav988, сидел весь вечер над кодом, самому стало интересно. Но уже поздно, котелок не варит. Завтра попробую на свежую голову что-нибудь вменяемое сотворить.
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
01.12.2016, 22:10
georgiisav988, вот так пока сделал (удаление завтра, уже сил нет, спать охота):
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
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <vector>
 
enum ChosenOperation { ADD = 1, SHOW, DELETE, EXIT };
 
enum SearchingCriteria { NAME = 1, ADDRESS, PHONE, AGE };
 
struct Human
{
    std::string full_name;  // фамилия имя отчество
    std::string address;    // домашний адрес
    std::string phone;      // телефон
    unsigned int age;       // возраст
};
 
void add_new_entry_to_file( std::string filename )
{
    std::cout << "\n\n\tAdding new student to database.\n\n";
 
    std::cout << "Enter number of entries: ";
    unsigned int number_of_entries;
    std::cin >> number_of_entries;
 
    std::cout << "\n\n\tEnter all nessesary data of each entry.\n\n";
    std::vector<Human> human( number_of_entries );
 
    for ( unsigned int i = 0, nth; i < number_of_entries; ++i )
    {
        nth = i + 1;
        while ( std::cin.get() != '\n' );
 
        std::cout
            << "Enter full name of "
            << nth
            << " student: ";
        std::getline( std::cin, human[i].full_name );
 
        std::cout
            << "Enter address of "
            << nth
            << " student: ";
        std::getline( std::cin, human[i].address );
 
        std::cout
            << "Enter phone number of "
            << nth
            << " student: ";
        std::getline( std::cin, human[i].phone );
 
        std::cout
            << "Enter age of "
            << nth
            << " student: ";
        std::cin >> human[i].age;
        std::cout << "\n";
    }
 
    std::ofstream fout( filename.c_str(), std::ios::out | std::ios::app );
    for ( unsigned int i = 0; i < number_of_entries; ++i )
    {
        fout
            << human[i].full_name
            << "|"
            << human[i].address
            << "|"
            << human[i].phone
            << "|"
            << human[i].age
            << "\n";
    }
    fout.close();
}
 
std::vector<std::string> read_data_from_file( std::string filename )
{
    std::string entry;
    std::vector<std::string> data;
 
    std::ifstream fin;
    fin.open( filename.c_str() );
 
    if ( !fin.is_open() )
    {
        std::cout
        << "Could not open the file "
        << filename
        << "\nProgram terminating.\n\n";
 
        exit( EXIT_FAILURE );
    }
 
    while ( fin.good() )
    {
        std::getline( fin, entry );
        data.push_back( entry );
    }
 
    fin.close();
 
    return data;
}
 
int main()
{
    std::vector<std::string> data;
 
    int key = 0;
    while ( key != ChosenOperation::EXIT )
    {
        std::cout
            << "MENU:\n\n"
            << "\t1 - ADD\n"
            << "\t2 - SHOW\n"
            << "\t3 - DELETE\n"
            << "\t4 - EXIT\n\n"
            << "Press any key: ";
 
        std::cin >> key;
 
        switch ( key )
        {
            case ChosenOperation::ADD :
                add_new_entry_to_file( "Person.txt" );
                break;
 
            case ChosenOperation::SHOW :
                data = read_data_from_file( "Person.txt" );
                for ( const auto & elem : data )
                    std::cout << elem << "\n";
                break;
 
            case ChosenOperation::DELETE :
                // TODO
                break;
 
            case ChosenOperation::EXIT :
                key = ChosenOperation::EXIT;
                break;
        }
    }
 
    return 0;
}
Миниатюры
Запись структуры в файл, чтение из файла и удаление (файловый ввод/вывод)  
1
0 / 0 / 1
Регистрация: 01.04.2016
Сообщений: 76
02.12.2016, 17:03  [ТС]
Спасибо. Буду ждать.

Добавлено через 18 часов 12 минут
Сразу не заметил. Но можно без использования <vector>. Мы их просто еще не проходили.
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
02.12.2016, 17:32
Цитата Сообщение от georgiisav988 Посмотреть сообщение
можно без использования <vector>. Мы их просто еще не проходили.
Это самостоятельно. Заменяйте на обычные сишные массивы, выделяйте память динамически с помощью new, освобождайте с помощью delete - в первом варианте кода такой подход имел место быть, просто замените вектор на массив.

Добавлено через 3 минуты
georgiisav988, кстати, а вот примеры реализации поиска по заданному полю и удаления элемента, удовлетворяющего заданному условию:
1
0 / 0 / 1
Регистрация: 01.04.2016
Сообщений: 76
02.12.2016, 18:12  [ТС]
И там тоже через вектора все реализовано, иначе не возможно, что ли сделать?
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
02.12.2016, 18:33
Цитата Сообщение от georgiisav988 Посмотреть сообщение
иначе не возможно, что ли сделать?
Можно, но крайне неудобно.

Представьте: у Вас гора саморезов, простая крестовая отвёртка, профессиональный шуруповёрт с парой сменных батарей, металлический профнастил и чертёж, по которому вы должны в срок собрать внушительное количество однотипных металлических конструкций. Желание всё сделать на обычных сишных массивах подобно упрямству технофоба, крутящего миллион саморезов простой отвёрткой, и наотрез отказывающегося использовать шуруповёрт, несмотря на то, что рядом напарник с успехом его (такой же шуруповёрт, как и у Вас) использует.

Оценили тонкость метафоры? Вы тот самый человек с отвёрткой. Понять как использовать вектора - делов на пол-часа (раз, два, три, четыре, пять и вот ещё - раз и два). Или в книжке прочитать пару глав - ещё лучше.
2
0 / 0 / 1
Регистрация: 01.04.2016
Сообщений: 76
02.12.2016, 19:09  [ТС]
Сложность не в понятии вектора, а в том что их нельзя использовать в данной программе.
Я то прочитаю их, но использовать пока не могу.
За информацию, отдельно, Спасибо
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
02.12.2016, 19:10
Цитата Сообщение от georgiisav988 Посмотреть сообщение
Сложность не в понятии вектора, а в том что их нельзя использовать в данной программе.
Замените на статические массивы фиксированного размера или массивы, память под которые выделяется динамически. Либо делайте свою реализацию std::vector на базе сишных массивов. Других вариантов я не вижу.
1
0 / 0 / 1
Регистрация: 01.04.2016
Сообщений: 76
02.12.2016, 19:34  [ТС]
Прошу прощение.
Но можешь показать реализацию удаления с вектором?
Что не могу понять, как это сделать. Если можно через вектор, то пусть будет вектор.
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
02.12.2016, 19:48
georgiisav988, сижу, пишу. Если что-то получится, покажу.
1
0 / 0 / 1
Регистрация: 01.04.2016
Сообщений: 76
02.12.2016, 19:50  [ТС]
Крайне признателен
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
02.12.2016, 21:05
georgiisav988, ни черта не получается ((
1
0 / 0 / 1
Регистрация: 01.04.2016
Сообщений: 76
02.12.2016, 21:07  [ТС]
Даже с использованием вектора?
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
02.12.2016, 23:08
Лучший ответ Сообщение было отмечено georgiisav988 как решение

Решение

georgiisav988, ещё буду думать. Но быстрых результатов не обещаю. Может ещё кто-нибудь придёт из более опытных товарищей.

Добавлено через 1 час 58 минут
georgiisav988, сделал. Работает не совсем гладко, код выглядит ужасно, много дублирования кода, всё это надо разбивать на более мелкие функции, в общем, пока что черновой вариант:
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
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <vector>
#include <string>
#include <algorithm>
 
enum ChosenOperation { ADD = 1, SHOW, DELETE, EXIT };
enum SearchingCriteria { NAME = 5, ADDRESS, PHONE, AGE };
 
struct Person
{
    std::string full_name;  // фамилия имя отчество
    std::string address;    // домашний адрес
    std::string phone;      // телефон
    unsigned int age;       // возраст
 
    void show() const
    {
        std::cout
            << "\n"
            << full_name
            << "\n"
            << address
            << "\n"
            << phone
            << "\n"
            << age
            << "\n";
    }
};
 
std::vector<Person> add_new_entry_to_file( std::string filename )
{
    std::cout << "\n\n\tAdding new student to database.\n\n";
 
    std::cout << "Enter number of entries: ";
    unsigned int number_of_entries;
    std::cin >> number_of_entries;
 
    std::cout << "\n\n\tEnter all nessesary data of each entry.\n\n";
    std::vector<Person> human( number_of_entries );
 
    for ( unsigned int i = 0, nth; i < number_of_entries; ++i )
    {
        nth = i + 1;
        while ( std::cin.get() != '\n' );
 
        std::cout
            << "Enter full name of "
            << nth
            << " student: ";
        std::getline( std::cin, human[i].full_name );
 
        std::cout
            << "Enter address of "
            << nth
            << " student: ";
        std::getline( std::cin, human[i].address );
 
        std::cout
            << "Enter phone number of "
            << nth
            << " student: ";
        std::getline( std::cin, human[i].phone );
 
        std::cout
            << "Enter age of "
            << nth
            << " student: ";
        std::cin >> human[i].age;
        std::cout << "\n";
    }
 
    std::ofstream fout( filename.c_str(), std::ios::ate );
    for ( unsigned int i = 0; i < number_of_entries; ++i )
    {
        fout
            << human[i].full_name
            << "|"
            << human[i].address
            << "|"
            << human[i].phone
            << "|"
            << human[i].age
            << "\n";
    }
    fout.close();
 
    return human;
}
 
int main()
{
    std::vector<Person> pdata;
    int key = 0;
    while ( key != EXIT )
    {
        std::cout
            << "\nMENU:\n\n"
            << "\t1 - ADD\n"
            << "\t2 - SHOW\n"
            << "\t3 - DELETE\n"
            << "\t4 - EXIT\n\n"
            << "Press any key: ";
 
        std::cin >> key;
 
        switch ( key )
        {
            case ADD :
                pdata = add_new_entry_to_file( "Person.txt" );
 
                break;
 
 
            case SHOW :
                if ( !pdata.empty() )
                    for ( const auto & elem : pdata )
                        elem.show();
                else
                    std::cout << "\n\tNo entries were found!\n";
 
                break;
 
            case DELETE :
            {
                if ( !pdata.empty() )
                {
                    std::cout
                        << "\nNow you can mark entries to deleting. Select searching criteria:\n\n"
                        << "\t5 - SEEK ENTRY BY NAME\n"
                        << "\t6 - SEEK ENTRY BY ADDRESS\n"
                        << "\t7 - SEEK ENTRY BY PHONE\n"
                        << "\t8 - SEEK ENTRY BY AGE\n"
                        << "\nPress any button: ";
                    int button = 0;
                    std::cin >> button;
                    std::cout << "\nNow you can delete selected entries. Select deleting criteria:\n\n";
 
                    switch ( button )
                    {
                        case NAME :
                        {
                            std::string fname;
                            while ( std::cin.get() != '\n' );
                            std::getline( std::cin, fname );
                            pdata.erase( std::remove_if( pdata.begin(), pdata.end(), [&]( const Person & pers ){ return pers.full_name == fname; } ) );
                            break;
                        }
 
                        case ADDRESS :
                        {
                            std::string adrs;
                            while ( std::cin.get() != '\n' );
                            std::getline( std::cin, adrs );
                            pdata.erase( std::remove_if( pdata.begin(), pdata.end(), [&]( const Person & pers ){ return pers.address == adrs; } ) );
                            break;
                        }
 
                        case PHONE :
                        {
                            std::string phn;
                            while ( std::cin.get() != '\n' );
                            std::getline( std::cin, phn );
                            pdata.erase( std::remove_if( pdata.begin(), pdata.end(), [&]( const Person & h ){ return h.phone == phn; } ) );
                            break;
                        }
 
                        case AGE :
                        {
                            unsigned int a;
                            std::cin >> a;
                            pdata.erase( std::remove_if( pdata.begin(), pdata.end(), [&]( const Person & pers ){ return pers.age == a; } ) );
                            break;
                        }
 
                        default :
                            std::cout << "\nIt seems like wrong number. Try again.\n";
                            break;
                    } // end switch ( button )
 
                    std::cout << "\nSelected data has been erased.\n";
 
                } // end if ( !hdata.empty() )
 
                else
                    std::cout << "\n\tNo entries were found!\n";
 
                break;
 
            } // end DELETE SECTION
 
            case EXIT :
                key = EXIT;
                break;
 
            default :
                std::cout << "\nIt seems like wrong number. Try again.\n";
                break;
        }
    }
 
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.12.2016, 23:08
Помогаю со студенческими работами здесь

Считать данные из текстового файла по условию и записать их в другой текстовый файл (файловый ввод/вывод)
Здравствуйте! Очень прошу о помощи! Суть задания - дан текстовый файл, нужно считать его и записать в другой файл слова состоящие только из...

Структуры.Файловый ввод вывод в С++
Никак не могу разобраться с заданием. Помогиииите!! Структурный тип данных: Текущий курс иностранной валюты (course) Элементы...

Структуры, Файловый ввод-вывод. С++
Привет, помогите пожалуйста. Задание: В программе собраны сведения об успеваемости студентов одной группы по некоторой дисциплине....

структуры. файловый ввод-вывод.
не могу понять, чего от меня хотят???? Сформировать двоичный файл из элементов, заданной структуры, распечатать его содержимое,...

Для каждой строки файла удалить среднее слово; результат записать в файл (файловый ввод/вывод)
для каждой строки файла удалить среднее слово. результат записать в файл


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru