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

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

Войти
Регистрация
Восстановить пароль
 
Bsod
28 / 12 / 2
Регистрация: 30.11.2011
Сообщений: 44
#1

Сортировка списка - C++

24.10.2012, 18:41. Просмотров 571. Ответов 3
Метки нет (Все метки)

помогите сделать сортировку по возрасту, а то ничего не выходит
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
#include <iostream>
#include <conio.h>
using namespace std;
struct STUDENT
{
    char FIO[50];
    int day;
    int month;
    int year;
    int group;
    STUDENT *next;
};
STUDENT *phead, *t, *r; //phead - голова списка, t - последний элемент, r - текущий элемент
int reg()
{
    if (phead)
        {
            t->next = new (STUDENT);
            t = t->next;
            cout << "Добавление нового студента:\n\tВведите ФИО студента: ";
            getchar();
            cin.getline(t->FIO, 50);
            cout << "\tВведте год рождения: ";
            cin >> t->year;
            cout << "\tВведите месяц рождения: ";
            cin >> t->month;
            cout << "\tВведите день рождения: ";
            cin >> t->day;
            cout << "\tВведите группу студента: ";
            cin >> t->group;
            t->next = NULL;
        }
    else
        {
            phead = new (STUDENT);
            t = phead;
            cout << "Добавление нового студента:";
            cout << "\n\tВведите ФИО студента: ";
            getchar();
            cin.getline(t->FIO, 50);
            cout << "\tВведте год рождения: ";
            cin >> t->year;
            cout << "\tВведите месяц рождения: ";
            cin >> t->month;
            cout << "\tВведите день рождения: ";
            cin >> t->day;
            cout << "\tВведите группу студента: ";
            cin >> t->group;
            t->next = NULL;
        }
return 0;
} 
int output()
{
    cout << "Вывод списка студентов\n\n";
    if (!phead) {cout << "Список пуст"; return 0;}
    r = phead;
    while (r)
        {
            cout << "ФИО: ";
            cout << r->FIO;
            cout << "\nДата рождения: " << r->day << '.' << r->month << '.' << r->year;
            cout << "\nГруппа: " << r->group;
            cout << "\n\n";
            r = r->next;
        }
return 0;
}
int del()
{
    int num;
    cout << "Удаление студентов по заданной группе\n";
    if (!phead) {cout << "\nСписок пуст"; return 0;}
    cout << "Введите группу: ";
    cin >> num;
    STUDENT *tmp = 0;
    r = phead;
 
    while (r)
    {
        STUDENT *next = r->next;
        if (phead->group == num) 
            {
                tmp = phead;
                phead = phead->next;
                delete tmp;
            }
        else if (r->group == num)
            {
                if (tmp) tmp->next = next;
                delete r;
            }
        else
            {
                 tmp = r;
            }
        r = next;
    }
    return 0;
}
int sort()
{
}
void main()
    {
        setlocale (LC_ALL, ".1251");
        int menu;
label:
        system ("cls");
        cout << "Студенты";
        cout << "\n\tФункции: ";
        cout << "\n\n\t 1 - Добавить нового студента";
        cout << "\n\t 2 - Вывод всех студентов на экран";
        cout << "\n\t 3 - Удалить всех студентов с заданной группой";
        cout << "\n\t 4 - Сортировать по возрасту";
        cout << "\n\t 0 - Выход";
        cout << "\n\nEnter: ";
            cin >> menu; system ("cls");
            switch(menu)
            {
                case 1: reg(); break;
                case 2: output(); break;
                case 3: del(); break;
                case 4: sort(); break;
                case 0: exit(0); break;
                default: cout << "\nОшибка ввода"; break;
            }
        cout << "\n\n";
        system ("pause");
        goto label;
    }
заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2012, 18:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка списка (C++):

"Сортировка двусвязного списка путем исключения элемента с минимальным значением и включения его в начало нового списка - C++
Здравствуйте! Возникла проблема с программой. Тема: &quot;Сортировка двусвязного списка путем исключения элемента с минимальным значением и...

Сортировка списка - C++
Народ нужна помощь :) Элементы списка представлены следующим образом: class Node { public: char *name; Node *next; ...

Сортировка списка - C++
Люди помогите плиз я уже не могу!! надо сортировать список!!! Останьные недоработки тоже можете указать. Вот код Жду ответов) ...

Сортировка списка - C++
Всем привет) Нужно реализовать сортировку списка, линейного однонаправленного. Написал, но что-то как-то не правильно... void...

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

Сортировка списка - C++
Здравствуйте, не совсем понимаю как должна быть реализована сортировка вставками в деке. Что имеется на данный момент: class List...

3
Bsod
28 / 12 / 2
Регистрация: 30.11.2011
Сообщений: 44
28.10.2012, 15:01  [ТС] #2
уже сделал сам
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
02.11.2012, 13:09 #3
Bsod, сделали - поделитесь результатами, они могут оказаться полезны другим пользователям форума.
0
Bsod
28 / 12 / 2
Регистрация: 30.11.2011
Сообщений: 44
02.11.2012, 21:05  [ТС] #4
конечно, возможно это индус-код, но я только учусь... итак, надо отсортировать список по возрасту (год, месяц, день), я создал отдельно функцию для сортировки года, месяца и дня. Делал сортировку пузырьком

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
void year_sort()
    {
    STUDENT *a, *b, *tmp; //а - это tmp->next, b - это tmp->next->next
    bool f;
    do
    {
        f = false;
        if (phead->next && phead->year < phead->next->year)
            {
                a = phead->next;
                phead->next = phead->next->next;
                a->next = phead;
                phead = a;
                f = true;
            } //перестановка первых двух элементов
        tmp = phead;
        while(tmp->next && tmp->next->next)
        {
            a = tmp->next;
            b = tmp->next->next;
            if (a->year < b->year)
            {
                tmp->next=b;
                a->next = b->next;
                b->next = a;
                f = true;
            }
            tmp = tmp->next;
        } 
    } while(f); //перестановка всех остальных элементов
    }
void month_sort() //с сортировкой по месяцам и дням аналогично
    {
    STUDENT *a, *b, *tmp;
    bool f;
    do
    {
        f = false;
        if (phead->next && phead->month < phead->next->month && phead->year == phead->next->year)
            {
                a = phead->next;
                phead->next = phead->next->next;
                a->next = phead;
                phead = a;
                f = true;
            }
        tmp = phead;
        while(tmp->next && tmp->next->next)
        {
            a = tmp->next;
            b = tmp->next->next;
            if (a->month < b->month && a->year == b->year)
            {
                tmp->next=b;
                a->next = b->next;
                b->next = a;
                f = true;
            }
            tmp = tmp->next;
        }
    } while(f);
    }
void day_sort()
    {
    STUDENT *a, *b, *tmp;
    bool f;
    do
    {
        f = false;
        if (phead->next && phead->day < phead->next->day && phead->year == phead->next->year && phead->month == phead->next->month)
            {
                a = phead->next;
                phead->next = phead->next->next;
                a->next = phead;
                phead = a;
                f = true;
            }
        tmp = phead;
        while(tmp->next && tmp->next->next)
        {
            a = tmp->next;
            b = tmp->next->next;
            if (a->day < b->day  && a->year == b->year && a->month == b->month)
            {
                tmp->next=b;
                a->next = b->next;
                b->next = a;
                f = true;
            }
            tmp = tmp->next;
        }
    } while(f);
    }
//сортировка по возрасту
int sort()
{
    if (!phead) {cout << "Список пуст\n"; return 0;}
    year_sort();
    month_sort();
    day_sort();
    t = phead;
    while (t) t = t->next;
cout << "Список отсортирован\n";
return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2012, 21:05
Привет! Вот еще темы с ответами:

Сортировка списка - C++
Дан список сел и расстояния до них от города. Нужно вывести села в порядке удаленности от города. Городов до 10^8. Расстояния - целые...

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

Сортировка списка - C++
Приветствую всех! Есть небольшая проблема: не могу понять, как создать сортировку в алфавитном порядке. Вот код: void SortList() { ...

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


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
02.11.2012, 21:05
Ответ Создать тему
Опции темы

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