Цикл сортировки ломает вывод програмы, програма отсиртированый список не выводит

Ввести последовательность данных о результатах работы бригады за неделю:

<Номер дня>, <План>, <Фактический выработка>

напечатать таблицу введенных данных. Затем отсортировать их по убыванию процента выполнения плана. Распечатать отсортированы данные, заменив номера дней их наименованиями.

Вот мой код на даный момент

#include <stdio.h>
#define COUNT 2

int main() {
    struct brigade {
        int day;
        double plan;
        double result;
        double rating;
    }brarr[7], payday, *pbr,*pbr1,*pbr2;
    int k;
    //Введення результатів
    for ( k = 0; k < COUNT; ++k) {
        printf("\nEnter the number of the day: ");
        scanf("%d",&brarr[k].day);
            if (brarr[k].day<1||brarr[k].day>8){return 0;}
        printf("\nEnter the planed amount of work: ");
        scanf("%ld",&brarr[k].plan);
        printf("\nEnter the amount of work that was done: ");
        scanf("%ld",&brarr[k].result);
    }
    //обрахунок відсотку виконання плану
    for (k = 0; k < COUNT; ++k) {
        brarr[k].rating=(brarr[k].result/brarr[k].plan)*100;
    }
    puts("\n\tThe brigade`s week: ");
    for ( k = 0; k < COUNT; ++k) {
        printf("Day - %d   planned amount of work - %ld  amount of done work - %ld  day rating - %lf%%\n", brarr[k].day, brarr[k].plan, brarr[k].result, brarr[k].rating);
    }
    //Цикл сортування
    for ( k = 0; k < COUNT; ++k) {
        pbr1=brarr; pbr2=brarr+1;
        for (; pbr2+COUNT-k;pbr1++,pbr2++) {
            if (pbr1->rating < pbr2->rating){
                payday=*pbr1;
                *pbr1=*pbr2;
                *pbr2=payday;
            }
        }
    }
//Виведення відсортованого списку
    printf("\n\t Rating`s day list: ");

    for (k = 0,pbr=brarr; k <COUNT ; ++k) {
        printf("Day - %d  Rating - %ld%%\n",pbr->day,pbr->rating);
    }
    return 0;
}

Ответы (0 шт):