Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Michail97
93 / 40 / 23
Регистрация: 18.09.2016
Сообщений: 372
1

Структура Student

22.03.2017, 22:38. Просмотров 291. Ответов 5
Метки нет (Все метки)

Здравствуйте, не совсем понимаю задачу. Что это за двойная сортировка. Просто объясните, код не нужен. Сам напишется, как поймётся задача.
Вывести список студентов на экран, упорядочив по курсу, а внутри каждого курса в алфавитном порядке ФИО. (40 баллов).
СТУДЕНТ:
- фамилия, имя, отчество (строки по 15 символов);
- курс (целое число от 1 до 5);
- средний балл (вещественное число от 1 до 10).

Добавлено через 11 минут
Я не понимаю, что значит «внутри каждого курса»
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2017, 22:38
Ответы с готовыми решениями:

Структура Student: вывести на экран информацию о студентах, средний балл которых превышает введенное число
STUDENT (наименование учебного заведения, фамилия и инициалы студента,номер группы,набор из пяти...

Создать класс Student
Создать Класс Student: Поля (Фамилия, Курс, Пол) и описать конструктор копирования.

Описать структуру STUDENT
Описать структуру с именем student, содержащую следующие поля: — фамилия и инициалы — номер...

Описать структуру Student
Помогите написать программу В задании сказано "Ввести структуру СТУДЕНТ с полями ФИО, ГОД...

Опишите структуру STUDENT
Ребята, проболела лекции по массивам и функциям на C, помогите составить программы по 2-м...

5
tujh48
0 / 0 / 1
Регистрация: 24.10.2016
Сообщений: 43
22.03.2017, 22:53 2
Курс 111
Ананас П.К.
Баклажан С.П.
Серов Д.Т
Курс 112
Великанов О.В.
Увалов В.Ф.
Курс 113
Аббросимов Е.Р
Катукова К.У
Филимонов В.К.

И тд. В таком духе
Т.е. курсы должны упорядочны быть по номеру, а внутри каждой группы студенты упорядочны тоже по алфавиту


Зы:
вчитался в задание
Ну смотри
Ананас П.К. Курс 111
Баклажан С.П. Курс 111
Серов Д.Т Курс 111

Великанов О.В.112
Увалов В.Ф. 112

Аббросимов Е.Р Курс 113
Катукова К.У Курс 113
Филимонов В.К. Курс 113
0
Max Dark
шКодер самоучка
2001 / 1767 / 871
Регистрация: 09.10.2013
Сообщений: 3,900
Записей в блоге: 6
Завершенные тесты: 2
22.03.2017, 23:11 3
Цитата Сообщение от Michail97 Посмотреть сообщение
Я не понимаю, что значит «внутри каждого курса»
Думаю, что студентов одного курса нужно отсортировать по ФИО
Как то так:
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef char str15[16]; // строка 15 символов + '\0'
 
typedef struct {
    int course; // курс
    str15 family; // фамилия
    str15 first_name; // имя
    str15 second_name; // отчество
} student, *student_ptr;
 
typedef const student * student_cptr;
 
int st_cmp(const void * r, const void * l) {
    student_cptr rr = (student_cptr)r;
    student_cptr ll = (student_cptr)l;
    int diff;
    
    // сортируем по курсу
    if (rr->course > ll->course) return 1;
    if (rr->course < ll->course) return -1;
    //сортируем по фамилии
    diff = strcmp(rr->family, ll->family);
    // сортируем по имени
    diff = diff ? diff : strcmp(rr->first_name, ll->first_name);
    // и в конце сортируем по отчеству
    return diff ? diff : strcmp(rr->second_name, ll->second_name);
}
 
void do_sort(student_ptr arr, size_t count) {
    // @link en.cppreference.com/w/c/algorithm/qsort
    qsort(arr, count, sizeof(student), st_cmp);
}
 
int main(void) {
    // your code goes here
    return 0;
}
1
Michail97
93 / 40 / 23
Регистрация: 18.09.2016
Сообщений: 372
23.03.2017, 00:15  [ТС] 4
tujh48, мммм. Прикольно. Так там будет структура в структуре или нет?

Добавлено через 4 минуты
Max Dark, идея понятна. Оформление за мной. Спасибо.

Добавлено через 29 минут
Max Dark, своеобразная функция сравнения. Годнота

Добавлено через 27 минут
Цитата Сообщение от Max Dark Посмотреть сообщение
C
1
2
3
4
5
diff = strcmp(rr->family, ll->family);
* * // сортируем по имени
* * diff = diff ? diff : strcmp(rr->first_name, ll->first_name);
* * // и в конце сортируем по отчеству
* * return diff ? diff : strcmp(rr->second_name, ll->second_name);
В этом фрагменте кода точно всё правильно? Извините, если я не прав. Мне кажется или ложь дальше никогда не наступит. Максимум, что сделает, так это отсортирует по фамилии.
0
Max Dark
шКодер самоучка
2001 / 1767 / 871
Регистрация: 09.10.2013
Сообщений: 3,900
Записей в блоге: 6
Завершенные тесты: 2
23.03.2017, 00:31 5
Цитата Сообщение от Michail97 Посмотреть сообщение
В этом фрагменте кода точно всё правильно?
Сравнивать по имени нет смысла, если фамилии различаются.
strcmp возвращает 0, если аргументы совпадают.
Цитата Сообщение от cppreference
Return value
Negative value if lhs appears before rhs in lexicographical order.
Zero if lhs and rhs compare equal.
Positive value if lhs appears after rhs in lexicographical order.
А "ноль" интерпритируется как "ложь".
1
Michail97
93 / 40 / 23
Регистрация: 18.09.2016
Сообщений: 372
23.03.2017, 01:35  [ТС] 6
Max Dark, точно, фамилии же могут быть одинаковые, как и имена дальше. Нет вопросов.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
23.03.2017, 01:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2017, 01:35

Описать структуру с именем STUDENT
У меня такое задание, но не знаю как вывести чтобы студенты были отсортированы по возрастанию...

Описать структуру с именем STUDENT
Описать структуру с именем STUDENT, которая содержит следующие поля: • NAME - фамилия и...

Описать структуру с именем Student
--&gt; Вот как требуется сделать. #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; ...


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

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

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