Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
Ulceratio
5 / 5 / 2
Регистрация: 04.11.2013
Сообщений: 50
#1

Сортировка методом линейного выбора с обменом для массива структур - C (СИ)

24.04.2014, 13:40. Просмотров 529. Ответов 4
Метки нет (Все метки)

Задача,отсортировать массив структур по температуре методом линейного выбора с обменом.Вообщем код отказывается сортировать массив структур ,прошу помощи в исправлении кода,заранее благодарен.Код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>
struct st
{
    int den;
    int sred; // Sredn99 temperatura
    int dav;
};
int main() 
{
    int n;
    puts("Vvedite kol-vo elem-ov");
    scanf("%d",&n);
    getchar();
 struct st pogoda[n];
 struct st buf,min;
 for(int sch=0;sch<n;sch++)
 {
    puts("Den'");scanf("%d",&pogoda[sch].den);
    puts("Sred temp");scanf("%d",&pogoda[sch].sred);
    puts("Davlenie");scanf("%d",&pogoda[sch].dav);
    getchar();
 }    
 int i, j,nom;
 for(i=0; i<n-1; i++) 
 {
    min.den=pogoda[i].den;
    min.sred=pogoda[i].sred;
    min.dav=pogoda[i].dav; 
    nom=i;
  for(j=i; j<n; j++)
  {
   if (pogoda[i].sred<min.sred) 
   {
    min.den=pogoda[j].den;
    min.sred=pogoda[j].sred;
    min.dav=pogoda[j].dav; 
    nom=j;
   }
  } 
    buf.den=pogoda[i].den;
    buf.sred=pogoda[i].sred;
    buf.dav=pogoda[i].dav;
    // 
    pogoda[i].den=min.den;
    pogoda[i].sred=min.sred;
    pogoda[i].dav=min.dav; 
    //
    pogoda[nom].den=buf.den;
    pogoda[nom].sred=buf.sred;
    pogoda[nom].dav=buf.dav;
 }
 for (j=0; j<n; j++) 
 {
  printf("Den' %d Temperatura %d Davlenie %d\n",pogoda[j].den,pogoda[j].sred,pogoda[j].dav); 
 }
  return 0;           
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2014, 13:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка методом линейного выбора с обменом для массива структур (C (СИ)):

Сортировка массива методом выбора - C (СИ)
Всем добрый вечер.Не успеваю решить все задачи Люди помогите Как можно отсортирововать методом выбора? #include &lt;stdio.h&gt; ...

Сортировка массива методом прямого выбора - C (СИ)
Люди, помогите плиз сортировку массива методом прямого выбора сделать

Сортировка одномерного массива методом выбора - C (СИ)
Здравствуйте, подскажите кто может, по заданию мне нужно&quot;Сортировка выбором: отыскивается максимальный элемент и переносится в конец...

Не работает сортировка двумерного массива методом простого выбора - C (СИ)
Написал программу сортировки двумерного массива методом простого выбора, но она работает не правильно.. помогите, отредактируйте плиз.....

Строки матрицы упорядочить по возрастанию методом линейного выбора с подсчетом - C (СИ)
Если сумма элементов матрицы А размерности nxn больше удвоенной суммы максимального и минимального элементов матрицы, то все строки матрицы...

Сортировка выбором с обменом неотсортированного массива из 1000 элементов - C (СИ)
#include &lt;stdio.h&gt; #define MAS 1000 void main(void) { int S; int P; int j = 0; int i = 0; S = MAS; int MIN;

4
Vtulhu
371 / 377 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
24.04.2014, 15:23 #2
Сортировать массив структур вообще дурость. Надо сортировать указатели на структуры. Кто такие задания даёт?
0
Ulceratio
5 / 5 / 2
Регистрация: 04.11.2013
Сообщений: 50
24.04.2014, 16:33  [ТС] #3
и тем не менее ,можете помочь?
0
Vtulhu
371 / 377 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
24.04.2014, 23:06 #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#define MAX_STRUCTURES 3
 
typedef struct St {
    int day;
    int avgtemp;
    int pressure;
} st;
 
st structures[MAX_STRUCTURES];
 
void swap_structures(int a, int b)
{
    st tmp = structures[a];
    structures[a] = structures[b];
    structures[b] = tmp;
}
 
// функция ищет минимальную структуру, начиная с i-ой
 
int find_min_avgtemp(int i)
{
    int min = i;
    int min_avgtemp = structures[i].avgtemp;
    for( ++i; i < MAX_STRUCTURES; ++i ) {
        if( structures[i].avgtemp < min_avgtemp ) {
            min_avgtemp = structures[i].avgtemp;
            min = i;
        }
    }
    return min;
}
 
void sort_structures(void)
{
    int min;
    for( int i = 0; i < MAX_STRUCTURES; ++i ) {
        min = find_min_avgtemp(i);
        if( min != i ) swap_structures(min, i);
    }
}
 
int main(void)
{
    structures[0].avgtemp = 1;
    structures[1].avgtemp = 3;
    structures[2].avgtemp = 2;
    sort_structures();
    printf("%d %d %d\n", structures[0].avgtemp,
                         structures[1].avgtemp,
                         structures[2].avgtemp);
    return 0;
}
0
Ulceratio
5 / 5 / 2
Регистрация: 04.11.2013
Сообщений: 50
25.04.2014, 16:06  [ТС] #5
спасибо
0
25.04.2014, 16:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2014, 16:06
Привет! Вот еще темы с ответами:

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

Сортировка методом выбора - C (СИ)
Что-то не получается... Может быть сделаете замечания? Или посмотрите на строчки начиная с комента &quot;метод сортировки&quot;? В общем помогите вот...

Сортировка методом простого выбора по убыванию - C (СИ)
Подскажите, подойдет ли эта функция для сортировке методом просто выбора по убыванию. void selectionSort(int *num, int size) { int...

Сортировка методом выбора - прокомментировать код - C (СИ)
Кто может написать подробно,как программа сортирует елементы. Вот часть программы (метод выбора) . Нужны комментарии к программе void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.