#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <vector>
#include <iostream>
#include <fstream>
#include <ctime> 


using namespace std;


int main(){
	ifstream fOrigen;
	ofstream fTest;
	ofstream fEntrenamiento;
	vector<string> cadenas;
	string buffer;
	char name[2000];
	
	srand((unsigned)time(0)); 
	
	while (1){
		printf("Introduzca Nombre de Fichero Origen (ej. Pixeles.txt): ");
		cin>>name;
		fOrigen.open( name, ifstream::in);
		if( !fOrigen ){
			printf("Error al abrir el fichero Origen\n\n");
		}
		else break;
	}

	int caract, n_entr, n_test;
	int n_total;
	int c;
	fOrigen.getline(name,2000);
	sscanf(name,"%d",&caract);

	while( fOrigen.getline(name,2000) != NULL ){
		buffer.clear();
		buffer.append(name);
		cadenas.push_back(buffer);
	}
	
	n_total=cadenas.size();

	while (1){
		printf("Introduzca Numero de pixels que quiere asignar para el entrenamiento\n Debe ser menor o igual de %d: ", n_total);
		scanf(" %d", &n_entr);
		if( n_entr > n_total ){
			printf("El numero introducido no es menor\n");
		}
		else break;
	}
	while (1){
		printf("Introduzca Numero de pixels que quiere asignar para el test\n Debe ser menor o igual de %d: ", n_total-n_entr);
		scanf(" %d", &n_test);
		if( n_test >= n_total ){
			printf("El numero introducido no es menor\n");
		}
		else break;
	}

	fTest.open( "Test.txt", ofstream::out);
		if( !fTest ){
		exit(0);
	}

	fEntrenamiento.open( "Entrenamiento.txt", ofstream::out);
		if( !fEntrenamiento ){
		exit(0);
	}

	fEntrenamiento<<caract;
	fTest<<caract;	
	
	int random;
	string aux, aux2,aux3;
	while( n_entr!=0 ){
		random= rand()%n_total;
		fEntrenamiento<<endl<<cadenas[random].c_str();
		cadenas[random]=cadenas.back();
		cadenas.pop_back();
		n_entr--;
		n_total--;
	}
	while( n_test!=0 ){
		random= rand()%n_total;
		fTest<<endl<<cadenas[random].c_str();
		aux=cadenas[random];
		aux2=cadenas.back();
		cadenas[random]=cadenas.back();
		aux3=cadenas[random];
		cadenas.pop_back();
		n_test--;
		n_total--;
	}



	fOrigen.close();
	fTest.close();
	fEntrenamiento.close();
}
