Untitled

 avatar
unknown
plain_text
2 years ago
3.3 kB
5
Indexable
#define _CRT_SECURE_NO_WARNINGS


#include <iostream>
#include <string>
#include <vector>


#include <fstream>

using namespace std;



void MergeSortedIntervals(vector<int>& v, int s, int m, int e);
void MergeSort(vector<int>& v, int s, int e);

int main()
{
	int M = 10;


    std::ifstream fin("Tape_in.txt");
    
    int number;
	int temp_file = 0;
    if (fin && !fin.eof())
    {
		while (!fin.eof())
		{
			vector<int> v_in_M_elems;
			
			cout << "NEW PART" << endl;
			int i;
			for ( i = 0;  !fin.eof() && i < M; i++)
			{
				fin >> number;
				
				v_in_M_elems.push_back(number);
				std::cout << number << endl;
			}
			

			MergeSort(v_in_M_elems, 0, i - 1);

			cout << "\n\n\SORTED:" << endl;
			std::ofstream fout("Tape_temp"+to_string(temp_file)+".txt");
			for (auto it : v_in_M_elems)
			{
				cout << it << endl;
				fout << it <<"\n";
			}

			fout.close();
			temp_file++;
			cout << "\n\n\n" << endl;;

		}

			
		fin.close();
    }


	cout << "Merge" << endl;

	std::ifstream fin0("Tape_temp0.txt");
	std::ifstream fin1("Tape_temp1.txt");

	std::ofstream fout("Tape_out.txt");
	int num0,num1;
	if (fin0 && !fin0.eof())
	{
		if (fin1 && !fin1.eof())
		{
			fin0 >> num0;
			fin1 >> num1;

			while (!fin0.eof() && !fin1.eof())
			{				
				if (num0 <= num1)
				{
					cout << num0 << "    num0 " << num0 <<":" <<num1 << endl;
					fout << num0 << "\n";
					fin0 >> num0;
				}
				else
				{
					cout << num1 << "    num1 " << num0 << ":" << num1 << endl;
					fout << num1 << "\n";
					fin1 >> num1;
				}

				if (fin0.eof() && !fin1.eof())
				{
					while (!fin1.eof())
					{
						cout << num1 << "    add " << num1  << endl;
						fout << num1 << "\n";
						fin1 >> num1;
					}
				}

				if (!fin0.eof() && fin1.eof())
				{
					while (!fin0.eof())
					{
						cout << num0 << "    add " << num0 << endl;
						fout << num0 << "\n";
						fin0 >> num0;
					}
				}

			}
			fout.close();
		}
	}


	fin0.close();
	fin1.close();

    return 0;
}




void MergeSortedIntervals(vector<int>& v, int s, int m, int e) 
{
	vector<int> temp;

	int i, j;
	i = s;
	j = m + 1;

	while (i <= m && j <= e) {

		if (v[i] <= v[j]) {
			temp.push_back(v[i]);
			++i;
		}
		else {
			temp.push_back(v[j]);
			++j;
		}

	}

	while (i <= m) {
		temp.push_back(v[i]);
		++i;
	}

	while (j <= e) {
		temp.push_back(v[j]);
		++j;
	}

	for (int i = s; i <= e; ++i)
		v[i] = temp[i - s];

}


void MergeSort(vector<int>& v, int s, int e) 
{
	if (s < e) {
		int m = (s + e) / 2;
		MergeSort(v, s, m);
		MergeSort(v, m + 1, e);
		MergeSortedIntervals(v, s, m, e);
	}
}











int move_left(int offset)
{
	return offset++;
}

int move_right(int offset)
{
	return offset++;
}

int get_daya(ifstream file, string temp_in, int offset)
{
	int i = 0;

	for (file >> temp_in; !file.eof() && i != offset; file >> temp_in)
	{
		i++;
	}


	cout << temp_in << endl;

	return 0;
}


int write_data(ifstream file, string temp_in)
{
	/*file.open("text.txt", ofstream::binary | ofstream::out | ofstream::in);
	file.seekp(1);
	file.write("zxc", 3);
	*/

	return 0;
}
Editor is loading...