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

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

Войти
Регистрация
Восстановить пароль
 
nelson1992
3 / 3 / 0
Регистрация: 21.10.2009
Сообщений: 77
#1

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

25.11.2011, 12:57. Просмотров 950. Ответов 6
Метки нет (Все метки)

У меня задание:

. Структура "Человек":

- фамилия, имя, отчество;

- домашний адрес;

- номер телефона;

- возраст.

Удалить все элементы с заданным возрастом, добавить элемент после элемента с заданным номером.

Я сделал удаление, а вот добавление что-то не получается, добавляется только в конец структуры, а не в заданный номер.

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
#include <iostream>
#include <cstring>
#include <windows.h>
#include <fstream>
#include <iomanip>
#include <cstdlib>
#include <cstring>
 
 
using namespace std;
 
char* Rus(const char* text);
 
char way[80];
char *file;
double x;
int p;
 
struct student
{
        char fio[50];
        char adr[50];
        int nom;
        double rat;
        void input();
};
 
void tabl()
{
        int z;
    for (z=0; z<80; z++)
    cout<<'-';
}
 
void print(student *s, int n)
{
            int i;
                tabl();
                cout.setf(ios::left);
                cout<<'|'<<' '<<setw(22)<<Rus("ÔÈÎ");
                cout<<'|'<<' '<<setw(34)<<Rus("ÄîìГ*ГёГ*ГЁГ© Г*äðåñ");
                cout<<'|'<<' '<<setw(7)<<Rus("Íîìåð òåëåôîГ*Г*");
                cout<<'|'<<' '<<setw(8)<<Rus("ÂîçðГ*Г±ГІ");
                cout<<'|';
                tabl();
                for (i=0; i<n; i++)
                {
                        cout.setf(ios::left);
                cout<<'|'<<' '<<setw(22)<<s[i].fio<<'|';
                    cout<<' '<<setw(34)<<s[i].adr<<'|';
                    cout<<' '<<setw(7)<<s[i].nom<<'|';
                    cout<<' '<<setw(8)<<s[i].rat;
                        cout<<'|';
                        tabl();
                }
}
 
void student::input()
{       
    cout<<Rus("Ââåäèòå ГґГ*ìèëèþ, èìÿ, îò÷åñòâî ÷åëîâåêГ* -> ");
                cin.clear();
                _flushall();
                cin.getline(fio, 79);
                cout<<Rus("Ââåäèòå äîìГ*ГёГ*ГЁГ© Г*äðåñ -> ");
                cin.clear();
                _flushall();
                cin.getline(adr, 79);
                cout<<Rus("Ââåäèòå Г*îìåð òåëåôîГ*Г* -> ");
                cin>>nom;
                cout<<Rus("Ââåäèòå âîçðГ*Г±ГІ -> ");
                cin>>rat;
}       
 
int main()
{
        student *s;
        int n, i, o=-1;
        for (; o ;)
        {
        cout<<Rus("1.Ââîä Г± ГЄГ«Г*ГўГЁГ*òóðû Гў ГЄГ®Г*ñîëüГ*îì ðåæèìå\n2.Âûâîä Г*Г* ГЅГЄГ°Г*Г* Гў ГЄГ®Г*ñîëüГ*îì ðåæèìå\n3.ÑîçäГ*ГІГј ГґГ*éë ГЁ Г§Г*ГЇГЁГ±Г*ГІГј Гў Г*ГҐГЈГ® ñòðóêòóðèðîâГ*Г*Г*ûå Г¤Г*Г*Г*ûå\n");
        cout<<Rus("4.Âûâåñòè ñîçäГ*Г*Г*ûé ГґГ*éë Г*Г* ГЅГЄГ°Г*Г*\n5.ÓäГ*ëèòü ГўГ±ГҐГµ ëþäåé Г± Г§Г*Г¤Г*Г*Г*ûì âîçðГ*ñòîì\n");
        cout<<Rus("6.ÄîáГ*ГўГЁГІГј ýëåìåГ*ГІ ïîñëå Г§Г*Г¤Г*Г*Г*îãî Г*îìåðГ*\n7.Âûõîä\n");
        cout<<Rus("\nÂûáåðèòå Г*ГіГ¦Г*ûé ГўГ*Г¬ ГЇГіГ*ГЄГІ -> ");
        cin>>o;
        cout<<"\n";
        if(o==1)
        {
                cout<<Rus("Ââåäèòå êîëè÷åñòâî ÷åëîâåê -> ");
                cin>>n;
            s=new student[n];
            for (i=0; i<n; i++)
                {
                        s[i].input();
                }
        }
        if(o==2)
        {
                cout<<Rus("\nÂâåäåГ*Г*ûå Г¤Г*Г*Г*ûå:\n");
                print(s, n);
        }
        if(o==3)
        {
                cout<<Rus("Ââåäèòå ГЇГіГІГј ГЄ ГґГ*éëó èëè Г*Г*çâГ*Г*ГЁГҐ ГґГ*éëГ* äëÿ Г§Г*ГЇГЁГ±ГЁ Гў Г*ГҐГЈГ® Г¤Г*Г*Г*ûõ -> \n");
                cin.clear();
                _flushall();
                cin.getline(way,80);
                ofstream output(way , ios::out | ios::trunc);
                output.setf(ios::left);
                if (!output.is_open())
                {
                        cout<<Rus("/nГЋГёГЁГЎГЄГ*!\n");
                        return 0;
                }
                for (i=0;i<n;i++)
                {
                        output.setf(ios::left);
                        output<<setw(22)<<s[i].fio;
                    output<<setw(34)<<s[i].adr;
                    output<<setw(7)<<s[i].nom;
                    output<<setw(8)<<s[i].rat<<"\n";
                }
                output.close();
        }
        if(o==4)
        {
        cout<<Rus("Ââåäèòå ГЇГіГІГј ГЄ ГґГ*éëó èëè Г*Г*çâГ*Г*ГЁГҐ ГґГ*éëГ* äëÿ Г·ГІГҐГ*ГЁГї ГЁГ§ Г*ГҐГЈГ® Г¤Г*Г*Г*ûõ -> \n");
        cin.clear();
        _flushall();
        cin.getline(way,80);
        ifstream input(way, ios::in);
        const int buffer = 4096; 
        file=new char[buffer];
        if (!input.is_open())
        {
                cout<<Rus("ГЋГёГЁГЎГЄГ*\n");
                return 0;
        }
        cout<<Rus("\nÏðî÷èòГ*Г*Г*ûå Г¤Г*Г*Г*ûå ГЁГ§ ГґГ*éëГ*:\n");
        tabl();
        while(input.peek()!=EOF)
        {
                input.getline(file, buffer);
                cout<<file<<"\n";
        }
        tabl();
        input.close();
        }
        if(o==5)
        {
                cout<<Rus("Ââåäèòå ГЇГіГІГј ГЄ ГґГ*éëó èëè Г*Г*çâГ*Г*ГЁГҐ ГґГ*éëГ* äëÿ Г·ГІГҐГ*ГЁГї ГЁГ§ Г*ГҐГЈГ® Г¤Г*Г*Г*ûõ\n");
                cin.clear();
                _flushall();
                cin.getline(way,80);
                ofstream output(way , ios::out | ios::trunc);
                if (!output.is_open())
                {
                        cout<<Rus("ГЋГёГЁГЎГЄГ*\n");
                        return 0;
                }
                cout<<Rus("ÓäГ*ëèòü ГЁГ§ ГґГ*éëГ* ëþäåé Г± âîçðГ*ñòîì -> ");
                cin>>x;
                for (i=0; i<n; i++)
                {
                        if (x != s[i].rat)
                        {
                                output.setf(ios::left);
                                output<<setw(22)<<s[i].fio;
                                output<<setw(34)<<s[i].adr;
                                output<<setw(7)<<s[i].nom;
                                output<<setw(8)<<s[i].rat;
                                output.put(13);
                                output.put(10);
                        }
                }
        }
        if (o==6)
        {
                cout<<Rus("Ââåäèòå ГЇГіГІГј ГЄ ГґГ*éëó èëè Г*Г*çâГ*Г*ГЁГҐ ГґГ*éëГ* äëÿ Г·ГІГҐГ*ГЁГї ГЁГ§ Г*ГҐГЈГ® Г¤Г*Г*Г*ûõ\n");
                cin.clear();
                _flushall();
                cin.getline(way,80);
                ofstream output(way, ios::app);
                if (!output.is_open())
                {
                        cout<<Rus("ГЋГёГЁГЎГЄГ*\n");
                        return 0;
                }
                cout<<Rus("Ââåäèòå Г*îìåð ýëåìåГ*ГІГ*, ïîñëå êîòîðîãî ñëåäóåò äîáГ*ГўГЁГІГј -> ");
                cin>>p;
                p=+1;
                student *r;
                r=new student[n];
                cout<<Rus("Ââåäèòå ГґГ*ìèëèþ, èìÿ, îò÷åñòâî ÷åëîâåêГ* -> ");
                cin.clear();
                _flushall();
                cin.getline(r[p].fio, 79);
                cout<<Rus("Ââåäèòå äîìГ*ГёГ*ГЁГ© Г*äðåñ -> ");
                cin.clear();
                _flushall();
                cin.getline(r[p].adr, 79);
                cout<<Rus("Ââåäèòå Г*îìåð òåëåôîГ*Г* -> ");
                cin>>r[p].nom;
                cout<<Rus("Ââåäèòå âîçðГ*Г±ГІ -> ");
                cin>>r[p].rat;
                output.seekp(p * sizeof(s[0]), ios::beg);
                output.setf(ios::left);
                                output<<setw(22)<<r[p].fio;
                                output<<setw(34)<<r[p].adr;
                                output<<setw(7)<<r[p].nom;
                                output<<setw(8)<<r[p].rat;
                delete []r;
        }
        if(o==7)
                return 0;
        }
        delete[]s;
}
char bufRus[256];
char* Rus (const char* text) {
        CharToOem(text, bufRus);
        return bufRus;
}
Добавлено через 10 часов 39 минут
Кто нибудь сможет помочь???
 Комментарий модератора 
Используйте более соответствующие заданию названия тем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2011, 12:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Добавление экземпляра структуры в конец коллекции (C++):

Ошибка при добавление экземпляра класса - C++
Добавляю один товар, все хорошо. При повторном добавлении название и вид предыдущих товаров заменяется на данные вновь добавленного...

Замена экземпляра структуры для подачи в качестве аргумента - C++
Интересует есть ли способ замены экземпляра структуры для подачи в функцию. Т.е. если я создаю собственную структуру(естественно с...

Добавление нового указателя в конец массива указателей, удаление указанного элемента, добавление указателей - C++
Здравствуйте. Помогите, пожалуйста, разобраться с одним большим заданием. Задание пока в процессе написания, но уже наверное есть ошибки....

Создание нового экземпляра дочернего класса из экземпляра базового - C++
Всем привет! Извиняюсь, если вопрос глупый, но что-то не смог найти конкретный ответ на него... У меня есть несколько классов: все они...

При создании экземпляра класса, создается 2 экземпляра вместо 1 - C++
Подсчет экземпляров ведется с помощью статического члена num_dogs, который во всех трех конструкторах (1. по умолчанию, 2. со всеми...

Запись структуры в конец файла - C++
Доброго времени суток. Подскажите, пожалуйста, как записать структуру в конец файла? Сначала создаётся структура и записывается в...

6
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
25.11.2011, 14:38 #2
nelson1992, Создаем новый массив с новым размером памяти. Копируем из старого массива в новый. Удаляем старый массив. Все.
0
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
25.11.2011, 14:39 #3
Цитата Сообщение от ForEveR Посмотреть сообщение
Создаем новый массив с новым размером памяти. Копируем из старого массива в новый. Удаляем старый массив. Все.
И не забываем все это обернуть в отдельную сущность.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
25.11.2011, 14:41 #4
fasked, А лучше юзать лист, чем плодить сущности.
0
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
25.11.2011, 14:42 #5
Цитата Сообщение от ForEveR Посмотреть сообщение
А лучше юзать лист, чем плодить сущности.
Боюсь, что преподаватель хочет видеть студенческую реализацию контейнера.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
25.11.2011, 14:42 #6
fasked, Я же сказал что лучше, а не что обязательно надо в данном случае)
0
nelson1992
3 / 3 / 0
Регистрация: 21.10.2009
Сообщений: 77
26.11.2011, 01:40  [ТС] #7
Ничего не получается...3 часа сидел над лабой...и в пустую...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2011, 01:40
Привет! Вот еще темы с ответами:

Сложение экземпляра базового класса и экземпляра наследника - C++
Добрый вечер! Моя задача - сложить экземпляр базового класса и наследника. Нужно сделать так, чтобы результат сложения &quot;знал&quot;...

Map. Добавление в конец - C++
Ребята помогите разобраться пытаюсь в map засунуть &lt;string ,string&gt;. Вот такие значения допустим: &quot;0&quot; &quot;1&quot; &quot;00&quot; &quot;11&quot;. Вот таким образом: ...

Добавление в конец списка - C++
Привет всем, необходимо реализовать алгоритм вставки. В общем беру элемент на нечетной позиции списка и вставляю его в конец. 3-й час...

Добавление элемента в конец списка - C++
Решил перегрузить функцию добавления элемента, чтоб пользователь мог выбрать куда добавить новый элемент, в начало (перед первым) или в...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
26.11.2011, 01:40
Ответ Создать тему
Опции темы

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