Сортировка массивов структур - не получается отсортировать строки по значению первого столбца - C (СИ)

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

Нидхэлп. В функции sort_by_number(size) не получается отсортировать строки по значению первого столбца, т.е. сортируются только значения con[i].num, а надо, чтобы вся строка "ложилась" в новую таблицу...
#include <iostream>
#include <stdio.h>
 
int size = 0;
 
typedef struct contracts 
{
int num; // номер контракта
double sum; // сумма по контракту
double tamozh; // сумма таможенного сбора
} CONTR;
 
CONTR con[100]; // оглашение масива структур
 
void sum_to_tam(int size)  // Функция расчета суммы таможенного сбора (с коэфициентом 0,15)
{
    for(int i = 0; i < size; i++) 
    {
    con[i].tamozh=con[i].sum*0.15;
    }
}
 
void input(int size) // ввод данных
{
    for(int i = 0; i < size; i++) 
    {
       printf("\n *Позиция № %d*", i+1);
       printf("\n Введите номер контракта: ");
       scanf_s("%d", &con[i].num);
       printf(" Сумма по контракту: ");
       scanf_s("%lf", &con[i].sum); 
    }
}
 
void show(int size) //вывод данных в таблицу
{
    printf("\n №  | Сумма     | Сумма сбора \n");
    printf("*******************************\n");
    for(int i = 0; i < size; i++) 
    {
    printf(" %-2d | %-9.1lf | %-9.1lf \n", 
            con[i].num, con[i].sum, con[i].tamozh);
    }
}
 
void sort_by_number(int size) // сортировка методом выбора
{
    int i, j, pos, tmp;
    for(i = 0; i < size; ++i) 
    { 
        pos = i; 
        tmp = con[i].num;
        for(j = i + 1; j < size; ++j) 
        {
            if (con[j].num < tmp) 
            {
               pos = j; 
               tmp = con[j].num; 
            }
        }
        con[pos].num = con[i].num;
        con[i].num = tmp; 
    }      
}  
 
int main (void){
setlocale(LC_ALL, "");
printf("Введите количество контрактов: ");
scanf_s("%d", &size);
input(size);
sum_to_tam(size);
printf("\n\n Перед сортировкой:\n");
show(size);
sort_by_number(size);
printf("\n\n После сортировки:\n");
show(size);
 
getchar ();
getchar ();
return 0;
}

Код к задаче: «Сортировка массивов структур - не получается отсортировать строки по значению первого столбца - C (СИ)»

textual
void sort_by_number(int size) // сортировка методом выбора
{
    int i, j, pos;
    CONTR tmp;
 
    for (i = 0; i < size; ++i)
    {
        pos = i;
        for (j = i + 1; j < size; ++j)
        {
            if (con[j].num < con[pos].num)
            {
                pos = j;
            }
        }
        tmp = con[pos];
        con[pos] = con[i];
        con[i] = tmp;
    }
}

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


СОХРАНИТЬ ССЫЛКУ