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

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

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

Добавление элементов структуры - C++

07.09.2013, 17:44. Просмотров 514. Ответов 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
                        cout << "Сколько хотите стран добавить?\t";
            unsigned short number_country; 
            cin >> number_country;
            
            ifstream output("D:\\info.txt");
            int p;
            output>>p;
            
            ofstream input("D:\\info.txt");
            input << p+number_country;
            input.close();
 
            world *res = new world[p+number_country];
            for (int i=0; i<p; i++)
            {
                output>>res[i].name;
                output>>res[i].capital;
                output>>res[i].population;
                output>>res[i].area;
            }
            output.close();
            system("cls");
 
            f_in = fopen("D:\\info.txt", "at");
            for (int i=p; i<p+number_country;i++)
            {
                
                wcin.ignore(256,L'\n');
                cout << "Название:\t\t\t";
                fprintf(f_in, "Название:\t\t\t");
                getline(cin, res[i].name, '\n');
                 // КАК ВОТ ТУТ ДОПИСАТЬ В ФАЙЛ ЭЛЕМЕНТ res[i].name ??
 
                cout << "Столица:\t\t\t";
                getline(cin, res[i].capital, '\n');
                // АНАЛОГИЧНО, КАК МОЖНО ДОПИСАТЬ?
 
                cout<<"Население:\t\t\t";
                cin >> res[i].population;
                // АНАЛОГИЧНО
 
                cout<<"Площадь:\t\t\t";
                cin >> res[i].area;
                //АНАЛОГИЧНО
            }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2013, 17:44     Добавление элементов структуры
Посмотрите здесь:

Удаление и добавление элементов динамической структуры данных - C++
Структура &quot;Абитуриент&quot;: - фамилия, имя, отчество; - год рождения; - оценки вступительных экзаменов (3); - средний балл аттестата. ...

создание структуру СТРАНА. добавление и удаление элементов из структуры - C++
Сформируйте двоичный файл из элементов, заданной в варианте структуры, напечатайте его содержимое, выполните удаление и добавление...

Добавление экземпляра структуры в конец коллекции - C++
У меня задание: . Структура &quot;Человек&quot;: - фамилия, имя, отчество; - домашний адрес; - номер...

С++ Динамический массив структур (добавление новой структуры) - C++
Друзья, создаю программу &quot;Библиотека&quot; и запоролся на добавлении структуры к массиву (книги в картотеку, если коротко). Проблема в...

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

Сортировка элементов структуры - C++
Цель программы: Считать и отсортировать информацию о студентах в группе. Сортировка просходит по номеру зачетки. Код: #include...

Отбор элементов структуры - C++
Здравствуйте! Изучаю тему &quot;Структуры&quot;. Написал определенный алгоритм успешности студентов группы (образно) . Надо еще реализовать вывод 2...

упорядочение элементов структуры по алфавиту - C++
следущий код программы упорядочивает элементы структур по номеру тоесть по .number; элементу структуры, помогите пожалуйста упорядочить по...

Передача в функцию элементов структуры - C++
Всем доброго времени суток! Подскажите пожалуйста как передать элементы структуры в функцию.Задача следующая есть структура данных: ...

Ввод и вывод элементов структуры - C++
Не получается ввести и вывести на экран элементы структуры после второго. #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;string.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GoldenChild
28 / 28 / 4
Регистрация: 12.06.2013
Сообщений: 65
07.09.2013, 18:07     Добавление элементов структуры #2
Если ты хочешь добавлять новые поля в файл, то придется сначала считать их в массив структур, при этом запоминая сколько их, после уже существующих добавить новые, увеличивая счетчик, а потом уже это все снова записать в файл.
Если добавление идет в программе несколько раз, а запись в файл в конце, то просто создай глобальную переменную-счетчик.
fktrctq0321
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 37
07.09.2013, 18:50  [ТС]     Добавление элементов структуры #3
Цитата Сообщение от GoldenChild Посмотреть сообщение
Если ты хочешь добавлять новые поля в файл, то придется сначала считать их в массив структур, при этом запоминая сколько их, после уже существующих добавить новые, увеличивая счетчик, а потом уже это все снова записать в файл.
Если добавление идет в программе несколько раз, а запись в файл в конце, то просто создай глобальную переменную-счетчик.
так вроде так и делаю.. тут ерунда-то осталась... просто не знаю какой функцией воспользоваться, чтобы непосредственно дописать (см. код и комментарии)
Подскажете?
Заранее спасибо

Добавлено через 34 минуты
Вот ещё такой вариант есть, тут отлично всё дописывает, только вначале файла надо цифру переписать (например, там была 1, добавили 1 страну, должна стать 2). Не знаю как переписать ту единичку на 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
cout << "Сколько хотите стран добавить?\t";
            unsigned short number_country; 
            cin >> number_country;
            
            
            ifstream output("D:\\info.txt");
            int p;
            output>>p;
            
 
            world *res = new world[p+number_country];
            for (int i=0; i<p; i++)
            {
                output>>res[i].name;
                output>>res[i].capital;
                output>>res[i].population;
                output>>res[i].area;
            }
 
            system("cls");
            
            
            for (int i=p; i<p+number_country;i++)
            {
                wcin.ignore(256,L'\n');
                cout << "Название:\t\t\t";
                file << "Название:\t\t\t";
                getline(cin, res[i].name, '\n');
                file<<res[i].name<<endl;
 
                cout << "Столица:\t\t\t";
                file << "Столица:\t\t\t";
                getline(cin, res[i].capital, '\n');
                file<<res[i].capital<<endl;
 
                cout<<"Население:\t\t\t\t";
                file << "Население:\t\t\t\t";
                cin >> res[i].population;
                file<<res[i].population<<endl;
 
                cout<<"Площадь:\t\t\t\t";
                file << "Площадь:\t\t\t\t";
                cin >> res[i].area;
                file<<res[i].area<<endl<<endl;
            }
Ответ Создать тему
Опции темы

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