loteria.c 16.8 KB
Newer Older
Ivo Júnior's avatar
Ivo Júnior committed
1 2 3 4 5 6 7 8 9
//#######################################################################
//## TP1 ALGORITMOS II 2015/2 - Loja de Vinis VINILERA                 ##
//## Nomes: Ivo de Souza Bueno Júnior - GRR20154004                    ##
//##        Felipe Lopes Pereira      - GRR20153190                    ##	
//#######################################################################

//"VER RELATORIO[N] significa que aquele pedaco de codigo e as decisoes
//tomadas sobre ele será explicado no relatorio no item N.

10
#include"loteria.h"
11

Ivo Júnior's avatar
Ivo Júnior committed
12
//VER RELATORIO[1] 
13 14 15 16 17 18
void Limpa()
{
	char c;
	while((c = getchar()) != '\n' && c != EOF);
}

Ivo Júnior's avatar
Ivo Júnior committed
19
//VER RELATÓRIO[2]
20 21 22 23 24 25 26
void ToLogFile(char string[MAXSTR])
{ 
  	FILE *log = fopen("log.txt", "a+");
  	fprintf(log, "%s", string);
  	fclose(log);
}

Ivo Júnior's avatar
Ivo Júnior committed
27 28 29
//Algoritmo de ordenação SelectSort
//vetor[] = vetor a ser ordenado
//tam = tamanho do vetor
Felipe Pereira's avatar
Felipe Pereira committed
30
void SelectSort(int vetor[], int tam)
31
{
32 33 34 35 36 37 38 39 40 41 42 43 44 45
	int i, j, min, aux;
	
	for(i = 1; i <= tam; i++)
	{
		min = i;
		for(j= i+1 ; j <= tam; j++)
		{
			if(vetor[j] < vetor[min])
				min = j;
		}
		aux = vetor[min];
		vetor[min] = vetor[i];
		vetor[i] = aux;
	}
46 47
}

Ivo Júnior's avatar
Ivo Júnior committed
48 49 50
//Algoritmo de ordenação BubbleSort
//vetor[] = vetor a ser ordenado
//tam = tamanho do vetor
Felipe Pereira's avatar
Felipe Pereira committed
51
void BubbleSort(int vetor[], int tam)
52
{
53 54 55 56 57 58 59 60 61 62 63 64
	int i, j, aux;
	
	for(i = 2; i <= tam; i++)
		for(j = tam; j >= i; j--)
		{
			if(vetor[j] < vetor[j-1])
			{
				aux = vetor[j];
				vetor[j] = vetor[j-1];
				vetor[j-1] = aux;
			}
		}
65 66
}

Ivo Júnior's avatar
Ivo Júnior committed
67 68 69
//Descobre a mediana de 3 valores
//vetor[] = vetor que contem os 3 valores
//esq, meio, dir = as posições dos 3 valores dos quais queremos saber quem é o do meio
Felipe Pereira's avatar
Felipe Pereira committed
70
int Mediana(int vetor[], int esq, int meio, int dir)
71
{
72 73 74 75 76 77 78 79 80 81 82 83 84
	if(vetor[esq] >= vetor[dir])
		if(vetor[esq] <= vetor[meio])
			return esq;
		else if(vetor[meio] >= vetor[dir])
			return meio;
		else
			return dir;
	else if(vetor[dir] >= vetor[meio])
		if(vetor[meio] >= vetor[esq])
			return meio;
		else
			return esq;
	else 
Felipe Pereira's avatar
Felipe Pereira committed
85
		return dir;
86 87
}

Ivo Júnior's avatar
Ivo Júnior committed
88 89 90 91
//Particiona o vetor em subvetores para o QuickSort
//vetor[] = vetor a ser particionado
//esq, dir = indices que delimitam os subvetores
//*posiçãoPivo = marca o indice da posição do pivo
Felipe Pereira's avatar
Felipe Pereira committed
92
void Particao(int vetor[], int esq, int dir, int *posicaoPivo)
93
{
Felipe Pereira's avatar
Felipe Pereira committed
94
	int i, j, pivo, aux, mdn;
95
	
Ivo Júnior's avatar
Ivo Júnior committed
96
	//VER RELATÓRIO[3]
Felipe Pereira's avatar
Felipe Pereira committed
97 98 99 100
	mdn = Mediana(vetor, esq, (esq + dir)/2, dir);
	aux = vetor[esq];
	vetor[esq] = vetor[mdn];
	vetor[mdn] = aux;
101
	pivo = vetor[esq];
102 103 104 105 106 107
	i = esq;
	j = dir;
	while(i < j)
	{
		while((vetor[i] <= pivo) && (i < dir))
			i++;
Felipe Pereira's avatar
Felipe Pereira committed
108
		while(vetor[j] > pivo)
109 110 111 112 113 114 115 116 117 118 119
			j--;
		if(i < j)
		{
			aux = vetor[j];
			vetor[j] = vetor[i];
			vetor[i] = aux;
		}
	}
	vetor[esq] = vetor[j];
	vetor[j] = pivo;
	*posicaoPivo = j;
120 121
}

Ivo Júnior's avatar
Ivo Júnior committed
122 123 124
//Algoritmo de ordenação QuickSort Recursivo
//vetor[] = vetor a ser ordenado
//esq, dir = indices que delimitam os subvetores
Felipe Pereira's avatar
Felipe Pereira committed
125
void QuickRec(int vetor[], int esq, int dir)
126
{
127 128 129 130 131 132 133 134
	int posicaoPivo;

	if(esq < dir)
	{
		Particao(vetor, esq, dir, &posicaoPivo);
		QuickRec(vetor, esq, posicaoPivo - 1);
		QuickRec(vetor, posicaoPivo + 1, dir);
	}
135 136
}

Ivo Júnior's avatar
Ivo Júnior committed
137 138 139 140
//Algoritmo de ordenação QuickSort Iterativo
//vetor[] = vetor a ser ordenado
//*pilha = pilha que contém os delimitadores dos subvetores
//esq, dir = indices que delimitam os subvetores
141
void QuickIt(int vetor[], tipoPilha *pilha, int esq, int dir)
142
{
143 144 145

    Push(pilha, esq, dir);
    while(!VaziaPilha(*pilha))
146 147 148 149
    {
        int posicaoPivo;
        tipoCoordenada auxC;

150
        auxC = Pop(pilha);
151 152
        
        Particao(vetor, auxC.cesq, auxC.cdir, &posicaoPivo);
153
        Push(pilha, auxC.cesq, posicaoPivo - 1);
154 155
		Push(pilha, posicaoPivo + 1, auxC.cdir); 
	}
156 157
}

Ivo Júnior's avatar
Ivo Júnior committed
158 159 160 161 162
//Algoritmo de Pesquisa Sequencial
//vetor[] = vetor contendo os todos os valores
//tam = tamanho do vetor
//elem = elemento a ser procurando no vetor
//VER RELATÓRIO[4]
Felipe Pereira's avatar
Felipe Pereira committed
163
int PesqSec(int vetor[], int tam, int elem)
164
{
165 166 167 168 169 170
	int i;

	i = tam;
	while(i > 0)
	{
		if(elem == vetor[i])
Ivo Júnior's avatar
Ivo Júnior committed
171
			return 1; 
172 173 174 175
		i--;
	}
	return 0;
}
176

Ivo Júnior's avatar
Ivo Júnior committed
177 178 179 180 181
//Algoritmo de Pesquisa Binária
//vetor[] = vetor contendo os todos os valores
//elem = elemento a ser procurando no vetor
//esq, dir = indices que delimitam os subvetores
//VER RELATÓRIO[4]
Felipe Pereira's avatar
Felipe Pereira committed
182
int PesqBin(int vetor[], int elem, int esq, int dir)
183 184 185 186 187 188 189 190 191 192 193 194
{
	int meio;
	
	if(esq > dir)
		return 0;
	meio = (esq + dir)/2;
	if(vetor[meio] == elem)
		return 1;
	if(elem > vetor[meio])
		return PesqBin(vetor, elem, meio+1, dir);
	else
		return PesqBin(vetor, elem, esq, meio-1);
195 196
}

Ivo Júnior's avatar
Ivo Júnior committed
197 198 199 200
//Função que calcula o tempo de execução de cada algoritmo de ordenação
//vetor[] = vetor contendo os todos os valores
//tam = tamanho do vetor
//numMax = valor máximo para os elementos do vetor
201
void TempoExecucao(int vetor[], int tam, int numMax)
202
{
203
	int i;
Felipe's avatar
Felipe committed
204 205
	clock_t inicio, fim; //VER RELATÓRIO[5]
	double tempo;
Ivo Júnior's avatar
Ivo Júnior committed
206 207
	
	//Inicio da mensagem para o Log
208 209 210 211 212 213 214
	ToLogFile("\n- Inicio do teste de tempo de execução com ");
	sprintf(buffer, "%d", TESTES);
	ToLogFile(buffer);
	ToLogFile(" vetores de ");
	sprintf(buffer, "%d", tam);
	ToLogFile(buffer);
	ToLogFile(" elementos.\n");
Ivo Júnior's avatar
Ivo Júnior committed
215
	//Fim da mensagem para o Log
216

Ivo Júnior's avatar
Ivo Júnior committed
217
	//Teste para o SelectSort
Felipe's avatar
Felipe committed
218
	inicio = clock();
219
	for(i = 1; i < TESTES; i++)
220 221 222 223
	{
		GeraVetor(vetorDes, tam, numMax);
		SelectSort(vetorDes, tam);
	}
Felipe's avatar
Felipe committed
224 225 226
	fim = clock();
	tempo = (double)(fim - inicio) / CLOCKS_PER_SEC;
	printf("\tTempo do SelectSort: %lf s\n", tempo);
227

Ivo Júnior's avatar
Ivo Júnior committed
228
	//Inicio da mensagem para o Log
229
	ToLogFile("\tTempo de execução total para SelectSort: ");
Felipe's avatar
Felipe committed
230
	sprintf(buffer, "%f", tempo);
231 232
	ToLogFile(buffer);
	ToLogFile("\n");
Ivo Júnior's avatar
Ivo Júnior committed
233 234 235
	//Fim da mensagem para o Log
	
	//Teste para o BubbleSort
Felipe's avatar
Felipe committed
236
	inicio = clock();
237
	for(i = 1; i < TESTES; i++)
238 239 240 241
	{
		GeraVetor(vetorDes, tam, numMax);
		BubbleSort(vetorDes, tam);
	}
Felipe's avatar
Felipe committed
242 243 244
	fim = clock();
	tempo = (double)(fim - inicio) / CLOCKS_PER_SEC;
	printf("\tTempo do BubbleSort: %lf s\n", tempo);
245

Ivo Júnior's avatar
Ivo Júnior committed
246
	//Inicio da mensagem para o Log
247
	ToLogFile("\tTempo de execução total para BubbleSort: ");
Felipe's avatar
Felipe committed
248
	sprintf(buffer, "%f", tempo);
249 250
	ToLogFile(buffer);
	ToLogFile("\n");
Ivo Júnior's avatar
Ivo Júnior committed
251
	//Fim da mensagem para o Log
252

Ivo Júnior's avatar
Ivo Júnior committed
253
	//Teste para o QuickSort Recursivo
Felipe's avatar
Felipe committed
254
	inicio = clock();
255
	for(i = 1; i < TESTES; i++)
256 257 258 259
	{
		GeraVetor(vetorDes, tam, numMax);
		QuickRec(vetorDes, 1, tam);
	}
Felipe's avatar
Felipe committed
260 261 262
	fim = clock();
	tempo = (double)(fim - inicio) / CLOCKS_PER_SEC;
	printf("\tTempo do QuickSort Recursivo: %lf s\n", tempo);
263

Ivo Júnior's avatar
Ivo Júnior committed
264
	//Inicio da mensagem para o Log
265
	ToLogFile("\tTempo de execução total para QuickSort Recursivo: ");
Felipe's avatar
Felipe committed
266
	sprintf(buffer, "%f", tempo);
267 268
	ToLogFile(buffer);
	ToLogFile("\n");
Ivo Júnior's avatar
Ivo Júnior committed
269
	//Fim da mensagem para o Log
270

Ivo Júnior's avatar
Ivo Júnior committed
271
	//Teste para o QuickSort Iterativo
Felipe's avatar
Felipe committed
272
	inicio = clock();
273
	tipoPilha pilha;
Felipe's avatar
Felipe committed
274
   	InicPilha(&pilha);
275
	for(i = 1; i < TESTES; i++)
276 277 278 279
	{
		GeraVetor(vetorDes, tam, numMax);
		QuickIt(vetorDes, &pilha, 1, tam);
	}
Felipe's avatar
Felipe committed
280 281 282
	fim = clock();
	tempo = (double)(fim - inicio) / CLOCKS_PER_SEC;
	printf("\tTempo do QuickSort Iterativo: %lf s\n", tempo);
283

Ivo Júnior's avatar
Ivo Júnior committed
284
	//Inicio da mensagem para o Log
285
	ToLogFile("\tTempo de execução total para QuickSort Iterativo: ");
Felipe's avatar
Felipe committed
286
	sprintf(buffer, "%f", tempo);
287 288
	ToLogFile(buffer);
	ToLogFile("\n");
Ivo Júnior's avatar
Ivo Júnior committed
289
	//Fim da mensagem para o Log
290 291
}

Ivo Júnior's avatar
Ivo Júnior committed
292 293 294 295 296
//Decide qual será o método de ordenação utilizado
//vetorDes[] = vetor a ser ordenado
//vetorOrd[] = vetor ordenado
//ordenação = inteiro que representa o tipo de ordenação a ser utilizado
//tam = tamanho do vetor
Felipe Pereira's avatar
Felipe Pereira committed
297
void OrdenaVetor(int vetorDes[], int vetorOrd[], int ordenacao, int tam)
298
{
299 300
	int i;
	
Ivo Júnior's avatar
Ivo Júnior committed
301
	//VER RELATÓRIO[6]
302 303 304
	for(i = 1; i <= tam; i++)
		vetorOrd[i] = vetorDes[i];

Ivo Júnior's avatar
Ivo Júnior committed
305
	//Inicio da mensagem para o Log
306
	ToLogFile("\n- Ordenando vetor com o algoritmo ");
Ivo Júnior's avatar
Ivo Júnior committed
307
	//Fim da mensagem para o Log
308

309 310
	switch(ordenacao)
	{
Ivo Júnior's avatar
Ivo Júnior committed
311 312
		case 1: //Ordenando com o SelectSort
			//Inicio da mensagem para o Log
313
			ToLogFile("SelectSort.\n");
Ivo Júnior's avatar
Ivo Júnior committed
314 315
			//Fim da mensagem para o Log

316 317
			SelectSort(vetorOrd, tam);
			break;
Ivo Júnior's avatar
Ivo Júnior committed
318 319 320

		case 2: //Ordenando com o BubbleSort
			//Inicio da mensagem para o Log
321
			ToLogFile("BubbleSort.\n");
Ivo Júnior's avatar
Ivo Júnior committed
322 323
			//Fim da mensagem para o Log
	
324 325
			BubbleSort(vetorOrd, tam);
			break;
Ivo Júnior's avatar
Ivo Júnior committed
326 327 328

		case 3: //Ordenando com o QuickSort Recursivo
			//Inicio da mensagem para o Log
329
			ToLogFile("QuickSort Recursivo.\n");
Ivo Júnior's avatar
Ivo Júnior committed
330 331
			//Fim da mensagem para o Log

Felipe Pereira's avatar
Felipe Pereira committed
332
			QuickRec(vetorOrd, 1, tam);
333
			break;
Ivo Júnior's avatar
Ivo Júnior committed
334 335 336 337 338
		case 4: //Ordenando com o QuickSort Iterativo
			//Inicio da mensagem para o Log
			ToLogFile("QuickSort Iterativo.\n");
			//Fim da mensagem para o Log

339 340 341 342
			tipoPilha pilha;
    	
   			InicPilha(&pilha);
			QuickIt(vetorOrd, &pilha, 1, tam);
343 344 345
			break;
	}
}
346

Ivo Júnior's avatar
Ivo Júnior committed
347 348 349 350
//Gera vetor de números aleatórios
//vetor[] = vetor que conterá os elementos aleatórios
//tam = tamanho do vetor
//numMax = valor máximo para elementos do vetor
Felipe Pereira's avatar
Felipe Pereira committed
351
void GeraVetor(int vetor[], int tam, int numMax)
352 353
{
	int i;
354

Ivo Júnior's avatar
Ivo Júnior committed
355
	srand(time(NULL)); //VER RELATÓRIO[7]
356 357
	for(i = 1; i <= tam; i++)
		vetor[i] = (rand() % numMax) + 1;
358 359
}

Ivo Júnior's avatar
Ivo Júnior committed
360 361 362 363 364
//Obtém os valores necessário para a geração do vetor
//vetorDes[] = vetor a ser ordenado
//vetorOrd[] = vetor ordenado
//*tam = tamanho do vetor
//*numMax = valor máximo para os elementos do vetor
Felipe Pereira's avatar
Felipe Pereira committed
365
void Setup(int vetorDes[], int vetorOrd[], int *tam, int *numMax)
366
{
367 368
    int ordenacao;

Ivo Júnior's avatar
Ivo Júnior committed
369
	//Inicio da mensagem para o Log
370
	ToLogFile("\n- Gerando nova configuração de vetores.\n");
Ivo Júnior's avatar
Ivo Júnior committed
371
	//Fim da mensagem para o Log
372

Ivo Júnior's avatar
Ivo Júnior committed
373 374
	//Obtém o tamanho do vetor
    printf("\n\tEntre com o tamanho máximo do vetor(4 - 10000): ");
375 376 377
    scanf("%d", tam);
    while((*tam < 4) || (*tam > MAXVETOR))
    {
Ivo Júnior's avatar
Ivo Júnior committed
378
        printf("\n\tO número nao está dentro do intervalo.\n\tEntre com o tamanho máximo do vetor(4 - 10000): ");
379 380
        scanf("%d", tam);
    };
381

Ivo Júnior's avatar
Ivo Júnior committed
382
	//Inicio da mensagem para o Log
Ivo Júnior's avatar
Ivo Júnior committed
383
	ToLogFile("\tNovo tamanho do vetor: ");
384 385 386
	sprintf(buffer, "%d", *tam);
	ToLogFile(buffer);
	ToLogFile("\n");
Ivo Júnior's avatar
Ivo Júnior committed
387
	//Fim da mensagem para o Log
388

Ivo Júnior's avatar
Ivo Júnior committed
389 390
	//Obtém o valor máximo dos elementos do vetor
    printf("\n\tEntre com um valor para os elementos do vetor(1 - 10000): ");
391
    scanf("%d", numMax);
Ivo Júnior's avatar
Ivo Júnior committed
392
    while((*numMax <= 0) || (*numMax > MAXVALOR))
393
    {
Ivo Júnior's avatar
Ivo Júnior committed
394
        printf("\n\tO número está fora do intervalo.\n\tEntre com um valor para os elementos do vetor(1 - 10000): ");
395 396 397
        scanf("%d", numMax);
    };

Ivo Júnior's avatar
Ivo Júnior committed
398
	//Inicio da mensagem para o Log
Ivo Júnior's avatar
Ivo Júnior committed
399
	ToLogFile("\tNovo valor máximo do vetor: ");
400 401 402
	sprintf(buffer, "%d", *numMax);
	ToLogFile(buffer);
	ToLogFile("\n");
Ivo Júnior's avatar
Ivo Júnior committed
403
	//Fim da mensagem para o Log
404

Ivo Júnior's avatar
Ivo Júnior committed
405
	//Gera o vetor dentro das especificações definidas pelo usuário
406
    GeraVetor(vetorDes, *tam, *numMax);
Ivo Júnior's avatar
Ivo Júnior committed
407 408

	//Inicio da mensagem para o Log
409
	ToLogFile("\tNovo vetor aleatório gerado.\n");
Ivo Júnior's avatar
Ivo Júnior committed
410
	//Fim da mensagem para o Log
411

Ivo Júnior's avatar
Ivo Júnior committed
412
	//Obtém qual método de ordenação utilizar
413
    printf("\n\tQual método de ordenação utilizar?\n\t1: SelectSort;\n\t2: BubbleSort;\n\t3: QuickSort Recursivo;\n\t4: QuickSort Iterativo;\n\t:");
414 415 416
    scanf("%d", &ordenacao);
    while((ordenacao < 1) || (ordenacao > 4))
    {
417 418
        printf("\n\tOpção inexistente.\n\t1: SelectSort;\n\t2: BubbleSort;\n\t3: QuickSort Recursivo;\n\t4: QuickSort Iterativo;\n\t:");
        scanf("%d", &ordenacao);
419 420
    };
    
Ivo Júnior's avatar
Ivo Júnior committed
421
	//Ordena o vetor no método escolhido pelo usuário
422
    OrdenaVetor(vetorDes, vetorOrd, ordenacao, *tam);
Ivo Júnior's avatar
Ivo Júnior committed
423 424
	
	system("clear");//VER RELATÓRIO[8]
425 426
}

Ivo Júnior's avatar
Ivo Júnior committed
427 428 429
//Imprime o vetor
//vetor[] = vetor a se imprimir
//tam = tamanho do vetor
Felipe Pereira's avatar
Felipe Pereira committed
430
void ImprimeVetor(int vetor[], int tam)
431 432
{
    int i;
433 434

    printf("\t[");
435
    for(i = 1; i <= tam - 1; i++)
436
	{
Ivo Júnior's avatar
Ivo Júnior committed
437
	   //Inicio da mensagem para o Log
438 439 440
       sprintf(buffer, "%d", vetor[i]);
	   ToLogFile(buffer);
	   ToLogFile(" ");
Ivo Júnior's avatar
Ivo Júnior committed
441
	   //Fim da mensagem para o Log
442 443 444 445
		
	   printf("%d ",vetor[i]);
	}    

Ivo Júnior's avatar
Ivo Júnior committed
446
	//Inicio da mensagem para o Log
447 448 449
	sprintf(buffer, "%d", vetor[i]);
	ToLogFile(buffer);
	ToLogFile("]\n");
Ivo Júnior's avatar
Ivo Júnior committed
450
	//Fim da mensagem para o Log
451 452

	printf("%d]\n", vetor[i]);
453 454
}

Ivo Júnior's avatar
Ivo Júnior committed
455
//Programa principal
456
main(){
457
    int tam, numMax, i, menu, acertosSeq, acertosBin;
458
    int vetorPalpite[4];
459 460
	char voltar;

Ivo Júnior's avatar
Ivo Júnior committed
461 462 463 464 465
	time_t t; //VER RELATÓRIO[9]
	t = time(NULL);

	//Inicio da mensagem para o Log
	if(access("log.txt", 0) == -1) //Testa se o arquivo log já existe, caso não, imprime o cabeçalho
466 467 468 469 470 471 472 473 474 475 476 477
	{	
		ToLogFile("#######################################################################\n");
		ToLogFile("## TP2 ALGORITMOS II 2015/2 - MEGA QUADRA                            ##\n");	
		ToLogFile("## Nomes: Ivo de Souza Bueno Júnior - GRR20154004                    ##\n");
		ToLogFile("##        Felipe Lopes Pereira      - GRR20153190                    ##\n");	
		ToLogFile("#######################################################################\n");
	} else 
		ToLogFile("-----------------------------------------------------------------------\n");

	ToLogFile("\n- Programa iniciado. - ");
	ToLogFile(asctime(localtime(&t)));
	ToLogFile("\n");
Ivo Júnior's avatar
Ivo Júnior committed
478 479
    //Fim da mensagem para o Log

480
	menu = 1;
481 482 483 484
	system("clear");
	puts("########################################################\n");
    puts("\t\tBEM VINDO Á MEGA QUADRA!\n");
	puts("########################################################");
485
    
486
    Setup(vetorDes, vetorOrd, &tam, &numMax); 
487 488

    while(menu){
489 490 491 492 493
		system("clear");
		puts("\n########################################################\n");
	    puts("\t\tBEM VINDO Á MEGA QUADRA!\n");
		puts("########################################################");
	    printf("\n\tMenu de opções:\n\t\t1 - Apostar;\n\t\t2 - Escolher Novo Vetor;\n\t\t3 - Imprimir Vetor Desordenado;\n\t\t4 - Imprimir Vetor Ordenado\n\t\t5 - Mede Tempo(40000)\n\t\t0 - Sair;\n\t\t:");
494 495 496 497
        scanf("%d", &menu);

        switch(menu)
        {
Ivo Júnior's avatar
Ivo Júnior committed
498
            case 0: //Sair do programa
499
				ToLogFile("\n- Programa encerrado.\n");
500 501
                break;

Ivo Júnior's avatar
Ivo Júnior committed
502
            case 1: //Apostar
503 504 505
			   system("clear");
               printf("\n\tDigite sua aposta(4 números entre 1 e %d), e BOA SORTE!\n\t:", numMax);

Ivo Júnior's avatar
Ivo Júnior committed
506
			   //Inicio da mensagem para o Log
507
			   ToLogFile("\n- Iniciando aposta. Jogador entrará com 4 números.\n");
Ivo Júnior's avatar
Ivo Júnior committed
508 509
               //Fim da mensagem para o Log

510 511 512
               acertosSeq = 0;
               acertosBin = 0;

Ivo Júnior's avatar
Ivo Júnior committed
513
			   //Obtém os valores dos palpites do jogador e guarda no "vetorPalpite"
514 515
               for(i = 0; i < 4; i++)
               {
516
                    scanf("%d", &vetorPalpite[i]);
517 518
                    while((vetorPalpite[i] < 1) || (vetorPalpite[i] > numMax))
                    {
Ivo Júnior's avatar
Ivo Júnior committed
519
			   			//Inicio da mensagem para o Log
520
						ToLogFile("\t## ERRO: Número está fora do intervalo. ##\n");
Ivo Júnior's avatar
Ivo Júnior committed
521
						//Fim da mensagem para o Log
522 523

                        printf("\n\tO número não está dentro do intervalo(1 - %d). Digite sua aposta novamente: ", numMax);
524
                        scanf("%d", &vetorPalpite[i]);
525
                    }
526
					
Ivo Júnior's avatar
Ivo Júnior committed
527
			   		//Inicio da mensagem para o Log
528 529 530
					ToLogFile("\t");
					sprintf(buffer, "%d", vetorPalpite[i]);
	   				ToLogFile(buffer);
Ivo Júnior's avatar
Ivo Júnior committed
531 532
	   				ToLogFile("\n");
					//Fim da mensagem para o Log					
533
                    
Ivo Júnior's avatar
Ivo Júnior committed
534
					//Acertos aumentam de acordo com o número de elementos encontrados no vetor
535 536
                    acertosSeq += PesqSec(vetorDes, tam, vetorPalpite[i]);
                    acertosBin += PesqBin(vetorOrd, vetorPalpite[i], 1, tam);
537 538 539
               }
               
               if((acertosBin == 4) && (acertosSeq == 4))
540 541 542 543 544
			   {
				   puts("###############################################################\n");
                   printf("\tGANHOU! Parabéns! Você acertou os 4 números! :D\n");
				   puts("\n###############################################################\n");
			   }
545
               else
546 547
                   printf("\n\tVocê acertou %d números. Tente outra vez... :(\n", acertosSeq);

Ivo Júnior's avatar
Ivo Júnior committed
548
			   //Inicio da mensagem para o Log
549 550 551 552
			   ToLogFile("\n\tO jogador acertou ");
			   sprintf(buffer, "%d", acertosBin);
	   		   ToLogFile(buffer);
	   		   ToLogFile(" números.\n");
Ivo Júnior's avatar
Ivo Júnior committed
553
			   //Fim da mensagem para o Log
554 555 556 557

			   printf("Pressione enter para voltar: ");
			   Limpa();
			   scanf("%c", &voltar);
558 559
               break;
               
Ivo Júnior's avatar
Ivo Júnior committed
560
            case 2: //Setup
561 562
			   system("clear");
			   puts("\n########################################################\n");
563
               Setup(vetorDes, vetorOrd, &tam, &numMax);
564
			   puts("\n########################################################\n");
565 566
               break;

Ivo Júnior's avatar
Ivo Júnior committed
567
            case 3://Imprime desordenado
568 569
			   system("clear");

Ivo Júnior's avatar
Ivo Júnior committed
570 571 572
			   //Inicio da mensagem para o Log
			   ToLogFile("\n- Imprimindo vetor desordenado:\n\t[");
			   //Fim da mensagem para o Log
573 574

			   puts("\n########################################################\n");
575
               ImprimeVetor(vetorDes, tam);
576 577 578 579
			   puts("\n########################################################\n");
			   printf("Pressione enter para voltar: ");
			   Limpa();
			   scanf("%c", &voltar);
580 581
               break;

Ivo Júnior's avatar
Ivo Júnior committed
582
            case 4://Imprime Ordenado
583 584
			   system("clear");

Ivo Júnior's avatar
Ivo Júnior committed
585 586 587
			   //Inicio da mensagem para o Log
			   ToLogFile("\n- Imprimindo vetor ordenado:\n\t[");
			   //Fim da mensagem para o Log	
588 589

			   puts("\n########################################################\n");
590
               ImprimeVetor(vetorOrd, tam);
591 592 593 594
			   puts("\n########################################################\n");
			   printf("Pressione enter para voltar: ");
			   Limpa();
			   scanf("%c", &voltar);
595 596
               break;

Ivo Júnior's avatar
Ivo Júnior committed
597
            case 5://Calcula tempo de execução
598 599
			   system("clear");
			   puts("\n########################################################\n");
600
               TempoExecucao(vetorOrd, tam, numMax);
601 602 603 604
			   puts("\n########################################################\n");
			   printf("Pressione enter para voltar: ");
			   Limpa();
			   scanf("%c", &voltar);
605
		break;
606 607 608
        }
    }
}