Не могу понять, в чем ошибка - C (СИ)
Формулировка задачи:
Задание: Сортировка введенных элементов структур(книг). Почему-то компилятор выдает ошибку. Как я понял, проблема таиться в сортировке, а именно в сортировке последнего элемента структуры. Я смог решить проблему добавив еще 1 "пустой" элемент в структуру(Изменив N и подправив циклы) , но такое решение меня не устраивает. Хотел бы узнать, в чем именно причина. Заранее спасибо.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #define N 3 int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); int sort = 0, length = 0, j = 0; struct book { char author[15]; char name[15]; char vidav[20]; long year; }; struct book opis[N], struc; int i; for (i = 0; i <= N; i++) { gets_s(opis[i].author, 14); printf("%s \n", opis[i].author); gets_s(opis[i].name, 14); printf("%s \n", opis[i].name); gets_s(opis[i].vidav, 19); printf("%s \n", opis[i].vidav); scanf("%d", &opis[i].year); printf("%d \n", opis[i].year); getchar(); } length = i; printf("\n \n \n"); for (i = 0; i <= N; i++) { printf("%15s", opis[i].author); printf("%20s", opis[i].name); printf("%20s", opis[i].vidav); printf("%20d \n", opis[i].year); } for (i = 1; i < length; i++) { struc = opis[i]; for (j = i - 1; (j >= 0) && (opis[j].year <= struc.year); j--) { opis[j + 1] = opis[j]; } opis[j + 1] = struc; } printf("\n \n \n"); for (i = 0; i <= N; i++) { printf("%15s", opis[i].author); printf("%20s", opis[i].name); printf("%20s", opis[i].vidav); printf("%20d \n", opis[i].year); } system("pause"); return 0; }
Решение задачи: «Не могу понять, в чем ошибка»
textual
Листинг программы
i < N;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д