Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
kyzavr
2 / 2 / 0
Регистрация: 22.05.2013
Сообщений: 123
#1

Сортировка естественным слиянием - C++

09.06.2013, 10:41. Просмотров 1573. Ответов 1
Метки нет (Все метки)

Нету не у кого на примете решенной задачки?
Отсортировать бинарный файл, содержащий целые числа, в порядке убывания методом естественного слияния.
ну или кто может помочь переделать вот это? тут вроде дана эта сорт ток через текст файлы и по возрастанию
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
main()
{
      FILE *f, *f1, *f2, *z;
      int k, ks, n1, n2, flag1, flag2, a;
      
      do{
      //razdelenie
          f = fopen("int1.txt","r");
          f1 = fopen("temp1.txt","w");
          f2 = fopen("temp2.txt","w");
          if (!f || !f1 || !f2) 
          {
             perror ("Error open file");
             getch();
             return 1;
          }
          ks = 0; k = 1;
          fscanf (f, "%d", &n2);      
          while (!feof(f))
          {
             z = k?f1:f2;
             fprintf (z, "%d ", n2);
             while (fscanf (f, "%d", &n1) != EOF && n1>=n2)
             {
                fprintf (z, "%d ", n1);
                n2 = n1;
             }
             n2 = n1; ks++; k = !k; 
          }
          fclose (f);
          fclose (f1);
          fclose (f2);
      //slyanie
          f = fopen("int1.txt","w");
          f1 = fopen("temp1.txt","r");
          f2 = fopen("temp2.txt","r");
          if (!f || !f1 || !f2) 
          {
             perror ("Error open file");
             getch();
             return 1;
          }
          flag1 = fscanf (f1, "%d", &n1) != EOF;
          flag2 = fscanf (f2, "%d", &n2) != EOF;
          a = n1<n2?n1:n2;
          while (flag1 && flag2)
          {
             if (n1<=n2)
             {
                fprintf (f, "%d ", n1);
                a = n1;
                flag1 = fscanf (f1, "%d", &n1) != EOF;
             }
             else
             {
                fprintf (f, "%d ", n2);
                a = n2;
                flag2 = fscanf (f2, "%d", &n2) != EOF;
             }
             if ((n1<a || !flag1) && n2>=a && flag2)
                do
                {
                   fprintf (f, "%d ", n2);
                   a = n2;
                   flag2 = fscanf (f2, "%d", &n2) != EOF;
                }
                while (n2>=a && flag2);   
             if ((n2<a || !flag2) && n1>=a && flag1)
                do
                {
                   fprintf (f, "%d ", n1);
                   a = n1;
                   flag1 = fscanf (f1, "%d", &n1) != EOF;
                }
                while (n1>=a && flag1);   
          }
          if (flag1)
          {
             fprintf (f, "%d ", n1);
             while (fscanf (f1, "%d", &n1) != EOF)
                  fprintf (f, "%d ", n1);
          }
          if (flag2)
          {
             fprintf (f, "%d ", n2);
             while (fscanf (f2, "%d", &n2) != EOF)
                  fprintf (f, "%d ", n2);
          }
          fclose (f);
          fclose (f1);
          fclose (f2);
      }
      while (ks>1);
      return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2013, 10:41     Сортировка естественным слиянием
Посмотрите здесь:

C++ Сортировка слиянием
Сортировка слиянием C++
C++ сортировка слиянием
C++ Сортировка слиянием в С++
C++ Сортировка с слиянием
Сортировка слиянием c++ C++
C++ Сортировка слиянием
C++ Сортировка слиянием
Сортировка слиянием C++
Сортировка слиянием C++
Сортировка слиянием C++
Сортировка слиянием C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kyzavr
2 / 2 / 0
Регистрация: 22.05.2013
Сообщений: 123
12.06.2013, 21:11  [ТС]     Сортировка естественным слиянием #2
Не кто не знает(??
Yandex
Объявления
12.06.2013, 21:11     Сортировка естественным слиянием
Ответ Создать тему
Опции темы

Текущее время: 02:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru