/*
 * Instituto Superior de Engenharia do Porto
 *
 * Estruturas de Informação
 *
 * 2000/2001
 *
 * (C) Paulo Sousa
 *
 * ------------------------------------------
 *
 * Trabalho nº 1
 *
 *	funções de utilitarios
 *
 */


#include "teste.h"



void preencher_random(int v[], int nSize);
void preencher_ordenado(int v[], int nSize);
void preencher_invertido(int v[], int nSize);


string tostring(bool v)
{
	if (v)
		return "true";
	else
		return "false";
}

int random(int l, int h)
{
	int p = rand() % (h-l);
	return l + p;
}
/*
int myrand()
{
	// tenta gerar números razoavelmente diferentes
	for(int i = 0; i < 5; i++)
		rand();
	return rand() * rand() / rand();
}
*/
void preencher_random(int v[], int nSize)
{
	//garantir que os numeros gerados são sempre os mesmos, para usar 
	//em qualquer algoritmo
	srand(1000);	

	//preencher
	for(int i = 0; i < nSize; i++)
		v[i] = rand();
		//v[i] = myrand();
}

void preencher_ordenado(int v[], int nSize)
{
	for(int i = 0; i < nSize; i++)
		v[i] = i;
}

void preencher_invertido(int v[], int nSize)
{
	int n = nSize-1;
	for(int i = 0; i < nSize; i++)
	{
		v[i] = n;
		n--;
	}
}

void preenche(preenchimento FP, int vec[], int nTam)
{
	switch (FP)
	{
	case ordenado:
		preencher_ordenado(vec, nTam);
		break;
	case invertido:
		preencher_invertido(vec, nTam);
		break;
	case aleatorio:
		preencher_random(vec, nTam);
		break;
	default:
		throw Erro(ERRO_POLITICA_INVALIDA);
	}
}


