Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 07.12.2015
Сообщений: 9

Нужно сделать сортировку по дате рождения, по убыванию

07.12.2015, 14:18. Показов 3310. Ответов 11

Author24 — интернет-сервис помощи студентам
Надо отсортировать по дате рождения
Всю голову сломал то тут ошибка то там


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
#include "stdafx.h" 
#include <iostream> 
using namespace std;
#include <clocale> 
#include <conio.h> 
#include <string> //Модуль для строк
 
struct note     //Создаем структуру!
{
    string fam; //здесь будет храниться фамилия (нахрена звездочки?)
    string name; //имя
    double phone;//телефон  
    int day; //den'
    int month; // Месяц 
    int year; //год
};
 
void vvod_dan(note *a, int k=7) //ИМХО, лучше принимать длину массива - ну ок чё
{
    for (int i = 0; i < k; ++i)
    {
        cout << "Пришёл чувак под номером: " << i << endl;
        cout << "Напишите фамилию ";
        cin >> a[i].fam;
        cout << "Напишите имя ";
        cin >> a[i].name;
        cout << "Напишите телефон ";
        cin >> a[i].phone;
        cout << "Напишите день рождения ";
        cin >> a[i].day;
        cout << "Напишите месяц рождения ";
        cin >> a[i].month;
        cout << "Напишите год рождения ";
        cin >> a[i].year;
    }
    
    
 
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    note *BD;
    const int kol = 7;
 
    BD = new note[kol];
 
    vvod_dan(BD, kol);
 
    for (int i = 0; i < kol; i++)
        cout << "человек под номером-" << i << ": фамилия " << BD[i].fam << " имя " << BD[i].name << "Его телефон: " << BD[i].phone << "Дата рождения" << BD[i].day << "." << BD[i].month << "." << BD[i].year << endl;
 
    delete[]BD;
 
    _getch();
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.12.2015, 14:18
Ответы с готовыми решениями:

Как сделать сортировку по дате в массивве объединений
Оформлены в виде массива объединений. Написать программу, которая вводит данные в память машины в диалоге, выводит данные в виде Вывод...

Нужно было написать квадрат Пифагора по дате рождения, как исправить?
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;math.h&quot; using namespace std; int main() { int...

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

11
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.12.2015, 14:21
Где сортировка-то? Хоть какая-то.
0
0 / 0 / 0
Регистрация: 07.12.2015
Сообщений: 9
07.12.2015, 14:31  [ТС]
Я пробовал вот это засунуть
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    for (int i = 0; i < 9; i++)
    {
        for (int j = 0; j < 9; j++)
        {
            if ((a.year[j]) >(a.year[j + 1]))
            {
                int tmp;                                                    
                tmp = a.year[j];
                a[j] = a.year[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
}
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
07.12.2015, 14:38
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (int i = 0; i < 9-1; i++)
    {
        for (int j = 0; j < 9-i-1; j++)
        {
            if ((a.year[j]) >(a.year[j + 1]))
            {
                int tmp;                                                    
                tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
}
1
0 / 0 / 0
Регистрация: 07.12.2015
Сообщений: 9
07.12.2015, 14:57  [ТС]
Цитата Сообщение от Dimension Посмотреть сообщение
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (int i = 0; i < 9-1; i++)
    {
        for (int j = 0; j < 9-i-1; j++)
        {
            if ((a.year[j]) >(a.year[j + 1]))
            {
                int tmp;                                                    
                tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
}
Он выдает ошибку на а в строке
if ((a.year[j]) >(a.year[j + 1])) -выражение должно иметь тип класса
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.12.2015, 22:33
Лучший ответ Сообщение было отмечено Sonnik73 как решение

Решение

C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
for (int i = 0; i < 9-1; i++)
    {
        for (int j = 0; j < 9-i-1; j++)
        {
            if (a[j].year > a[j + 1].year || (a[j].year == a[j + 1].year && (a[j].month > a[j + 1].month || (a[j].month == a[j + 1].month && a[j].day > a[j + 1].day))))
            {
                std::swap(a[j], a[j + 1]);
            }
        }
    }
}
1
0 / 0 / 0
Регистрация: 07.12.2015
Сообщений: 9
08.12.2015, 00:40  [ТС]
Попробуйте скомпилировать, он без ошибки просто закрывается
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
// Стрeктуры.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h" 
#include <iostream> 
using namespace std;
#include <clocale> 
#include <conio.h> 
#include <string> //Модуль для строк
 
struct note     //Создаем структуру!
{
    string fam; //здесь будет храниться фамилия (нахрена звездочки?)
    string name; //имя
    double phone;//телефон  
    int day; //den'
    int month; // Месяц 
    int year; //год
};
 
void vvod_dan(note *a, int k = 8) //ИМХО, лучше принимать длину массива - ну ок чё
{
    for (int i = 0; i < k; ++i)
    {
        cout << "Пришел человек под номером: " << i << endl;
        cout << "Напишите фамилию ";
        cin >> a[i].fam;
        cout << "Напишите имя ";
        cin >> a[i].name;
        cout << "Напишите телефон ";
        cin >> a[i].phone;
        cout << "Напишите день рождения ";
        cin >> a[i].day;
        cout << "Напишите месяц рождения ";
        cin >> a[i].month;
        cout << "Напишите год рождения ";
        cin >> a[i].year;
    }
 
    for (int i = 0; i < 9 - 1; i++)
    {
        for (int j = 0; j < 9 - i - 1; j++)
        {
            if (a[j].year > a[j + 1].year || (a[j].year == a[j + 1].year && (a[j].month > a[j + 1].month || (a[j].month == a[j + 1].month && a[j].day > a[j + 1].day))))
            {
                std::swap(a[j], a[j + 1]);
            }
        }
    }
}
 
 
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    note *BD;
    const int kol = 7;
 
    BD = new note[kol];
 
    vvod_dan(BD, kol);
 
    for (int i = 0; i < kol; i++)
        cout << "человек под номером-" << i << " : фамилия " << BD[i].fam << " имя " << BD[i].name << " Его телефон: " << BD[i].phone << " Дата рождения " << BD[i].day << "." << BD[i].month << "." << BD[i].year << endl;
 
    delete[]BD;
 
    _getch();
    return 0;
}
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
08.12.2015, 01:27
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
#include <algorithm> 
#include <iostream> 
#include <iterator> 
#include <string>
#include <tuple>
#include <vector>
/////////////////////////////////////////////////////////////////////////////// 
typedef std::string     T_str;
/////////////////////////////////////////////////////////////////////////////// 
struct  T_note 
{
    //-------------------------------------------------------------------------
    T_note
        (
            int     year,
            int     month,
            int     day    
        )
        :
        year_   ( year  ),
        month_  ( month ),
        day_    ( day   )
    {}
    //-------------------------------------------------------------------------
    int     year_; 
    int     month_;
    int     day_;     
    //-------------------------------------------------------------------------
    bool    operator<   ( T_note    const   &   t )
    {
        return      std::make_tuple(    year_,      month_,     day_    )
                <   std::make_tuple(    t.year_,    t.month_,   t.day_  );
    }
    //-------------------------------------------------------------------------
    friend  std::ostream    &   operator<<
        (
            std::ostream            &   ostr,
            T_note          const   &   note
        )
    {
        ostr    <<  note.year_      <<  '\t'
                <<  note.month_     <<  '\t'
                <<  note.day_       <<  '\t';
 
        return  ostr;
    }
    //-------------------------------------------------------------------------
};
///////////////////////////////////////////////////////////////////////////////  
typedef std::vector     < T_note    >   T_notes;
///////////////////////////////////////////////////////////////////////////////  
template< class  T_cont >
void    print( T_cont   const   &   cont )
{
    std::copy
        (
            cont.begin                                      (),
            cont.end                                        (),
            std::ostream_iterator< T_cont::value_type >     ( std::cout, "\n" )
        );
}
///////////////////////////////////////////////////////////////////////////////  
int     main()
{
    std::locale::global(std::locale(""));
 
    T_notes     notes   =   {
                                T_note  (   2000,   1,  10  ),
                                T_note  (   2000,   1,  20  ),
 
                                T_note  (   2000,   2,  10  ),
                                T_note  (   2000,   2,  20  ),
 
                                T_note  (   2001,   1,  10  ),
                                T_note  (   2001,   1,  20  ),
 
                                T_note  (   2001,   2,  10  ),
                                T_note  (   2001,   2,  20  )
                            };
 
    std::random_shuffle
        (
            notes.begin     (),
            notes.end       ()
        );
 
    std::cout   <<  "Случайнo:"
                <<  std::endl;
 
    print( notes );
 
    std::sort
        (
            notes.begin     (),
            notes.end       ()
        );
 
    std::cout   <<  std::endl
                <<  "После сортировки:"
                <<  std::endl;
 
    print( notes );
    system("pause");
}
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
08.12.2015, 01:37
Sonnik73, с размером то определитесь ,создаете 7 ,передаете 8 ,в сортировке вообще 9
0
0 / 0 / 0
Регистрация: 07.12.2015
Сообщений: 9
08.12.2015, 01:38  [ТС]
Мне нужно что бы 8 человек было
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
08.12.2015, 01:48
тогда пишите везде 8
1
0 / 0 / 0
Регистрация: 07.12.2015
Сообщений: 9
08.12.2015, 01:57  [ТС]
Исправил, работает сейчас затестирую по все параметрам)

Добавлено через 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
// Стрeктуры.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h" 
#include <iostream> 
using namespace std;
#include <clocale> 
#include <conio.h> 
#include <string> //Модуль для строк
 
struct note     //Создаем структуру!
{
    string fam; //здесь будет храниться фамилия (нахрена звездочки?)
    string name; //имя
    double phone;//телефон  
    int day; //den'
    int month; // Месяц 
    int year; //год
};
 
void vvod_dan(note *a, int k = 8) //ИМХО, лучше принимать длину массива - ну ок чё
{
    for (int i = 0; i < k; ++i)
    {
        cout << "Пришел человек под номером: " << i << endl;
        cout << "Напишите фамилию ";
        cin >> a[i].fam;
        cout << "Напишите имя ";
        cin >> a[i].name;
        cout << "Напишите телефон ";
        cin >> a[i].phone;
        cout << "Напишите день рождения ";
        cin >> a[i].day;
        cout << "Напишите месяц рождения ";
        cin >> a[i].month;
        cout << "Напишите год рождения ";
        cin >> a[i].year;
    }
 
    for (int i = 0; i < 8 - 1; i++)
    {
        for (int j = 0; j < 8 - i - 1; j++)
        {
            if (a[j].year > a[j + 1].year || (a[j].year == a[j + 1].year && (a[j].month > a[j + 1].month || (a[j].month == a[j + 1].month && a[j].day > a[j + 1].day))))
            {
                std::swap(a[j], a[j + 1]);
            }
        }
    }
}
 
 
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    note *BD;
    const int kol = 8;
 
    BD = new note[kol];
 
    vvod_dan(BD, kol);
 
    for (int i = 0; i < kol; i++)
        cout << "человек под номером-" << i << " : фамилия " << BD[i].fam << " имя " << BD[i].name << " Его телефон: " << BD[i].phone << " Дата рождения " << BD[i].day << "." << BD[i].month << "." << BD[i].year << endl;
 
    delete[]BD;
 
    _getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.12.2015, 01:57
Помогаю со студенческими работами здесь

как сделать сортировку по дате?
Простой алгоритм от меньшей даты к большей... и воторой вопрос как посчитать количество дней с этой даты по сегодняшний??? ЗЫ:...

Сделать сортировку пациентов по дате
Добрый день ,помогите сделать сортировку пациентов по дате с 2017 ,он выводит и старые записи начиная с 2015 года.Код прилагаю .Работать с...

Как сделать сортировку по дате
Я не сильна в знании HTML языка, помогите пожалуйста... У меня идет сортировка новостей по алфавиту. Как сделать чтобы она шла по дате....

Как сделать сортировку по дате
В базе хранятся даты(xx/xx/xxxx).Но есть и пустые поля. Какой нужен запрос , чтобы эти даты выводились на страницу начиная с самой...

Сделать сортировку по дате издания
всем приятного впемени суток! есть программка которая каряво работает( записывает данные непонятно.. #include &lt;stdio.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
Реализация конвейеров машинного обучения с Python и Scikit-learn
AI_Generated 23.04.2025
Мир данных вокруг нас растёт с каждым днём, и умение эффективно обрабатывать информацию стало необходимым навыком. Специалисты по машинному обучению ежедневно сталкиваются с задачами предобработки. . .
Контроллеры Kubernetes Ingress: Сравнительный анализ
Mr. Docker 23.04.2025
В Kubernetes управление входящим трафиком представляет собой одну из ключевых задач при построении масштабируемых и отказоустойчивых приложений. Ingress — это API-объект, который служит вратами. . .
Оптимизация кода Python с Cython и Numba
py-thonny 23.04.2025
Python прочно обосновался в топе языков программирования благодаря своей простоте и гибкости. Разработчики любят его за читабельность кода и богатую экосистему библиотек. Но у этой медали есть и. . .
Микросервис на Python с FastAPI и Docker
ArchitectMsa 23.04.2025
В эпоху облачных вычислений и растущей сложности программных продуктов классическая монолитная архитектура всё чаще уступает место новым подходам. Микросервисная архитектура становится фаворитом. . .
Создаем веб-приложение на Vue.js и Laravel
Reangularity 23.04.2025
Выбор правильного технологического стека определяет успех веб-проекта. Laravel и Vue. js формируют отличную комбинацию для создания современных приложений. Laravel — это PHP-фреймворк с элегантным. . .
Максимальная производительность C#: Span<T> и Memory<T>
stackOverflow 22.04.2025
Мир высоконагруженных приложений безжалостен к неэффективному коду. Каждая миллисекунда на счету, каждый выделенный байт памяти может стать причиной падения производительности. Разработчики на C#. . .
JWT аутентификация в Java
Javaican 21.04.2025
JWT (JSON Web Token) представляет собой открытый стандарт (RFC 7519), который определяет компактный и самодостаточный способ передачи информации между сторонами в виде JSON-объекта. Эта информация. . .
Спринты Agile: Планирование, выполнение, ревью и ретроспектива
EggHead 21.04.2025
Спринты — сердцевина Agile-методологии, позволяющая командам создавать работающий продукт итерационно, с постоянной проверкой гипотез и адаптацией к изменениям. В основе концепции спринтов лежит. . .
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров
Programma_Boinc 21.04.2025
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров. 3 марта 2025 года, в результате обобщенного поиска простых чисел Ферма в PrimeGrid был найден. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер