Сортировка структуры - C (СИ)

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

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

Добрый вечер, подскажите как реализовать сортировку структуры, методом пузыря? У меня есть вариант но не получается реализовать. Вообщем обмен данных будет происходить с помощью еще одной пустой структуры. Наброски кода такие:
struct p
{
    char si[10];
    int gi;
}l[4];
struct l
{
    char si[10];
    int gi;
}f[1];
int main()
{
 
    int i=0,s=0;
    printf("vedi");
    scanf("%s", l[0].si);
    scanf("%d", &l[0].gi);
    printf("vedi");
    scanf("%s", l[1].si);
    scanf("%d", &l[1].gi);
    if (l[i].gi < l[i + 1].gi)
    {
       f[0]= l[i];
        l[i] = l[i + 1];
        l[i + 1] = o;
    }
    return 0;
Подскажите в чем ошибка.Заранее спасибо
Еще есть вариант с обменом с помощью структуры которую мы используем. Тоесть у нас есть 100 структур из них мы используем 20, а обмен совершаем с помощью 100 структурой.
l[100]= l[i];
        l[i] = l[i + 1];
        l[i + 1] = l[100];
Как то так.

Решение задачи: «Сортировка структуры»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
#define SIZE 10
 
struct list
{
    char name[10];
   int val;
}Array_List[SIZE];
 
int main()
{
    int i, j;
    char str;
    for (i=0;i<SIZE;i++){
        Array_List[i].val=(unsigned char)rand();
        strcpy(Array_List[i].name,"Student");
        printf("List = %5d  Name - %5s\n",Array_List[i].val, Array_List[i].name);
    }
    printf("\n\n");
    struct list tmp;
    for (i = 0; i < SIZE-1; i++){
        for (j = SIZE-1; j > i; j--)
        {
            if (Array_List[j].val < Array_List[j-1].val)
            {
                tmp = Array_List[j-1];
                Array_List[j-1] = Array_List[j];
                Array_List[j] = tmp;
            }
        }
    }
 
for (i=0;i<SIZE;i++)
         printf("List = %5d  Name - %5s\n",Array_List[i].val, Array_List[i].name);
 
    getch();
    return 0;
}

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

Список переменных и их значений:

  1. SIZE - размер массива, 10
  2. Array_List - массив структур, содержащих поля name и val
  3. i, j - индексы для обхода массива и сортировки
  4. str - временная переменная для работы со строками
  5. tmp - временная структура для обмена значениями Код выполняет следующие действия:
  6. Инициализирует значения поля val структур случайными числами, а поля name - строкой Student.
  7. Выводит на экран значения поля val и name для каждой структуры в массиве.
  8. Проводит сортировку массива по убыванию значения поля val с помощью алгоритма пузырька.
  9. Выводит на экран отсортированный массив.
  10. Получает сигнал окончания работы программы (нажатие клавиши) и завершает выполнение.

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


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

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

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