Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
ruskub
0 / 0 / 1
Регистрация: 20.03.2016
Сообщений: 63
1

Найти самого младшего студента по полной дате рождения

20.03.2016, 22:04. Просмотров 1253. Ответов 1
Метки нет (Все метки)

Дан массив, содержащий сведения о студентах группы: фамилия, имя, от-
чество, дата рождения (день, месяц, год). Найти самого младшего студента
по полной дате рождения.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2016, 22:04
Ответы с готовыми решениями:

Массив структур: найти самого младшего и самого старшего школьника
Кароч , я хз как работать со структурами, помогите плиз, желательно со объяснением. Заранее...

Файлы: отсортировать и найти самого младшего и самого страшего с правами и без прав
Прошу помочь!!!:wall: В этой задачке мне необходимо отсортировать и найти самого младшего и самого...

Найти самого высокого и самого тяжелого студента в группах
Здравствуйте, Помогите, пожалуйста, с задачкой. Нужно решить через 3мерный массив. На первом...

Число. Вывести только цифры самого младшего и самого старшего разряда
Дано n-значное целое число введеное с клавиатуры. Вывести только цифры самого младшего и самого...

Определить на сколько лет возраст самого старого человека превышает возраст самого младшего
В массиве хранится информация о годе рождения каждого из 30 человек, определить на сколько лет...

1
meJevin
158 / 150 / 92
Регистрация: 18.11.2015
Сообщений: 677
Завершенные тесты: 1
20.03.2016, 22:52 2
Лучший ответ Сообщение было отмечено ruskub как решение

Решение

Смотри, вот так можно, если у тебя дата рождения в формате xxxx-й год:
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
#include <iostream>
#include <windows.h>
#include <conio.h>
 
struct students {
    int data_rojdeniya;
};
 
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    const int MAS_SIZE = 10;
    students mas[MAS_SIZE];
 
    for (int i = 0, k = 1997; i < MAS_SIZE; i++)
        mas[i].data_rojdeniya = k++;
 
    mas[4].data_rojdeniya = 2010; // чтобы пятый был младшим (т.е. год должен быть больше)
 
    int minAge = mas[0].data_rojdeniya, minIndex = 0;
    for (int i = 0; i < MAS_SIZE; i++) {
        if (mas[i].data_rojdeniya > minAge) {
            minAge = mas[i].data_rojdeniya;
            minIndex = i;
        }
    }
 
    std::cout << minIndex + 1 << "-й по счету студент в массиве структур самый младший.";
 
    _getch();
}
Добавлено через 6 минут
Если у тебя год, месяц, день - делаешь тоже самое(год просто проверяешь). Но смотри, если одинаковый год - то там надо будет проверять месяц, если и месяц одинаковый, то день! Поэтому надо сделать условие, которое это предупредит, и в случае его выполнения - проверяются месяцы, потом и дни, если до этого дойдет.
Так что, в цикле пиши: if(mas[i].data_rojdeniya_god == minAge_god), там, если и вправду год одинаковый, проверишь месяцы и т.д. Для этого создашь отдельные переменные, конечно.

Добавлено через 14 минут
В итоге, так можно:
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
#include <iostream>
#include <windows.h>
#include <conio.h>
 
struct students {
    int year;
    int month;
    int day;
};
 
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    const int MAS_SIZE = 3;
    students mas[MAS_SIZE];
 
    mas[0].year = 2001; mas[0].month = 7; mas[0].day = 21;
    mas[1].year = 2000; mas[1].month = 3; mas[1].day = 11;
    mas[2].year = 2001; mas[2].month = 7; mas[2].day = 22;
 
 
    int minYear = mas[0].year, minMonth = mas[0].month, minDay = mas[0].day;
    int minIndexYear = 0, minIndexMonth = 0, minIndexDay = 0;
    for (int i = 0; i < MAS_SIZE; i++) {
        if (minYear < mas[i].year) {
            minYear = mas[i].year;
            minIndexYear = i;
            continue;
        }
        if (minYear == mas[i].year) {
            if (minMonth < mas[i].month) {
                minMonth = mas[i].month;
                minIndexMonth = i, minIndexYear = i;
                continue;
            }
            if (minMonth == mas[i].month) {
                if (minDay < mas[i].day) {
                    minDay = mas[i].day;
                    minIndexDay = i, minIndexMonth = i, minIndexYear = i;
                    continue;
                }
            }
        }
    }
 
    int minIndex = minIndexYear;
 
    std::cout << minIndex + 1 << "-й по счету студент самый молодой!\n";
 
    _getch();
}
Тут все подробно, без всяких сторонних функций.
1
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2016, 22:52

Найти и вывести на экран самого молодого студента
Дан массив записей, содержащий сведения о студентах группы: фамилия и инициалы студента, Дата...

Найти самого молодого родившегося осенью студента
помогите исправить код данный код: найти самого молодого родившегося осенью исправить: найти...

Найти и вывести на экран самого молодого студента
Дан массив записей, содержащй сведения о студентах группы: фамилия и нициалы студента, дата...


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

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

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