Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
BattleManLS
0 / 0 / 1
Регистрация: 25.11.2013
Сообщений: 31
#1

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

27.03.2014, 23:53. Просмотров 2294. Ответов 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
#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();
}
0
Миниатюры
Сортировка списка студентов по дате рождения (файл)  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 23:53
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сортировка списка студентов по дате рождения (файл) (C++):

Сортировка студентов по дате рождения
Всем привет. Нужно сортировать студентов по дате рождения. Вот мой код. Че то...

Сортировка списка студентов в порядке возрастания даты рождения, применяя динамические списки
1) В каждой строке текстового файла Date.in записаны имена с заглавной буквы и...

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

Сортировка по дате рождения (структура note)
Добрый вечер! На моих примерах программа сработала, но есть подозрение, что я...

Сортировка по дате рождения данных в классе
В классе хочу отсортировать людей по дням, месяцам и годам рождения сразу, но...

Сортировка списка студентов по их оценкам
Задача звучит так: &quot;Сформировать список студентов, в котором студенты...

4
BattleManLS
0 / 0 / 1
Регистрация: 25.11.2013
Сообщений: 31
29.03.2014, 02:45  [ТС] #2
Посоветуйте пожалуйста алгоритм вычисления.
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2014, 03:19 #3
Цитата Сообщение от BattleManLS Посмотреть сообщение
Посоветуйте пожалуйста алгоритм вычисления.
if года не равны, сортируете по году, else if месяцы не равны, сортируете по месяцу, else, сортируете по дню.
1
BattleManLS
0 / 0 / 1
Регистрация: 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];
        }
 
    }
}
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2014, 21:06 #5
Лучший ответ Сообщение было отмечено BattleManLS как решение

Решение

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];
        }
    }
}
1
29.03.2014, 21:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2014, 21:06
Привет! Вот еще темы с решениями:

По дате рождения и сегодняшней дате посчитать количество прожитых часов (используя классы)
С помощью классов,создать программу, которая считает сколько часов вы прожили....

Сортировка списка студентов по среднему баллу
Дан список студентов. Необходимо отсортировать студенток по среднему баллу и...

Сортировка списка студентов по увеличению количества пересдач
Доброго времени суток! Помогите, пожалуйста, создать сортировку массива. Я...

Сортировка списка студентов группы по алфавиту используя пузырьковую сортировку
Написать программу, сортирующую список студентов группы по алфавиту и...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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