Сортировка файлов естественным слиянием

Раздел
Программирование
Предмет
Просмотров
463
Покупок
0
Антиплагиат
Не указан
Размещена
22 Янв 2019 в 15:28
ВУЗ
КГУ
Курс
2 курс
Стоимость
400 ₽
Файлы работы   
1
Каждая работа проверяется на плагиат, на момент публикации уникальность составляет не менее 40% по системе проверки eTXT.
zip
10-12-2018_12-39-02
211.5 Кбайт 400 ₽
Описание
Оглавление

Приложение А

(программный код)

#include <iostream>

#include <stdlib.h>

#include <time.h>

#include <windows.h>

using namespace std;

//вывод содержимого файла

void Print_File(char *name){

int c;

FILE *x;

x = fopen(name,"r");

while(!feof(x)){

fscanf(x,"%d",&c);

cout<<c<<" ";

}

fclose(x);

cout<<endl<<endl;

}

//определение конца блока

bool End_Range (FILE * f){

int tmp;

tmp = fgetc(f);

tmp = fgetc(f);

if (tmp != '\'') fseek(f,-2,1);

else fseek(f,1,1);

return tmp == '\'' ? true : false;

}

//Описание функции сортировки естественным слиянием

int Natural_Merging_Sort(char *name){

int s1, s2, a1, a2, mark, count;

FILE *f, *f1, *f2; //объявляем файловые переменные

s1 = s2 = 1;

count=0; //колво фаз

while ( s1 > 0 && s2 > 0 ){ //условие выхода - отсортированая последовательность

mark = 1;

count++;

s1 = 0;

s2 = 0;

f = fopen(name,"r"); //открываем файл для чтения

f1 = fopen("nmsort_1","w"); //открываем 2 файла для записи и начинаем распределение чисел

f2 = fopen("nmsort_2","w");

fscanf(f,"%d",&a1); //считываем первое число

if ( !feof(f) ) {

fprintf(f1,"%d ",a1); //записывем число в первый файл

}

if ( !feof(f) ) fscanf(f,"%d",&a2); //считываем второе число

while ( !feof(f) ){

if ( a2 < a1 ) { //если серия закончилась

switch (mark) { //маркер конца серии

case 1:{fprintf(f1,"' "); mark = 2; s1++; break;} //если серия закончилась то маркером меняем файл в который идет запись

case 2:{fprintf(f2,"' "); mark = 1; s2++; break;}

}

}

if ( mark == 1 ) { fprintf(f1,"%d ",a2); s1++; } //запись в файл

else { fprintf(f2,"%d ",a2); s2++;}

a1 = a2;

fscanf(f,"%d",&a2); //считываем следующее число

}

if ( s2 > 0 && mark == 2 ) { fprintf(f2,"'");}

if ( s1 > 0 && mark == 1 ) { fprintf(f1,"'");}

fclose(f2); //закрываем файлы

fclose(f1);

fclose(f);

............ и т д

Список литературы

Описание + программа

Вам подходит эта работа?
Похожие работы
C/C++
Лабораторная работа Лабораторная
18 Авг в 15:52
29 +1
0 покупок
C/C++
Контрольная работа Контрольная
27 Июн в 22:59
79
0 покупок
C/C++
Контрольная работа Контрольная
20 Апр в 19:57
74
1 покупка
C/C++
Контрольная работа Контрольная
20 Апр в 19:54
47 +1
0 покупок
Темы журнала
Показать ещё
Прямой эфир