ЕБ
Евгения Белоусова

Сортировка Структур по Алфавиту (Язык Си)

Не получается отсортировать... Где ошибка? (пробовал code > 0 и code < 0) все равно не выходит

int i = 1, n, k, code;
struct STUDENT temp;

for(k = 1; k < 10; k++)

for(n = 1; n < 10 - k; n++)
{
code = strcmp (student1.name, student1[i+1].name);
if(code > 0)
{
temp = student1;
student1 = student1[i+1];
student1[i+1] = temp;
}

}

printf("\nСписок, отсортированный по алфавиту: "
"\nФамилия и инициалы Группа Оценка");
for(k = 1; k < 10; k++)
{
printf("\n%s %d ", student1[k].name, student1[k].number_group);
for (int n = 0; n < 5; n++)
{
printf("%d ", student1[k].result[n]);
}
}

ВБ
Валерия Боровикова

#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(" "); }

СА
Сохиб Ашуров

1. разберись со счетчиками (в том числе с границами в циклах)
2.
code = strcmp (student1.name, student1[i+1].name);
замени на
code = strcmp (student1[ n ].name, student1[n+1].name);
для начала.

Похожие вопросы
Сортировка методом пузырька. Си.
помогите с сортировкой на Си
Как в документе сделать сортировку по алфавиту?!
Структуры в си. Нид хэлп.
Структуры в СИ. Помогите пожалуйста
сортировка естественым слиянием с (си)
Как сделать сортировку по алфавиту через strcmp?
Сортировка Шелла на Си
Язык СИ. Массивы Ребят, как на Си написать сортировку массива от меньшего к большему?
Структуры и объединения Си