Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab6 / lab6

.cpp
Скачиваний:
8
Добавлен:
10.02.2019
Размер:
5.23 Кб
Скачать
яю#include "pch.h"

#include <iostream>

#include <time.h>

#include <windows.h>

#include <cstdio>

#include <fstream>

using namespace std;



extern "C" int FunC(int*, int, int*, int, int*);



int comp(const void * p1, const void * p2) {

	return *(int *)p1 - *(int *)p2;

}



typedef struct Node{

	int N, Left, Right, numG;

	int* mas;

	int* masL;

	int* Answer;



}node;



void out(ostream& streamOut, node date){

	streamOut << "0AA82:" << endl;

	for (int i = 0; i < date.N; i++)

		streamOut << date.mas[i] << " ";



	streamOut << endl << "@0=8FK:" << endl;

	if (date.numG == 0) streamOut << ">?>;=8B5;L=KE 3@0=8F =5B!" << endl;

	for (int i = 0; i < date.numG; i++)

		streamOut << date.masL[i] << " ";

	streamOut << endl;



	streamOut << " 0A?@545;5=85 A;CG09=KE G8A5; ?> 7040==K< 8=B5@20;0<:\n";

	streamOut << "!0 [" << date.Left << ";" << date.masL[0] << ") >;8G5AB2> ?>?040=89:" << date.Answer[0] << endl;

	for (int i = 0; i < date.numG - 1; i++)

		streamOut << "!" << i + 1 << " [" << date.masL[i] << ";" << date.masL[i + 1] << ") >;8G5AB2> ?>?040=89:" << date.Answer[i + 1] << endl;

	streamOut << "!" << date.numG << " [" << date.masL[date.numG - 1] << ";" << date.Right << ") >;8G5AB2> ?>?040=89:" << date.Answer[date.numG] << endl;

}



int main() {

	srand(time(NULL));

	SetConsoleCP(1251);

	SetConsoleOutputCP(1251);

	int N = 0, Left = 0, Right = 0, numG = -1, i = 0;

	

	while (N <= 0 || N > 16000) {

		cout << "2548B5 4;8=C <0AA820 ?A524>A;CG09=KE G8A5; (0<N<=16000): ";

		cin >> N;

	}



	while ((Left == 0 && Right == 0) || Left >= Right) {

		cout << endl << "2548B5 ;52CN 3@0=8FC <0AA820: ";

		cin >> Left;

		cout << endl << "2548B5 ?@02CN 3@0=8FC <0AA820: ";

		cin >> Right;

	} 



	while (numG < 0 || numG>24) {

		cout << endl << "2548B5 :>;8G5AB2> 4>?>;=8B5;L=KE ;52KE 3@0=8F (0 <= N <= 24): ";

		cin >> numG;

	}



	int *masL = new int[numG];

	for (i = 0; i < numG; i++) {

		cout << endl << "2548B5 ;52CN 3@0=8FC ! " << i + 1 << ": ";

		cin >> masL[i];



		while (masL[i] < Left || masL[i] > Right) {

			cout << "2548B5 ;52CN 3@0=8FC ! " << i + 1 << ": ";

			cin >> masL[i];

		}

	}



	int *mas = new int[N];

	for (i = 0; i < N; i++)

		mas[i] = rand() % (Right - Left + 1) + Left;



	qsort(mas, N, sizeof(int), comp);

	qsort(masL, numG, sizeof(int), comp);



	int* Answer = (int*)calloc(numG + 1, sizeof(int));

	FunC(mas, N, masL, numG, Answer);



	node date = { N, Left, Right, numG,mas, masL, Answer};

	ofstream fout;

	fout.open("file.txt");

	out(fout,date);

	out(cout,date);

	fout.close();



	system("pause");

	return 0;

}
Соседние файлы в папке lab6