Выполнить сортировку массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дали задание написать программу, используя массив указателей на структуры и динамическое выделение памяти(с помощью malloc). Выполнить сортировку массива(необходимо описать дополнительный указатель на структуру) Вроде все работает правильно, но может есть какие-то недочеты.
void n4_2()
{
    struct TStructure
    {
        char Name[50];
        int CountGames;
        int Points;
        int Fund;
    };
    struct TStructure *s;
    struct TStructure u_s;
    s = malloc(3 * sizeof(struct TStructure));
    printf("%s\n", "Ввод данных");
    for (int i = 0; i < 3; i++)
    {
        printf("%d команда\n", i + 1);
        printf("Название команды\n");
        scanf("%s", &s[i].Name);
        printf("Игры\n");
        scanf("%d", &s[i].CountGames);
        printf("Очки\n");
        scanf("%d", &s[i].Points);
        printf("Призовой фонд\n");
        scanf("%d", &s[i].Fund);
    }
    for (int i = 0; i < 2; i++)
    for (int j = i+1; j < 3; j++)
    {
        if (s[i].Fund > s[j].Fund)
        {
            u_s = s[i];
            s[i] = s[j];
            s[j] = u_s;
        }
    }
    printf("%s\n", "Вывод отсортированных данных по призовому фонду");
    for (int i = 0; i < 3; i++)
    {
        printf("%d команда\n", i + 1);
        printf("    Название команды: %s\n", s[i].Name);
        printf("    Игры: %d\n", s[i].CountGames);
        printf("    Очки: %d\n", s[i].Points);
        printf("    Призовой фонд: %d\n", s[i].Fund);
    }
    free(s);
}

Решение задачи: «Выполнить сортировку массива»

textual
Листинг программы
#include <malloc.h>
#include <locale.h>
 
int main(int argc, char** argv) {
    setlocale( LC_ALL,"Russian" ); 
    struct TStructure
    {
        char Name[50];
        int CountGames;
        int Points;
        int Fund;
    };
    struct TStructure **s;
    struct TStructure *u_s;
    s = (struct TStructure**) malloc(3 * sizeof(struct TStructure*));
    printf("%s\n", "Ввод данных");
    for (int i = 0; i < 3; i++)
    {
        s[i] = (struct TStructure*) malloc(sizeof(struct TStructure));
        printf("%d команда\n", i + 1);
        printf("Название команды\n");
        scanf("%s", &s[i]->Name);
        printf("Игры\n");
        scanf("%d", &s[i]->CountGames);
        printf("Очки\n");
        scanf("%d", &s[i]->Points);
        printf("Призовой фонд\n");
        scanf("%d", &s[i]->Fund);
    }
    for (int i = 0; i < 2; i++)
    for (int j = i+1; j < 3; j++)
    {
        if (s[i]->Fund > s[j]->Fund)
        {
            u_s = s[i];
            s[i] = s[j];
            s[j] = u_s;
        }
    }
    printf("%s\n", "Вывод отсортированных данных по призовому фонду");
    for (int i = 0; i < 3; i++)
    {
        printf("%d команда\n", i + 1);
        printf("    Название команды: %s\n", s[i]->Name);
        printf("    Игры: %d\n", s[i]->CountGames);
        printf("    Очки: %d\n", s[i]->Points);
        printf("    Призовой фонд: %d\n", s[i]->Fund);
        free(s[i]);
    }
    free(s);
}

Объяснение кода листинга программы

Код выполняет следующие действия:

  1. Устанавливает локальную среду на русский язык.
  2. Определяет структуру данных под названием TStructure, которая содержит поля: Name типа char с длиной 50 символов, CountGames, Points и Fund типа int.
  3. Максимально выделяет память под массив структур TStructure размером 3 элемента с помощью функции malloc.
  4. Выводит приглашение для ввода данных.
  5. Заполняет массив структур TStructure данными, введенными пользователем, с помощью функции scanf.
  6. Сортирует массив структур TStructure по полю Fund с помощью цикла for и условного оператора if.
  7. Выводит отсортированные данные на экран с помощью цикла for и функции printf.
  8. Освобождает память, выделенную под каждый элемент массива структур TStructure, с помощью функции free.
  9. Освобождает память, выделенную под массив указателей на структуры TStructure, с помощью функции free.

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


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

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

7   голосов , оценка 4 из 5
Похожие ответы