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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
#1

Упорядочить элементы структуры - C++

02.12.2013, 22:01. Просмотров 1226. Ответов 33
Метки нет (Все метки)

Необходимо составить структуру, сделать сортировку по признаку, по убыванию или возрастанию...
Вот код:
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
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
struct Man
{
    string fio;
    int date;
    double stat,weight;
    char gen;
};
 
void Init(Man *people,int n)
{
    char gent,Mas_Char[30];
    for (int i=0;i<n;i++)
    {
        cin.sync();
        cout <<"\nВведите ФИО: ";
        cin.getline(Mas_Char,30);
        people[i].fio=Mas_Char;
        cout <<"Введите год рождения: ";
        cin >>people[i].date;
        cout <<"Введите рост человека: ";
        cin >>people[i].stat;
        cout <<"Введите вес человека: ";
        cin >>people[i].weight;
        cout <<"Введите пол человека ""м"" или ""ж"": ";
        label:cin >>gent;
        if ((gent=='м')||(gent=='ж'))
            people[i].gen=gent;
        else 
        {
            cout <<"Введите ""м"" или ""ж"": ";
            goto label;
        }
    }
}
 
void Print(Man *people,int n)
{
    fstream file;
    file.open("people.txt",ios::app);
    if (file)
    {   
        for (int i=0;i<n;i++)
        {
            file <<"\n"<<"ФИО человека      : "<<people[i].fio<<"\n";
            file <<"Год рождения      : "<<people[i].date<<"\n";
            file <<"Рост              : "<<people[i].stat<<"\n";
            file <<"Вес               : "<<people[i].weight<<"\n";
            file <<"Пол               : "<<people[i].gen<<"\n";
        }
                
    }
    else cout <<"Файл не может быть открыт или создан!";
    file.close();
}
 
void Display(Man *people, int n)
{
    for(int i=0;i<n;i++)
        {
            cout <<"\nФИО человека      : "<<people[i].fio<<"\n";
            cout <<"Год рождения      : "<<people[i].date<<"\n";
            cout <<"Рост              : "<<people[i].stat<<"\n";
            cout <<"Вес               : "<<people[i].weight<<"\n";
            cout <<"Пол               : "<<people[i].gen<<"\n";
        }
}
 
Man* Sort(Man *people, int n, int z, int priz)
{
    int k;
    Man buff;
    if (z==0)
        switch (priz)
    {
    case (0):{
    for(int i=0;i<n-1;i++)
    {
        k=i;
        for(int j=i+1;j<n;j++)
        {
            if (people[k].weight > people[j].weight)
                k=j;
        }
        buff.fio=people[i].fio;
        buff.date=people[i].date;
        buff.stat=people[i].stat;
        buff.weight=people[i].weight;
        buff.gen=people[i].gen;
        people[i].fio=people[k].fio;
        people[i].date=people[k].date;
        people[i].stat=people[k].stat;
        people[i].weight=people[k].weight;
        people[i].gen=people[k].gen;
        people[k].fio=buff.fio;
        people[k].date=buff.date;
        people[k].stat=buff.stat;
        people[k].weight=buff.weight;
        people[k].gen=buff.gen;
    }
             }break;
    case (1):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].stat > people[j].stat)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }
             }break;
    case (2):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].date < people[j].date)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }            
             }break;
    }
    if (z==1)
        switch (priz)
        {
    case (0):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].weight < people[j].weight)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }
             }break;
    case (1):{
      for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].stat < people[j].stat)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }
             }break;
    case (2):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].date > people[j].date)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }            
             }break;
    }
return people;
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    int n,poss,poss1,i;
    cout <<"Введите количество человек: ";
    cin >>n;
    Man* people = new Man[n];
    Man tmp;
    Init(people,n);
    lab:system("cls");
    cout <<"\nВыберите:";
    cout <<"\n0---------->Вывод на экран";
    cout <<"\n1---------->Вывод в файл";
    cout <<"\n2---------->Сортировка";
    cout <<"\n3---------->Выход!";
    cout <<"\n---->";cin >>poss;
    switch (poss)
    {
    case (0):
        Display(people,n);
        system("pause");
        break;
    case (1):
        Print(people,n);
        break;
    case (2):{
        cout <<"\nВыберите метод сортировки:";
        cout <<"\n0---------->По возростанию";
        cout <<"\n1---------->По убыванию";
        cout <<"\n---->";cin >>poss;
        cout <<"\nВыберите метод сортировки:";
        cout <<"\n0---------->По Возрасту";
        cout <<"\n1---------->По Росту";
        cout <<"\n2---------->По Весу";
        cout <<"\n---->";cin >>poss1;
        people=Sort(people,n,poss,poss1);
        break;
             }
    case (3):
        exit(0);
        system("pause");
        break;
    }
    goto lab;
    return 0;
}
Сортирует правильно только лишь по росту... хотя алгоритм везде одинаковый...Помогите кто может пожалуйста.

Добавлено через 12 минут
Вот куча ошибок при компиляции в Release:
Код
1>------ Построение начато: проект: Lab_rab11, Конфигурация: Release Win32 ------
1>Построение начато 02.12.2013 22:37:10.
1>InitializeBuildStatus:
1>  Обращение к "Release\Lab_rab11.unsuccessfulbuild".
1>ClCompile:
1>  Для всех выходных данных обновления не требуется.
1>  Lab_rab11.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(57): error C2011: vc_attributes::YesNoMaybe: переопределение типа "enum"
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(57): см. объявление "vc_attributes::YesNoMaybe"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(67): error C2011: vc_attributes::AccessType: переопределение типа "enum"
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(67): см. объявление "vc_attributes::AccessType"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(81): error C2011: vc_attributes::Pre: переопределение типа "struct"
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(81): см. объявление "vc_attributes::Pre"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(78): error C3094: repeatable: анонимное использование не допускается
1>          predefined C++ attributes (compiler internal)(147): см. объявление "repeatable"
1>          атрибут может быть применен только к: 'class', 'struct'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(112): error C2011: vc_attributes::Post: переопределение типа "struct"
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(112): см. объявление "vc_attributes::Post"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(109): error C3094: repeatable: анонимное использование не допускается
1>          predefined C++ attributes (compiler internal)(147): см. объявление "repeatable"
1>          атрибут может быть применен только к: 'class', 'struct'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(143): error C2011: vc_attributes::FormatString: переопределение типа "struct"
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(143): см. объявление "vc_attributes::FormatString"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(155): error C2011: vc_attributes::InvalidCheck: переопределение типа "struct"
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(155): см. объявление "vc_attributes::InvalidCheck"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(152): error C3094: repeatable: анонимное использование не допускается
1>          predefined C++ attributes (compiler internal)(147): см. объявление "repeatable"
1>          атрибут может быть применен только к: 'class', 'struct'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(165): error C2011: vc_attributes::Success: переопределение типа "struct"
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(165): см. объявление "vc_attributes::Success"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(176): error C2011: vc_attributes::PreBound: переопределение типа "struct"
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(176): см. объявление "vc_attributes::PreBound"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(173): error C3094: repeatable: анонимное использование не допускается
1>          predefined C++ attributes (compiler internal)(147): см. объявление "repeatable"
1>          атрибут может быть применен только к: 'class', 'struct'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(186): error C2011: vc_attributes::PostBound: переопределение типа "struct"
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(186): см. объявление "vc_attributes::PostBound"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(183): error C3094: repeatable: анонимное использование не допускается
1>          predefined C++ attributes (compiler internal)(147): см. объявление "repeatable"
1>          атрибут может быть применен только к: 'class', 'struct'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(196): error C2011: vc_attributes::PreRange: переопределение типа "struct"
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(196): см. объявление "vc_attributes::PreRange"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(193): error C3094: repeatable: анонимное использование не допускается
1>          predefined C++ attributes (compiler internal)(147): см. объявление "repeatable"
1>          атрибут может быть применен только к: 'class', 'struct'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(208): error C2011: vc_attributes::PostRange: переопределение типа "struct"
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(208): см. объявление "vc_attributes::PostRange"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(205): error C3094: repeatable: анонимное использование не допускается
1>          predefined C++ attributes (compiler internal)(147): см. объявление "repeatable"
1>          атрибут может быть применен только к: 'class', 'struct'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(245): error C2370: SA_Yes: переопределение; другой класс хранения
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(245): см. объявление "SA_Yes"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(246): error C2370: SA_No: переопределение; другой класс хранения
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(246): см. объявление "SA_No"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(247): error C2370: SA_Maybe: переопределение; другой класс хранения
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(247): см. объявление "SA_Maybe"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(250): error C2370: SA_NoAccess: переопределение; другой класс хранения
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(250): см. объявление "SA_NoAccess"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(251): error C2370: SA_Read: переопределение; другой класс хранения
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(251): см. объявление "SA_Read"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(252): error C2370: SA_Write: переопределение; другой класс хранения
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(252): см. объявление "SA_Write"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(253): error C2370: SA_ReadWrite: переопределение; другой класс хранения
1>          c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(253): см. объявление "SA_ReadWrite"
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:00.53
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 =========
Помогите разобраться кто нибудь..Пожалуйста

Добавлено через 1 минуту
При этом в Debug компилируется... Но с уже названной проблемой

Добавлено через 1 час 20 минут
Неужели никто даже предположение высказать не может)?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 22:01     Упорядочить элементы структуры
Посмотрите здесь:

Упорядочить записи структуры по фамилии - C++
Помогите сделать пожалуйста. Дана структура. Нужно сделать упорядочивание по фамилии . Заранее, спасибо. #include &lt;iostream&gt; #include...

Упорядочить номера маршрутов по возрастанию (структуры) - C++
Помогите пожалуйста как упорядочить номера маршрутов по возрастанию?? #include &lt;iostream&gt; #include &lt;string.h&gt; #include...

Упорядочить элементы массива в порядке возрастания, все элементы больше нуля увеличить в 3 раза - C++
Помогите пожалуйста Нужна прога: Есть массив X(n). Упорядочить его элементы в порядке возрастания, все элементы больше нуля...

Упорядочить элементы массива, располагая в первой его половине элементы, стоявшие на четных позициях - C++
Есть массив: int main() { setlocale(LC_ALL,&quot;RUSSIAN&quot;); int array; int i, n, k, min, sumabs = 0, minabs = 0; ...

Упорядочить все элементы матрицы таким образом, чтобы при чтении матрицы по строкам ее элементы образовывали отсортированный по возрастанию массив - C++
Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1&lt;n&lt;=100, 1&lt;m&lt;=50) и Упорядочить все элементы матрицы...

Упорядочить элементы по неубыванию - C++
Ввести в память машины с клавиатуры одномерный целочисленный массив, размером не менее 10 и не более 50 элементов. Вывести на экран...

Упорядочить элементы в матрице - C++
Есть матрица m*n. Упорядочить по возрастанию элементов строку с наибольшим произведением элементов. Помогите пожалуйста , не могу...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
03.12.2013, 11:11  [ТС]     Упорядочить элементы структуры #21
Цитата Сообщение от newbie666 Посмотреть сообщение
эта ошибка говорит об обращение к не инициализированным данным, скорее всего у тебя указатель в лажу какую то указывает )))
Спасибо) Ну а где именно?) Там ошибка в самом начале должна быть, я вот только некрена не вижу...
С вашим кодом посидел немного разобрался, согласен работать так намного удобней) Буду разбираться. И вот вопрос по первым моим вопросам у вас случайно идей не появилось)? Ведь там по алгоритму все верно, по полю stat программа все ровно сортируе, а вот по другим полям непонятка... Хотя все один в один, в чем может быть дело???)
newbie666
Заблокирован
03.12.2013, 11:14     Упорядочить элементы структуры #22
эээх ладно ща компильну твой код
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
03.12.2013, 11:19  [ТС]     Упорядочить элементы структуры #23
C++
1
Man** people = new Man*[n];
вот инициализация памяти, я же правильно понимаю?
C++
1
Init(people,n);
за ним идет вызов функции, все же вроде верно...

Добавлено через 3 минуты
Цитата Сообщение от newbie666 Посмотреть сообщение
эээх ладно ща компильну твой код
Вы вот этот код скомпилируйте пожалуйста)
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
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
struct Man
{
    string fio;
    int date;
    double stat,weight;
    char gen;
};
 
void Init(Man *people,int n)
{
    char gent,Mas_Char[30];
    for (int i=0;i<n;i++)
    {
        cin.sync();
        cout <<"\nВведите ФИО: ";
        cin.getline(Mas_Char,30);
        people[i].fio=Mas_Char;
        cout <<"Введите год рождения: ";
        cin >>people[i].date;
        cout <<"Введите рост человека: ";
        cin >>people[i].stat;
        cout <<"Введите вес человека: ";
        cin >>people[i].weight;
        cout <<"Введите пол человека ""м"" или ""ж"": ";
        label:cin >>gent;
        if ((gent=='м')||(gent=='ж'))
            people[i].gen=gent;
        else 
        {
            cout <<"Введите ""м"" или ""ж"": ";
            goto label;
        }
    }
}
 
void Print(Man *people,int n)
{
    fstream file;
    file.open("people.txt",ios::app);
    if (file)
    {   
        for (int i=0;i<n;i++)
        {
            file <<"\n"<<"ФИО человека      : "<<people[i].fio<<"\n";
            file <<"Год рождения      : "<<people[i].date<<"\n";
            file <<"Рост              : "<<people[i].stat<<"\n";
            file <<"Вес               : "<<people[i].weight<<"\n";
            file <<"Пол               : "<<people[i].gen<<"\n";
        }
                
    }
    else cout <<"Файл не может быть открыт или создан!";
    file.close();
}
 
void Display(Man *people, int n)
{
    for(int i=0;i<n;i++)
        {
            cout <<"\nФИО человека      : "<<people[i].fio<<"\n";
            cout <<"Год рождения      : "<<people[i].date<<"\n";
            cout <<"Рост              : "<<people[i].stat<<"\n";
            cout <<"Вес               : "<<people[i].weight<<"\n";
            cout <<"Пол               : "<<people[i].gen<<"\n";
        }
}
 
void Sort(Man *people, int n, int z, int priz)
{
    int k;
    Man buff;
    if (z==0)
    {
        switch (priz)
    {
    case (0):{
    for(int i=0;i<n-1;i++)
    {
        k=i;
        for(int j=i+1;j<n;j++)
        {
            if (people[k].weight > people[j].weight)
                k=j;
        }
        buff.fio=people[i].fio;
        buff.date=people[i].date;
        buff.stat=people[i].stat;
        buff.weight=people[i].weight;
        buff.gen=people[i].gen;
        people[i].fio=people[k].fio;
        people[i].date=people[k].date;
        people[i].stat=people[k].stat;
        people[i].weight=people[k].weight;
        people[i].gen=people[k].gen;
        people[k].fio=buff.fio;
        people[k].date=buff.date;
        people[k].stat=buff.stat;
        people[k].weight=buff.weight;
        people[k].gen=buff.gen;
    }
             break;}
    case (1):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].stat > people[j].stat)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }
             break;}
    case (2):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].date < people[j].date)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }            
             break;}
    }
    }
    if (z==1)
    {
        switch (priz)
        {
    case (0):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].weight < people[j].weight)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }
             break;}
    case (1):{
      for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].stat < people[j].stat)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }
             break;}
    case (2):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].date > people[j].date)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }            
             break;}
    }
    }
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    int n,poss,poss1,i;
    cout <<"Введите количество человек: ";
    cin >>n;
    Man* people = new Man[n];
    Man tmp;
    Init(people,n);
    lab:system("cls");
    cout <<"\nВыберите:";
    cout <<"\n0---------->Вывод на экран";
    cout <<"\n1---------->Вывод в файл";
    cout <<"\n2---------->Сортировка";
    cout <<"\n3---------->Выход!";
    cout <<"\n---->";cin >>poss;
    switch (poss)
    {
    case (0):
        Display(people,n);
        system("pause");
        break;
    case (1):
        Print(people,n);
        break;
    case (2):{
        cout <<"\nВыберите метод сортировки:";
        cout <<"\n0---------->По возростанию";
        cout <<"\n1---------->По убыванию";
        cout <<"\n---->";cin >>poss;
        cout <<"\nВыберите метод сортировки:";
        cout <<"\n0---------->По Возрасту";
        cout <<"\n1---------->По Росту";
        cout <<"\n2---------->По Весу";
        cout <<"\n---->";cin >>poss1;
        Sort(people,n,poss,poss1);
        break;
             }
    case (3):
        exit(0);
        system("pause");
        break;
    }
    goto lab;
    return 0;
}
это мой)
А этот мне здесь подсказали он тоже ниче так) только вот с памятью проблемы:
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
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
struct Man
{
    string fio;
    int date;
    double stat,weight;
    char gen;
};
 
void Init(Man **people,int n)
{
    char gent,Mas_Char[30];
    for (int i=0;i<n;i++)
    {
        cin.sync();
        cout <<"\nВведите ФИО: ";
        cin.getline(Mas_Char,30);
        people[i]->fio=Mas_Char;
        cout <<"Введите год рождения: ";
        cin >>people[i]->date;
        cout <<"Введите рост человека: ";
        cin >>people[i]->stat;
        cout <<"Введите вес человека: ";
        cin >>people[i]->weight;
        cout <<"Введите пол человека ""м"" или ""ж"": ";
        label:cin >>gent;
        if ((gent=='м')||(gent=='ж'))
            people[i]->gen=gent;
        else 
        {
            cout <<"Введите ""м"" или ""ж"": ";
            goto label;
        }
    }
}
 
void Print(Man **people,int n)
{
    fstream file;
    file.open("people.txt",ios::app);
    if (file)
    {   
        for (int i=0;i<n;i++)
        {
            file <<"\n"<<"ФИО человека      : "<<people[i]->fio<<"\n";
            file <<"Год рождения      : "<<people[i]->date<<"\n";
            file <<"Рост              : "<<people[i]->stat<<"\n";
            file <<"Вес               : "<<people[i]->weight<<"\n";
            file <<"Пол               : "<<people[i]->gen<<"\n";
        }
                
    }
    else cout <<"Файл не может быть открыт или создан!";
    file.close();
}
 
void Display(Man **people, int n)
{
    for(int i=0;i<n;i++)
        {
            cout <<"\nФИО человека      : "<<people[i]->fio<<"\n";
            cout <<"Год рождения      : "<<people[i]->date<<"\n";
            cout <<"Рост              : "<<people[i]->stat<<"\n";
            cout <<"Вес               : "<<people[i]->weight<<"\n";
            cout <<"Пол               : "<<people[i]->gen<<"\n";
        }
}
 
void Sort(Man **people, int n, int z, int priz)
{
    int k;
    Man* buff;
    switch (priz)
    {
    case (0):{
    for(int i=0;i<n-1;i++)
    {
        k=i;
        for(int j=i+1;j<n;j++)
        {
            if (people[k]->weight > people[j]->weight)
                k=j;
        }
        buff=people[i];
        people[i]=people[k];
        people[k]=buff;
    }
             break;}
    case (1):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k]->stat > people[j]->stat)
                    k=j;
            }
            buff=people[i];
            people[i]=people[k];
            people[k]=buff;
        }
             break;}
    case (2):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k]->date < people[j]->date)
                    k=j;
            }
            buff=people[i];
            people[i]=people[k];
            people[k]=buff;
        }            
             break;}
    }
    if (z==1)
    {
        Man** pep2=new Man*[n];
        for (int i=0;i<n;i++)
            pep2[i]=people[n-i-1];
        delete []people;
        people=pep2;
    }
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    int n,poss,poss1,i;
    cout <<"Введите количество человек: ";
    cin >>n;
    Man** people = new Man*[n];
    Man* tmp;
    Init(people,n);
    lab:system("cls");
    cout <<"\nВыберите:";
    cout <<"\n0---------->Вывод на экран";
    cout <<"\n1---------->Вывод в файл";
    cout <<"\n2---------->Сортировка";
    cout <<"\n3---------->Выход!";
    cout <<"\n---->";cin >>poss;
    switch (poss)
    {
    case (0):
        Display(people,n);
        system("pause");
        break;
    case (1):
        Print(people,n);
        break;
    case (2):{
        cout <<"\nВыберите метод сортировки:";
        cout <<"\n0---------->По возростанию";
        cout <<"\n1---------->По убыванию";
        cout <<"\n---->";cin >>poss;
        cout <<"\nВыберите метод сортировки:";
        cout <<"\n0---------->По Возрасту";
        cout <<"\n1---------->По Росту";
        cout <<"\n2---------->По Весу";
        cout <<"\n---->";cin >>poss1;
        Sort(people,n,poss,poss1);
        break;
             }
    case (3):
        exit(0);
        system("pause");
        break;
    }
    goto lab;
    return 0;
}
newbie666
Заблокирован
03.12.2013, 11:20     Упорядочить элементы структуры #24
Цитата Сообщение от Alex_Skripa Посмотреть сообщение
вот инициализация памяти, я же правильно понимаю?
а ты подумал, что пользователь может ввести не цифру, а букву?

А почему кодировка не выставлена?


Ойоооойоойой какай кашар, всё таки я вернусь к своему уже сказанному посту - выкини это ДЖИ КОД ))))

Если хочешь помощи по этому коду - пиши, что ты вводишь туд конкретно и на какой строчке у тебя исключение вылетает )))
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
03.12.2013, 11:25  [ТС]     Упорядочить элементы структуры #25
И если всего три элемента, то сортировка проходит на ура по всем полям) Если больше то только по полю stat

Добавлено через 58 секунд
Цитата Сообщение от newbie666 Посмотреть сообщение
а ты подумал, что пользователь может ввести не цифру, а букву?

А почему кодировка не выставлена?


Ойоооойоойой какай кашар, всё таки я вернусь к своему уже сказанному посту - выкини это ДЖИ КОД ))))

Если хочешь помощи по этому коду - пиши, что ты вводишь туд конкретно и на какой строчке у тебя исключение вылетает )))
SetConsoleOutputCP(1251);
SetConsoleCP(1251)
Разве не кодировка?

Добавлено через 41 секунду
Ок) Сейчас я выложу скрины и все такое)
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
03.12.2013, 11:42  [ТС]     Упорядочить элементы структуры #26
Цитата Сообщение от newbie666 Посмотреть сообщение
Если хочешь помощи по этому коду - пиши, что ты вводишь туд конкретно и на какой строчке у тебя исключение вылетает )))
В моём коде никаких исключений не вылетает...
А происходит вот что:
Вот я ввожу данные типа Люди
Упорядочить элементы структуры
Вот я вывожу информацию на экран:
Упорядочить элементы структуры
Вот я выбираю сортировку по возрастанию по полю Рост(stat)
Упорядочить элементы структуры
Снова вывожу на экран уже отсортированный массив
Упорядочить элементы структуры
Все нормально упорядочено, все нормально будет и по убыванию и хоть мы 100 элементов введем
А вот что происходит при сортировке по возрастанию по полю вес(weight)и возрасту(date):
Упорядочить элементы структуры
Алгоритм один и тот-же, поля weight и stat одного типа, в одной структуре из одного массива, почему так???? Я не врубаюсь!!!
newbie666
Заблокирован
03.12.2013, 12:45     Упорядочить элементы структуры #27
Цитата Сообщение от Alex_Skripa Посмотреть сообщение
А вот что происходит при сортировке по возрастанию по полю вес(weight)и возрасту(date):
у тебя во всех случаях и при любой сортировке ошибка

Добавлено через 7 минут
Слушай, у меня времени ща нет, я не буду твой код фиксить - сам тогда посмотри, я тебе просто скажу, в чём ошибка:
1. у тебя проблемы в любой сортировке. Любая сортировка проходит успешно, если её провести дважды
2. Проблема в следующем участке кода:
C++
1
2
3
4
5
6
7
8
for(int i=0;i<n-1;i++)
            {
                k=i;
                for(int j=i+1;j<n;j++)
                {
                    if (people[k].stat > people[j].stat)
                        k=j;
                }
у тебя второй цикл пробегает по всем элементам и значение K получается вообще случайным, понимаешь? И только после этого у тебя идёт перестановка элементов. Тебе надо ПРОВЕРИТЬ СОСЕДНИЕ, ПЕРЕСТАВИТ ЕСЛИ НАДО, А ПОТОМ ПРОДОЛЖАТЬ ЦИКЛЫ. Понял?

Добавлено через 53 секунды
и не забудь мне поставить положительнынй отзыв ))))))
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 478
Записей в блоге: 1
03.12.2013, 16:35     Упорядочить элементы структуры #28
Я кое-что добавил. Теперь работает. Сам заметишь?
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
//#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
struct Man
{
    string fio;
    int date;
    double stat,weight;
    char gen;
};
 
void Init(Man **people,int n)
{
    char gent,Mas_Char[30];
    for (int i=0;i<n;i++)
    {
         people[i]=new Man;
        cin.sync();
        cout <<"\nВведите ФИО: ";
        cin.getline(Mas_Char,30);
        people[i]->fio=Mas_Char;
        cout <<"Введите год рождения: ";
        cin >>people[i]->date;
        cout <<"Введите рост человека: ";
        cin >>people[i]->stat;
        cout <<"Введите вес человека: ";
        cin >>people[i]->weight;
        cout <<"Введите пол человека ""м"" или ""ж"": ";
        label:cin >>gent;
        if ((gent=='м')||(gent=='ж'))
            people[i]->gen=gent;
        else 
        {
            cout <<"Введите ""м"" или ""ж"": ";
            goto label;
        }
    }
}
 
void Print(Man **people,int n)
{
    fstream file;
    file.open("people.txt",ios::app);
    if (file)
    {   
        for (int i=0;i<n;i++)
        {
            file <<"\n"<<"ФИО человека      : "<<people[i]->fio<<"\n";
            file <<"Год рождения      : "<<people[i]->date<<"\n";
            file <<"Рост              : "<<people[i]->stat<<"\n";
            file <<"Вес               : "<<people[i]->weight<<"\n";
            file <<"Пол               : "<<people[i]->gen<<"\n";
        }
                
    }
    else cout <<"Файл не может быть открыт или создан!";
    file.close();
}
 
void Display(Man **people, int n)
{
    for(int i=0;i<n;i++)
        {
            cout <<"\nФИО человека      : "<<people[i]->fio<<"\n";
            cout <<"Год рождения      : "<<people[i]->date<<"\n";
            cout <<"Рост              : "<<people[i]->stat<<"\n";
            cout <<"Вес               : "<<people[i]->weight<<"\n";
            cout <<"Пол               : "<<people[i]->gen<<"\n";
        }
}
 
void Sort(Man **people, int n, int z, int priz)
{
    int k;
    Man* buff;
    switch (priz)
    {
    case (0):{
    for(int i=0;i<n-1;i++)
    {
        k=i;
        for(int j=i+1;j<n;j++)
        {
            if (people[k]->weight > people[j]->weight)
                k=j;
        }
        buff=people[i];
        people[i]=people[k];
        people[k]=buff;
    }
             break;}
    case (1):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k]->stat > people[j]->stat)
                    k=j;
            }
            buff=people[i];
            people[i]=people[k];
            people[k]=buff;
        }
             break;}
    case (2):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k]->date < people[j]->date)
                    k=j;
            }
            buff=people[i];
            people[i]=people[k];
            people[k]=buff;
        }            
             break;}
    }
    if (z==1)
    {
        Man** pep2=new Man*[n];
        for (int i=0;i<n;i++)
            pep2[i]=people[n-i-1];
        delete []people;
        people=pep2;
    }
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    //SetConsoleOutputCP(1251);
   // SetConsoleCP(1251);
    int n,poss,poss1,i;
    cout <<"Введите количество человек: ";
    cin >>n;
    Man** people = new Man*[n];
    Man* tmp;
    Init(people,n);
    lab:system("cls");
    cout <<"\nВыберите:";
    cout <<"\n0---------->Вывод на экран";
    cout <<"\n1---------->Вывод в файл";
    cout <<"\n2---------->Сортировка";
    cout <<"\n3---------->Выход!";
    cout <<"\n---->";cin >>poss;
    switch (poss)
    {
    case (0):
        Display(people,n);
        system("pause");
        break;
    case (1):
        Print(people,n);
        break;
    case (2):{
        cout <<"\nВыберите метод сортировки:";
        cout <<"\n0---------->По возростанию";
        cout <<"\n1---------->По убыванию";
        cout <<"\n---->";cin >>poss;
        cout <<"\nВыберите метод сортировки:";
        cout <<"\n0---------->По Возрасту";
        cout <<"\n1---------->По Росту";
        cout <<"\n2---------->По Весу";
        cout <<"\n---->";cin >>poss1;
        Sort(people,n,poss,poss1);
        break;
             }
    case (3):
        exit(0);
        system("pause");
        break;
    }
    goto lab;
    return 0;
}
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
03.12.2013, 17:12  [ТС]     Упорядочить элементы структуры #29
Цитата Сообщение от newbie666 Посмотреть сообщение
у тебя во всех случаях и при любой сортировке ошибка

Добавлено через 7 минут
Слушай, у меня времени ща нет, я не буду твой код фиксить - сам тогда посмотри, я тебе просто скажу, в чём ошибка:
1. у тебя проблемы в любой сортировке. Любая сортировка проходит успешно, если её провести дважды
2. Проблема в следующем участке кода:
C++
1
2
3
4
5
6
7
8
for(int i=0;i<n-1;i++)
            {
                k=i;
                for(int j=i+1;j<n;j++)
                {
                    if (people[k].stat > people[j].stat)
                        k=j;
                }
у тебя второй цикл пробегает по всем элементам и значение K получается вообще случайным, понимаешь? И только после этого у тебя идёт перестановка элементов. Тебе надо ПРОВЕРИТЬ СОСЕДНИЕ, ПЕРЕСТАВИТ ЕСЛИ НАДО, А ПОТОМ ПРОДОЛЖАТЬ ЦИКЛЫ. Понял?

Добавлено через 53 секунды
и не забудь мне поставить положительнынй отзыв ))))))
Пишу словами:
Начинаем с первого элемента...(внешний цикл)
Сравниваем со всеми еще не проверенными... (внутренний цикл начинается со следующего)
находим минимальный среди непроверенных... (внутренний цикл)
запоминаем текущий...(внешний цикл)
меняем текущий на этот минимальный...(внешний цикл) и его мы трогать уже не будем во внутреннем цикле т.к j=i+1
текущий записываем туда где был минимальный (внешний цикл)
и т.д. пока не проверим все элементы, что в этом алгоритме вам не понятно? это фундаментальный алгоритм и он верен... Таким образом элементы будут упорядочены по возрастанию.
проверьте по шагам над цифрами 4,3,2,1 и вы будете приятно удивлены что алгоритм верен...
Если бы дело было в алгоритме это было бы так просто)!!!
Но все равно Спасибо за попытку помочь, все таки я думаю и без этого есть чем заняться.

Добавлено через 2 минуты
Цитата Сообщение от Algoritmer Посмотреть сообщение
Я кое-что добавил. Теперь работает. Сам заметишь?
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
//#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
struct Man
{
    string fio;
    int date;
    double stat,weight;
    char gen;
};
 
void Init(Man **people,int n)
{
    char gent,Mas_Char[30];
    for (int i=0;i<n;i++)
    {
         people[i]=new Man;
        cin.sync();
        cout <<"\nВведите ФИО: ";
        cin.getline(Mas_Char,30);
        people[i]->fio=Mas_Char;
        cout <<"Введите год рождения: ";
        cin >>people[i]->date;
        cout <<"Введите рост человека: ";
        cin >>people[i]->stat;
        cout <<"Введите вес человека: ";
        cin >>people[i]->weight;
        cout <<"Введите пол человека ""м"" или ""ж"": ";
        label:cin >>gent;
        if ((gent=='м')||(gent=='ж'))
            people[i]->gen=gent;
        else 
        {
            cout <<"Введите ""м"" или ""ж"": ";
            goto label;
        }
    }
}
 
void Print(Man **people,int n)
{
    fstream file;
    file.open("people.txt",ios::app);
    if (file)
    {   
        for (int i=0;i<n;i++)
        {
            file <<"\n"<<"ФИО человека      : "<<people[i]->fio<<"\n";
            file <<"Год рождения      : "<<people[i]->date<<"\n";
            file <<"Рост              : "<<people[i]->stat<<"\n";
            file <<"Вес               : "<<people[i]->weight<<"\n";
            file <<"Пол               : "<<people[i]->gen<<"\n";
        }
                
    }
    else cout <<"Файл не может быть открыт или создан!";
    file.close();
}
 
void Display(Man **people, int n)
{
    for(int i=0;i<n;i++)
        {
            cout <<"\nФИО человека      : "<<people[i]->fio<<"\n";
            cout <<"Год рождения      : "<<people[i]->date<<"\n";
            cout <<"Рост              : "<<people[i]->stat<<"\n";
            cout <<"Вес               : "<<people[i]->weight<<"\n";
            cout <<"Пол               : "<<people[i]->gen<<"\n";
        }
}
 
void Sort(Man **people, int n, int z, int priz)
{
    int k;
    Man* buff;
    switch (priz)
    {
    case (0):{
    for(int i=0;i<n-1;i++)
    {
        k=i;
        for(int j=i+1;j<n;j++)
        {
            if (people[k]->weight > people[j]->weight)
                k=j;
        }
        buff=people[i];
        people[i]=people[k];
        people[k]=buff;
    }
             break;}
    case (1):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k]->stat > people[j]->stat)
                    k=j;
            }
            buff=people[i];
            people[i]=people[k];
            people[k]=buff;
        }
             break;}
    case (2):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k]->date < people[j]->date)
                    k=j;
            }
            buff=people[i];
            people[i]=people[k];
            people[k]=buff;
        }            
             break;}
    }
    if (z==1)
    {
        Man** pep2=new Man*[n];
        for (int i=0;i<n;i++)
            pep2[i]=people[n-i-1];
        delete []people;
        people=pep2;
    }
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    //SetConsoleOutputCP(1251);
   // SetConsoleCP(1251);
    int n,poss,poss1,i;
    cout <<"Введите количество человек: ";
    cin >>n;
    Man** people = new Man*[n];
    Man* tmp;
    Init(people,n);
    lab:system("cls");
    cout <<"\nВыберите:";
    cout <<"\n0---------->Вывод на экран";
    cout <<"\n1---------->Вывод в файл";
    cout <<"\n2---------->Сортировка";
    cout <<"\n3---------->Выход!";
    cout <<"\n---->";cin >>poss;
    switch (poss)
    {
    case (0):
        Display(people,n);
        system("pause");
        break;
    case (1):
        Print(people,n);
        break;
    case (2):{
        cout <<"\nВыберите метод сортировки:";
        cout <<"\n0---------->По возростанию";
        cout <<"\n1---------->По убыванию";
        cout <<"\n---->";cin >>poss;
        cout <<"\nВыберите метод сортировки:";
        cout <<"\n0---------->По Возрасту";
        cout <<"\n1---------->По Росту";
        cout <<"\n2---------->По Весу";
        cout <<"\n---->";cin >>poss1;
        Sort(people,n,poss,poss1);
        break;
             }
    case (3):
        exit(0);
        system("pause");
        break;
    }
    goto lab;
    return 0;
}
Конечно замечу строка 27 инициализация массива только вот я не совсем в это въезжаю, ну в смысле массив указателей на указатели) Попробую Спасибо!

Добавлено через 11 минут
После 3 го четвертого раза сортировки выдает
Необработанное исключение в "0x010e5746" в "Lab_Rab11_01.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeeff02".

Добавлено через 1 минуту
И да проблемы остались те-же сортировка проходит по полю stat и не проходит по остальным (хотя все идентично!!!)
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 478
Записей в блоге: 1
03.12.2013, 17:35     Упорядочить элементы структуры #30
Цитата Сообщение от Alex_Skripa Посмотреть сообщение
Конечно замечу строка 27 инициализация массива
Инициализация не массива, а элемента массива. Мы имеем дело не с массивом элементов, а всего лишь с массивом указателей. Оператор new создает новый объект и помещает указатель на него (а не сам объект) в ячейку нашего массива. Поэтому когда мы пишем people[i]=people[j] мы всего лишь тасуем указатели, но не сами элементы.

По поводу сортировку позже посмотрю. У меня почему-то при компиляции ругнулось на строку
C++
1
#include "stdafx.h"
вот я её и закоментировал.
И у меня не отрабатывает сравнение
C++
1
if ((gent=='м')||(gent=='ж'))
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
03.12.2013, 17:53  [ТС]     Упорядочить элементы структуры #31
Цитата Сообщение от Algoritmer Посмотреть сообщение
Инициализация не массива, а элемента массива. Мы имеем дело не с массивом элементов, а всего лишь с массивом указателей. Оператор new создает новый объект и помещает указатель на него (а не сам объект) в ячейку нашего массива. Поэтому когда мы пишем people[i]=people[j] мы всего лишь тасуем указатели, но не сами элементы.

По поводу сортировку позже посмотрю. У меня почему-то при компиляции ругнулось на строку
C++
1
#include "stdafx.h"
вот я её и закоментировал.
И у меня не отрабатывает сравнение
C++
1
if ((gent=='м')||(gent=='ж'))
Ну да я в этом разобрался,
C++
1
#include "stdafx.h"
это стандарт в VS 2010 когда создаешь консольное приложение с скомпилированным заголовком, почему не проходит сравнение
C++
1
if ((gent=='м')||(gent=='ж'))
я не знаю, у меня работает...
Это по сути не так важно переделать в более элегантный код, меня интересует по какой причине один и тот же алгоритм с одним и тем же типом данных, проходит верно и не верно, это очень интересно, ведь алгоритм верный...
Ваш код компилируется и все то-же самое, по полю stat все ок а по остальным облом (то что после нескольких раз вылетает с ошибкой это не особо важно... мой код не вылетает.)
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 478
Записей в блоге: 1
03.12.2013, 18:01     Упорядочить элементы структуры #32
Цитата Сообщение от Alex_Skripa Посмотреть сообщение
это стандарт в VS 2010
ясно, у меня VS 2008
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
06.12.2013, 20:35  [ТС]     Упорядочить элементы структуры #33
_up

Добавлено через 19 минут
Последний вариант кода:
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
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
struct Man
{
    string fio;
    int date;
    double stat,weight;
    char gen;
};
 
void Init(Man *people,int n)
{
    char gent,Mas_Char[30];
    for (int i=0;i<n;i++)
    {
        cin.sync();
        cout <<"\nВведите ФИО: ";
        cin.getline(Mas_Char,30);
        people[i].fio=Mas_Char;
        cout <<"Введите год рождения: ";
        cin >>people[i].date;
        cout <<"Введите рост человека: ";
        cin >>people[i].stat;
        cout <<"Введите вес человека: ";
        cin >>people[i].weight;
        cout <<"Введите пол человека ""м"" или ""ж"": ";
        label:cin >>gent;
        if ((gent=='м')||(gent=='ж'))
            people[i].gen=gent;
        else 
        {
            cout <<"Введите ""м"" или ""ж"": ";
            goto label;
        }
    }
}
 
void Print(Man *people,int n)
{
    fstream file;
    file.open("people.txt",ios::app);
    if (file)
    {   
        for (int i=0;i<n;i++)
        {
            file <<"\n"<<"ФИО человека      : "<<people[i].fio<<"\n";
            file <<"Год рождения      : "<<people[i].date<<"\n";
            file <<"Рост              : "<<people[i].stat<<"\n";
            file <<"Вес               : "<<people[i].weight<<"\n";
            file <<"Пол               : "<<people[i].gen<<"\n";
        }
                
    }
    else cout <<"Файл не может быть открыт или создан!";
    file.close();
}
 
void Display(Man *people, int n)
{
    for(int i=0;i<n;i++)
        {
            cout <<"\nФИО человека      : "<<people[i].fio<<"\n";
            cout <<"Год рождения      : "<<people[i].date<<"\n";
            cout <<"Рост              : "<<people[i].stat<<"\n";
            cout <<"Вес               : "<<people[i].weight<<"\n";
            cout <<"Пол               : "<<people[i].gen<<"\n";
        }
}
 
void Sort(Man *people, int n, int z, int priz)
{
    int k;
    Man buff;
    if (z==0)
    {
        switch (priz)
    {
    case (0):{
    for(int i=0;i<n-1;i++)
    {
        k=i;
        for(int j=i+1;j<n;j++)
        {
            if (people[k].weight > people[j].weight)
                k=j;
        }
        buff.fio=people[i].fio;
        buff.date=people[i].date;
        buff.stat=people[i].stat;
        buff.weight=people[i].weight;
        buff.gen=people[i].gen;
        people[i].fio=people[k].fio;
        people[i].date=people[k].date;
        people[i].stat=people[k].stat;
        people[i].weight=people[k].weight;
        people[i].gen=people[k].gen;
        people[k].fio=buff.fio;
        people[k].date=buff.date;
        people[k].stat=buff.stat;
        people[k].weight=buff.weight;
        people[k].gen=buff.gen;
    }
             break;}
    case (1):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].stat > people[j].stat)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }
             break;}
    case (2):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].date < people[j].date)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }            
             break;}
    }
    }
    if (z==1)
    {
        switch (priz)
        {
    case (0):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].weight < people[j].weight)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }
             break;}
    case (1):{
      for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].stat < people[j].stat)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }
             break;}
    case (2):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].date > people[j].date)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }            
             break;}
    }
    }
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    int n,poss,poss1,i;
    cout <<"Введите количество человек: ";
    cin >>n;
    Man* people = new Man[n];
    Man tmp;
    Init(people,n);
    lab:system("cls");
    cout <<"\nВыберите:";
    cout <<"\n0---------->Вывод на экран";
    cout <<"\n1---------->Вывод в файл";
    cout <<"\n2---------->Сортировка";
    cout <<"\n3---------->Выход!";
    cout <<"\n---->";cin >>poss;
    switch (poss)
    {
    case (0):
        Display(people,n);
        system("pause");
        break;
    case (1):
        Print(people,n);
        break;
    case (2):{
        cout <<"\nВыберите метод сортировки:";
        cout <<"\n0---------->По возростанию";
        cout <<"\n1---------->По убыванию";
        cout <<"\n---->";cin >>poss;
        cout <<"\nВыберите метод сортировки:";
        cout <<"\n0---------->По Возрасту";
        cout <<"\n1---------->По Росту";
        cout <<"\n2---------->По Весу";
        cout <<"\n---->";cin >>poss1;
        Sort(people,n,poss,poss1);
        break;
             }
    case (3):
        exit(0);
        system("pause");
        break;
    }
    goto lab;
    return 0;
}
Добавлено через 5 часов 7 минут
По просьбе EVG код программки уже с данными:
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
264
265
266
267
268
269
270
271
272
273
274
275
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
struct Man
{
    string fio;
    int date;
    double stat,weight;
    char gen;
};
 
void Init(Man *people,int n)
{
        people[0].fio="Скрыпин А Р";
        people[0].date=1987;
        people[0].stat=187;
        people[0].weight=87;
        people[0].gen='м';
        people[1].fio="Петренко В П";
        people[1].date=1967;
        people[1].stat=176;
        people[1].weight=80;
        people[1].gen='м';
        people[2].fio="Соловей Е З";
        people[2].date=1992;
        people[2].stat=183;
        people[2].weight=72;
        people[2].gen='м';
        people[3].fio="Лопатина А А";
        people[3].date=1988;
        people[3].stat=190;
        people[3].weight=65;
        people[3].gen='ж';
        people[4].fio="Советкали Б С";
        people[4].date=1991;
        people[4].stat=180;
        people[4].weight=82;
        people[4].gen='м';
        
}
 
void Display(Man *people, int n)
{
    for(int i=0;i<n;i++)
        {
            cout <<"\nФИО человека      : "<<people[i].fio<<"\n";
            cout <<"Год рождения      : "<<people[i].date<<"\n";
            cout <<"Рост              : "<<people[i].stat<<"\n";
            cout <<"Вес               : "<<people[i].weight<<"\n";
            cout <<"Пол               : "<<people[i].gen<<"\n";
        }
}
 
void Sort(Man *people, int n, int z, int priz)
{
    int k;
    Man buff;
    if (z==0)
    {
        switch (priz)
    {
    case (0):{
    for(int i=0;i<n-1;i++)
    {
        k=i;
        for(int j=i+1;j<n;j++)
        {
            if (people[k].weight > people[j].weight)
                k=j;
        }
        buff.fio=people[i].fio;
        buff.date=people[i].date;
        buff.stat=people[i].stat;
        buff.weight=people[i].weight;
        buff.gen=people[i].gen;
        people[i].fio=people[k].fio;
        people[i].date=people[k].date;
        people[i].stat=people[k].stat;
        people[i].weight=people[k].weight;
        people[i].gen=people[k].gen;
        people[k].fio=buff.fio;
        people[k].date=buff.date;
        people[k].stat=buff.stat;
        people[k].weight=buff.weight;
        people[k].gen=buff.gen;
    }
             break;}
    case (1):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].stat > people[j].stat)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }
             break;}
    case (2):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].date < people[j].date)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }            
             break;}
    }
    }
    if (z==1)
    {
        switch (priz)
        {
    case (0):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].weight < people[j].weight)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }
             break;}
    case (1):{
      for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].stat < people[j].stat)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }
             break;}
    case (2):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k].date > people[j].date)
                    k=j;
            }
            buff.fio=people[i].fio;
            buff.date=people[i].date;
            buff.stat=people[i].stat;
            buff.weight=people[i].weight;
            buff.gen=people[i].gen;
            people[i].fio=people[k].fio;
            people[i].date=people[k].date;
            people[i].stat=people[k].stat;
            people[i].weight=people[k].weight;
            people[i].gen=people[k].gen;
            people[k].fio=buff.fio;
            people[k].date=buff.date;
            people[k].stat=buff.stat;
            people[k].weight=buff.weight;
            people[k].gen=buff.gen;
        }            
             break;}
    }
    }
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    int n=5;
    Man* people = new Man[n];
    Man tmp;
    Init(people,n);
    cout <<"\nДанные до сортировки!:\n";
    Display(people,n);
    system("pause");
    cout <<"\nСортировка по возрастанию, по полю вес (weight)\n";
    Sort(people,n,0,0);
    Display(people,n);
    system("pause");
    cout <<"\nСортировка по возрастанию, по полю рост(stat)\n";
    Sort(people,n,0,1);
    Display(people,n);
    system("pause");
    cout <<"\nСортировка по возрастанию, по возрасту полю(date)\n";
    Sort(people,n,0,2);
    Display(people,n);
    system("pause");
    cout <<"\nСортировка по убыванию, по полю вес (weight)\n";
    Sort(people,n,1,0);
    Display(people,n);
    system("pause");
    cout <<"\nСортировка по убыванию, по полю рост(stat)\n";
    Sort(people,n,1,1);
    Display(people,n);
    system("pause");
    cout <<"\nСортировка по убыванию, по возрасту полю (date)\n";
    Sort(people,n,1,2);
    Display(people,n);
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2013, 22:15     Упорядочить элементы структуры
Еще ссылки по теме:

Упорядочить элементы матрицы - C++
Дана произвольная матрица n m.упорядочите элементы матрицы так, чтобы элементы каждой строки (слева направо) и каждого столбца (сверху ...

Упорядочить элементы массива - C++
В одномерном массиве из N вещественных элементов, вычислить: 1. Количество элементов массива, равных 0; 2. Сумму элементов массива,...

Структуры "Worker", упорядочить по возрастанию оклада - C++
Создайте структуру с именем Worker , которая содержала следующие поля:  ФИО работника ;  должность ;  должностной оклад ;  год...

Упорядочить элементы массива по убыванию - C++
В одномерном массиве,состоящем из n вещественных элементов,вычислить: 1)Сумму элементов массива,расположенных после максимального...

Упорядочить элементы массива по убыванию - C++
упорядочить элементы массива по убыванию.......написал программу ....зависает и выключается после ввода массива #include &lt;stdio.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
07.12.2013, 22:15  [ТС]     Упорядочить элементы структуры #34
Можно закрывать...
Yandex
Объявления
07.12.2013, 22:15     Упорядочить элементы структуры
Ответ Создать тему
Опции темы

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