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

Сортировка списка студентов по дате рождения (файл) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
BattleManLS
0 / 0 / 0
Регистрация: 25.11.2013
Сообщений: 31
27.03.2014, 23:53     Сортировка списка студентов по дате рождения (файл) #1
Очень нужна помощь умельцев. Помогите пожалуйста отсортировать по дате рождения. На этом примере идет сортировка по году, а мне нужно по дате рождения.
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
#include <math.h>
#include <string.h>
#include <tchar.h>
#include <conio.h>
#include <locale>
#include <stdio.h>
#include <iostream>
 
using namespace std;
 
struct student_list
    {
    char first_name[15];
    char second_name[15];
    char two_name[15];
        struct
        {
         unsigned int day,month,year;
        } brithday;
    };
 
int main()
{
    FILE *input, *output;
    int i,n=5;
    char s[255];
    struct student_list bd [10];
    student_list sort[10];
    input=fopen("test.txt","r");
    i=0;
    while(i<n)
    {
        fscanf(input,"%s",&bd[i].first_name);
        fscanf(input,"%s",&bd[i].second_name);
        fscanf(input,"%s",&bd[i].two_name);
        fscanf(input,"%d",&bd[i].brithday.day);
        fscanf(input,"%d",&bd[i].brithday.month);
        fscanf(input,"%d",&bd[i].brithday.year);
        i++;
    }
    setlocale(LC_ALL,"Russian");
    cout<<"\tСписок группы:"<<endl;
    cout<<"--------------------------------------------------------------------------------"<<endl;
    setlocale(LC_ALL,"Russian");
    for(i=0;i<n;i++)
        {
        cout<<"№ "<<i+1<<"| Ф.И.О. студента: ";setlocale(LC_ALL,"Russian");
        cout<<bd[i].second_name<<" "<<bd[i].first_name<<" "<<bd[i].two_name;setlocale(LC_ALL,"Russian");
        cout<<"|Дата рождения: "<<bd[i].brithday.day<<"/"<<bd[i].brithday.month<<"/"<<bd[i].brithday.year<<"|"<<endl;
        }
    cout<<"------------------------------------------------------------------------------";
 
 
for (i=0;i<n-1;i++)
{
    for (int g=i+1;g<n;g++)
    {
        if(bd[i].brithday.year>bd[g].brithday.year)
        {
        sort[1]=bd[i];
        bd[i]=bd[g];
        bd[g]=sort[1];
        }
    }
}
 
 
 
 
cout<<"\tСписок группы упорядоченный по возрастанию году рождения :"<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
    setlocale(LC_ALL,"Russian");
    for(i=0;i<n;i++)
    {
        cout<<"№ "<<i+1<<"| Ф.И.О. студента: ";
        setlocale(LC_ALL,"Russian");
        cout<<bd[i].second_name<<bd[i].first_name<<bd[i].two_name;
        setlocale(LC_ALL,"Russian");
        cout<<"|Дата рождения: "<<bd[i].brithday.day<<"/"<<bd[i].brithday.month<<"/"<<bd[i].brithday.year<<"|"<<endl;
    }
cout<<"------------------------------------------------------------------------------";
 _getch();
}
Миниатюры
Сортировка списка студентов по дате рождения (файл)  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 23:53     Сортировка списка студентов по дате рождения (файл)
Посмотрите здесь:

Сортировка по дате рождения данных в классе C++
C++ Упорядочить список студентов по году рождения и распечатать его
C++ Нужно было написать квадрат Пифагора по дате рождения, как исправить?
C++ Распечатать список студентов дни рождения которых приходятся на лето
Вывести в новый файл список студентов, удалив из него студентов окончивших школу в текущем году. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BattleManLS
0 / 0 / 0
Регистрация: 25.11.2013
Сообщений: 31
29.03.2014, 02:45  [ТС]     Сортировка списка студентов по дате рождения (файл) #2
Посоветуйте пожалуйста алгоритм вычисления.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2014, 03:19     Сортировка списка студентов по дате рождения (файл) #3
Цитата Сообщение от BattleManLS Посмотреть сообщение
Посоветуйте пожалуйста алгоритм вычисления.
if года не равны, сортируете по году, else if месяцы не равны, сортируете по месяцу, else, сортируете по дню.
BattleManLS
0 / 0 / 0
Регистрация: 25.11.2013
Сообщений: 31
29.03.2014, 16:07  [ТС]     Сортировка списка студентов по дате рождения (файл) #4
alsav22, Я может не много не понял, но так не работает.
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
for (i=0;i<n-1;i++)
{
    for (int g=i+1;g<n;g++)
    {
        if(bd[i].brithday.year>bd[g].brithday.year)
        {
        sort[1]=bd[i];
        bd[i]=bd[g];
        bd[g]=sort[1];
        }
       else if(bd[i].brithday.month>bd[g].brithday.month)
        {
        sort[1]=bd[i];
        bd[i]=bd[g];
        bd[g]=sort[1];
        }
       else if (bd[i].brithday.day>bd[g].brithday.day)
       {
        sort[1]=bd[i];
        bd[i]=bd[g];
        bd[g]=sort[1];
        }
 
    }
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2014, 21:06     Сортировка списка студентов по дате рождения (файл) #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
for (i=0;i<n-1;i++)
{
    for (int g=i+1;g<n;g++)
    {
        if(bd[i].brithday.year>bd[g].brithday.year)
        {
            sort[1]=bd[i];
            bd[i]=bd[g];
            bd[g]=sort[1];
            continue;
        }
        if(bd[i].brithday.year==bd[g].brithday.year && bd[i].brithday.month>bd[g].brithday.month)
        {
            sort[1]=bd[i];
            bd[i]=bd[g];
            bd[g]=sort[1];
            continue;
        }
        if (bd[i].brithday.year==bd[g].brithday.year && bd[i].brithday.month==bd[g].brithday.month && bd[i].brithday.day>bd[g].brithday.day)
        {
            sort[1]=bd[i];
            bd[i]=bd[g];
            bd[g]=sort[1];
        }
    }
}
Или так:
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
for (i=0;i<n-1;i++)
{
    for (int g=i+1;g<n;g++)
    {
        if (bd[i].brithday.year != bd[g].brithday.year)
        {
            if(bd[i].brithday.year > bd[g].brithday.year)
            {
                sort[1]=bd[i];
                bd[i]=bd[g];
                bd[g]=sort[1];
                continue;
            }
        }
        else if (bd[i].brithday.month != bd[g].brithday.month)
        {
            if (bd[i].brithday.month > bd[g].brithday.month)
            {
                sort[1]=bd[i];
                bd[i]=bd[g];
                bd[g]=sort[1];
                continue;
            }
        }
        else if (bd[i].brithday.day > bd[g].brithday.day)
        {
            sort[1]=bd[i];
            bd[i]=bd[g];
            bd[g]=sort[1];
        }
    }
}
Yandex
Объявления
29.03.2014, 21:06     Сортировка списка студентов по дате рождения (файл)
Ответ Создать тему
Опции темы

Текущее время: 14:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru