#include
#include
#include
#include
#define GROUP 6
#define NAME 28
#define SIZE 1
enum msg { INPUT_NAME, INPUT_GROUP, INPUT_EVALUATION, OUTPUT_NAME, OUTPUT_GROUP, OUTPUT_EVALUATION, SORT };
struct student {
char name[NAME];
char group[GROUP];
unsigned short evaluation;
};
typedef struct student STUDENT;
int sort_function(const void * a,const void * b);
void ui(short);
void space(int);
int main() {
STUDENT students[SIZE];
size_t st;
for (st = 0; st < SIZE; st++) {
ui(INPUT_NAME); fflush(stdin); gets_s(students[st].name, NAME); fflush(stdin);
ui(INPUT_GROUP); scanf_s("%s", students[st].group);
ui(INPUT_EVALUATION); scanf_s("%hu", &students[st].evaluation); printf("\n");
}
qsort(students, SIZE, sizeof(STUDENT), sort_function);
ui(SORT);
space(NAME / 4); ui(OUTPUT_NAME); space(NAME / 2); ui(OUTPUT_GROUP); printf("\n");
for (st = 0; st < SIZE; st++) printf("%-30s%1s\n", students[st].name, students[st].group);
getchar(); getchar();
return 0;
}
int sort_function(const void * a, const void * b) { return strcmp((*(STUDENT *)a).name, (*(STUDENT *)b).name); }
void ui(short _msg) {
setlocale(LC_CTYPE, "Russian_Russia.1251");
switch (_msg) {
case INPUT_NAME: printf("Введите фамилия и инициалы: "); break;
case INPUT_GROUP: printf("Введите группу: "); break;
case INPUT_EVALUATION: printf("Введите оценку: "); break;
case OUTPUT_NAME: printf("Фамилия"); break;
case OUTPUT_GROUP: printf("Группа"); break;
case OUTPUT_EVALUATION: printf("Оценка"); break;
case SORT: printf("Список, отсортированные в алфавитном порядке: \n"); break;
} setlocale(LC_CTYPE, "Russian_Russia.866");
}
void space(int _size) { while (_size--) printf(" "); }