Не могу понять, в чем ошибка - 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;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5