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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание простого распределителя памяти http://www.cyberforum.ru/cpp-beginners/thread895924.html
Вот мой код: #include<iostream> #include<cstdlib> #define allocator Allocator template<class T> class Allocator { public: T* allocate(int n); void deallocate(T* p, int n);
C++ Посовейтуйте книгу Что лучше для изучения C++ - 3-е или 5-е издание "Как программировать на C++" Автор: Дейтел и Дейтел. Знатоки, кто сам по ним учился, какое издание лучше? http://www.cyberforum.ru/cpp-beginners/thread895915.html
Алгоритмы на графах C++
Изолированные города В государстве N городов с номерами 1.2….N. Некоторые города связаны между собой дорогами и образуют штат. Сколько штатов в государстве. Формат входного файла Во входном файле записаны сначала два числа N и M, задающие соответственно количество городов и количество дорог (1≤N≤100, 0≤M≤1000), а затем перечисляются попарно связанные дорогами города. Каждая дорога...
C++ Написать программу производящую замену указанного массива информации с позиции K до позиции M в файле на массив информации
Написать программу производящую замену указанного массива информации с позиции K до позиции M в файле на массив информации находящийся в этом же файле c позиции K+i до позиции M+i. Тип файла - бинарный.
C++ c++ и БД http://www.cyberforum.ru/cpp-beginners/thread895861.html
Помогите пожалуйста, умные люди. Мне достаточно срочно для института потребовалось выполнить работу, а именно: составить программу которая будет совмещать базу данных с информацией о различном ПО для админства или простой профилактики, и интерфейс на с++ (я так понимаю буилдере), который в виде теста помогает пользователю подобрать необходимую ему прогу, или суровый ответ "вам требуется помощь...
C++ Не работает после компиляции Проблема такова: В VS , когда дебажу, мой код нормально работает. Стоит его откомпилировать....И "Виндовс ищет способ устранения этой ошибки". Суть программы - работа с длинными числами. Ввод - строкой. А для строки вывода выделял динамическую память. подробнее

Показать сообщение отдельно
kyzavr
2 / 2 / 0
Регистрация: 22.05.2013
Сообщений: 136

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

09.06.2013, 10:41. Просмотров 1762. Ответов 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru