Commit 72415816 authored by Ivo Júnior's avatar Ivo Júnior

Adicionado ToLogFile e printf's modificados para melhorar a apresentacao do programa

parent 7d9758ca
#######################################################################
## TP2 ALGORITMOS II 2015/2 - MEGA QUADRA ##
## Nomes: Ivo de Souza Bueno Júnior - GRR20154004 ##
## Felipe Lopes Pereira - GRR20153190 ##
#######################################################################
- Programa iniciado.
- Gerando nova configuração de vetores.
Novo tamanho máximo do vetor: 15
Novo tamanho máximo do vetor: 10
Novo vetor aleatório gerado.
- Ordenando vetor com o algoritmo SelectSort.
- Iniciando aposta. Jogador entrará com 4 números.
1
2
## ERRO: Número está fora do intervalo. ##
10
## ERRO: Número está fora do intervalo. ##
10
O jogador acertou 2 números.
- Imprimindo vetor desordenado:
[9 2 5 9 2 5 5 1 6 9 5 4 1 1 7]
- Imprimindo vetor ordenado:
[1 1 1 2 2 4 5 5 5 5 6 7 9 9 9]
- Inicio do teste de tempo de execução com 10000 vetores de 15 elementos.
Tempo de execução total para SelectSort: 0.015958
Tempo de execução total para BubbleSort: 0.016633
Tempo de execução total para QuickSort Recursivo: 0.015893
Tempo de execução total para QuickSort Iterativo: 1.017874
- Iniciando aposta. Jogador entrará com 4 números.
1
1
1
2
O jogador acertou 4 números.
- Gerando nova configuração de vetores.
Novo tamanho máximo do vetor: 5
Novo tamanho máximo do vetor: 10
Novo vetor aleatório gerado.
- Ordenando vetor com o algoritmo QuickSort Recursivo.
- Inicio do teste de tempo de execução com 10000 vetores de 5 elementos.
Tempo de execução total para SelectSort: 0.036595
Tempo de execução total para BubbleSort: 0.027569
Tempo de execução total para QuickSort Recursivo: 0.016921
Tempo de execução total para QuickSort Iterativo: 0.256090
- Programa encerrado.
-----------------------------------------------------------------------
- Programa iniciado.
- Gerando nova configuração de vetores.
Novo tamanho máximo do vetor: 10
Novo tamanho máximo do vetor: 15
Novo vetor aleatório gerado.
- Ordenando vetor com o algoritmo QuickSort Iterativo.
- Inicio do teste de tempo de execução com 10000 vetores de 10 elementos.
Tempo de execução total para SelectSort: 0.028405
Tempo de execução total para BubbleSort: 0.015059
Tempo de execução total para QuickSort Recursivo: 0.015011
Tempo de execução total para QuickSort Iterativo: 0.513884
- Programa encerrado.
-----------------------------------------------------------------------
- Programa iniciado. - Wed Dec 31 21:00:00 1969
- Gerando nova configuração de vetores.
Novo tamanho máximo do vetor: 15
Novo tamanho máximo do vetor: 15
Novo vetor aleatório gerado.
- Ordenando vetor com o algoritmo QuickSort Iterativo.
- Imprimindo vetor desordenado:
[1 3 11 15 14 8 9 2 15 1 4 2 2 5 2]
- Iniciando aposta. Jogador entrará com 4 números.
1
2
3
4
O jogador acertou 4 números.
- Imprimindo vetor ordenado:
[1 1 2 2 2 2 3 4 5 8 9 11 14 15 15]
- Programa encerrado.
#include"loteria.h"
void Limpa()
{
char c;
while((c = getchar()) != '\n' && c != EOF);
}
void ToLogFile(char string[MAXSTR])
{
FILE *log = fopen("log.txt", "a+");
fprintf(log, "%s", string);
fclose(log);
}
void SelectSort(int vetor[], int tam)
{
int i, j, min, aux;
......@@ -50,8 +63,6 @@ int Mediana(int vetor[], int esq, int meio, int dir)
return esq;
else
return dir;
printf("bugou");
return meio;
}
void Particao(int vetor[], int esq, int dir, int *posicaoPivo)
......@@ -62,7 +73,7 @@ void Particao(int vetor[], int esq, int dir, int *posicaoPivo)
aux = vetor[esq];
vetor[esq] = vetor[mdn];
vetor[mdn] = aux;
pivo = vetor[esq]; //Mediana(vetor[esq], vetor[(esq + dir)/2], vetor[dir]);
pivo = vetor[esq];
i = esq;
j = dir;
while(i < j)
......@@ -108,8 +119,8 @@ void QuickIt(int vetor[], tipoPilha *pilha, int esq, int dir)
Particao(vetor, auxC.cesq, auxC.cdir, &posicaoPivo);
Push(pilha, auxC.cesq, posicaoPivo - 1);
Push(pilha, posicaoPivo + 1, auxC.cdir);
}
Push(pilha, posicaoPivo + 1, auxC.cdir);
}
}
int PesqSec(int vetor[], int tam, int elem)
......@@ -146,56 +157,77 @@ void TempoExecucao(int vetor[], int tam, int numMax)
int i;
clock_t begin, end;
double time_spent;
i = 1;
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");
begin = clock();
while(i <= 10000)
for(i = 1; i < TESTES; i++)
{
GeraVetor(vetorDes, tam, numMax);
SelectSort(vetorDes, tam);
i++;
}
end = clock();
time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
printf("tempo do SelectSort: %lf\n", time_spent);
printf("\tTempo do SelectSort: %lf\n", time_spent);
ToLogFile("\tTempo de execução total para SelectSort: ");
sprintf(buffer, "%f", time_spent);
ToLogFile(buffer);
ToLogFile("\n");
i = 1;
begin = clock();
while(i <= 10000)
for(i = 1; i < TESTES; i++)
{
GeraVetor(vetorDes, tam, numMax);
BubbleSort(vetorDes, tam);
i++;
}
end = clock();
time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
printf("tempo do BubbleSort: %lf\n", time_spent);
printf("\tTempo do BubbleSort: %lf\n", time_spent);
ToLogFile("\tTempo de execução total para BubbleSort: ");
sprintf(buffer, "%f", time_spent);
ToLogFile(buffer);
ToLogFile("\n");
i = 1;
begin = clock();
while(i <= 10000)
for(i = 1; i < TESTES; i++)
{
GeraVetor(vetorDes, tam, numMax);
QuickRec(vetorDes, 1, tam);
i++;
}
end = clock();
time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
printf("tempo do QuickRec: %lf\n", time_spent);
printf("\tTempo do QuickSort Recursivo: %lf\n", time_spent);
ToLogFile("\tTempo de execução total para QuickSort Recursivo: ");
sprintf(buffer, "%f", time_spent);
ToLogFile(buffer);
ToLogFile("\n");
i = 1;
begin = clock();
tipoPilha pilha;
InicPilha(&pilha);
while(i <= 10000)
InicPilha(&pilha);
for(i = 1; i < TESTES; i++)
{
GeraVetor(vetorDes, tam, numMax);
QuickIt(vetorDes, &pilha, 1, tam);
i++;
}
end = clock();
time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
printf("tempo do QuickIt: %lf\n", time_spent);
printf("\tTempo do QuickSort Iterativo: %lf\n", time_spent);
ToLogFile("\tTempo de execução total para QuickSort Iterativo: ");
sprintf(buffer, "%f", time_spent);
ToLogFile(buffer);
ToLogFile("\n");
}
void OrdenaVetor(int vetorDes[], int vetorOrd[], int ordenacao, int tam)
......@@ -205,21 +237,27 @@ void OrdenaVetor(int vetorDes[], int vetorOrd[], int ordenacao, int tam)
for(i = 1; i <= tam; i++)
vetorOrd[i] = vetorDes[i];
ToLogFile("\n- Ordenando vetor com o algoritmo ");
switch(ordenacao)
{
case 1:
ToLogFile("SelectSort.\n");
SelectSort(vetorOrd, tam);
break;
case 2:
ToLogFile("BubbleSort.\n");
BubbleSort(vetorOrd, tam);
break;
case 3:
ToLogFile("QuickSort Recursivo.\n");
QuickRec(vetorOrd, 1, tam);
break;
case 4: ;
tipoPilha pilha;
InicPilha(&pilha);
ToLogFile("QuickSort Iterativo.\n");
QuickIt(vetorOrd, &pilha, 1, tam);
break;
}
......@@ -228,6 +266,7 @@ void OrdenaVetor(int vetorDes[], int vetorOrd[], int ordenacao, int tam)
void GeraVetor(int vetor[], int tam, int numMax)
{
int i;
srand(time(NULL));
for(i = 1; i <= tam; i++)
vetor[i] = (rand() % numMax) + 1;
......@@ -237,64 +276,117 @@ void Setup(int vetorDes[], int vetorOrd[], int *tam, int *numMax)
{
int ordenacao;
printf("Entre com o tamanho máximo do vetor(4 - 16384): ");
ToLogFile("\n- Gerando nova configuração de vetores.\n");
printf("\n\tEntre com o tamanho máximo do vetor(4 - 16384): ");
scanf("%d", tam);
while((*tam < 4) || (*tam > MAXVETOR))
{
printf("O número nao está dentro do intervalo. Entre com o tamanho máximo do vetor(4 - 16384): ");
printf("\n\tO número nao está dentro do intervalo.\n\tEntre com o tamanho máximo do vetor(4 - 16384): ");
scanf("%d", tam);
};
printf("Entre com um valor máximo positivo, diferente de zero, para os elementos do vetor: ");
ToLogFile("\tNovo tamanho máximo do vetor: ");
sprintf(buffer, "%d", *tam);
ToLogFile(buffer);
ToLogFile("\n");
printf("\n\tEntre com um valor máximo positivo,\n\tdiferente de zero, para os elementos do vetor: ");
scanf("%d", numMax);
while(*numMax <= 0)
{
printf("O número não é positivo ou diferente de zero. Entre com um valor máximo positivo, diferente de zero, para os elementos do vetor: ");
printf("\n\tO número não é positivo ou diferente de zero.\n\tEntre com um valor máximo positivo, diferente de zero,\n\tpara os elementos do vetor: ");
scanf("%d", numMax);
};
ToLogFile("\tNovo tamanho máximo do vetor: ");
sprintf(buffer, "%d", *numMax);
ToLogFile(buffer);
ToLogFile("\n");
GeraVetor(vetorDes, *tam, *numMax);
ToLogFile("\tNovo vetor aleatório gerado.\n");
printf("Qual método de ordenação utilizar?\n\t1: SelectSort;\n\t2: BubbleSort;\n\t3: QuickSort Recursivo;\n\t4: QuickSort Iterativo;\n");
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:");
scanf("%d", &ordenacao);
while((ordenacao < 1) || (ordenacao > 4))
{
printf("Opção inexistente.\n\t1: SelectSort;\t2: BubbleSort;\t3: QuickSort Recursivo;\t4: QuickSort Iterativo;\n");
scanf("%d", numMax);
printf("\n\tOpção inexistente.\n\t1: SelectSort;\n\t2: BubbleSort;\n\t3: QuickSort Recursivo;\n\t4: QuickSort Iterativo;\n\t:");
scanf("%d", &ordenacao);
};
OrdenaVetor(vetorDes, vetorOrd, ordenacao, *tam);
system("clear");
}
void ImprimeVetor(int vetor[], int tam)
{
int i;
printf("[");
printf("\t[");
for(i = 1; i <= tam - 1; i++)
printf("%d ",vetor[i]);
printf("%d]\n", vetor[i]);
{
sprintf(buffer, "%d", vetor[i]);
ToLogFile(buffer);
ToLogFile(" ");
printf("%d ",vetor[i]);
}
sprintf(buffer, "%d", vetor[i]);
ToLogFile(buffer);
ToLogFile("]\n");
printf("%d]\n", vetor[i]);
}
main(){
int tam, numMax, i, menu, acertosSeq, acertosBin;
int vetorPalpite[4];
char voltar;
time_t t;
if(access("log.txt", 0) == -1)
{
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");
menu = 1;
printf("\t\tBEM VINDO Á MEGA QUADRA!\n");
system("clear");
puts("########################################################\n");
puts("\t\tBEM VINDO Á MEGA QUADRA!\n");
puts("########################################################");
Setup(vetorDes, vetorOrd, &tam, &numMax);
while(menu){
printf("\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;");
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:");
scanf("%d", &menu);
switch(menu)
{
case 0:
ToLogFile("\n- Programa encerrado.\n");
break;
case 1:
printf("Digite sua aposta(4 números entre 1 e %d), e BOA SORTE!\n", numMax);
system("clear");
printf("\n\tDigite sua aposta(4 números entre 1 e %d), e BOA SORTE!\n\t:", numMax);
ToLogFile("\n- Iniciando aposta. Jogador entrará com 4 números.\n");
acertosSeq = 0;
acertosBin = 0;
......@@ -304,34 +396,81 @@ main(){
scanf("%d", &vetorPalpite[i]);
while((vetorPalpite[i] < 1) || (vetorPalpite[i] > numMax))
{
printf("O número não está dentro do intervalo(1 - %d). Digite sua aposta novamente: ", numMax);
ToLogFile("\t## ERRO: Número está fora do intervalo. ##\n");
printf("\n\tO número não está dentro do intervalo(1 - %d). Digite sua aposta novamente: ", numMax);
scanf("%d", &vetorPalpite[i]);
}
ToLogFile("\t");
sprintf(buffer, "%d", vetorPalpite[i]);
ToLogFile(buffer);
ToLogFile("\n");
acertosSeq += PesqSec(vetorDes, tam, vetorPalpite[i]);
acertosBin += PesqBin(vetorOrd, vetorPalpite[i], 1, tam);
}
if((acertosBin == 4) && (acertosSeq == 4))
printf("GANHOU! Parabéns! Você acertou os 4 números! :D");
{
puts("###############################################################\n");
printf("\tGANHOU! Parabéns! Você acertou os 4 números! :D\n");
puts("\n###############################################################\n");
}
else
printf("Você acertou %d números. Tente outra vez... :(", acertosSeq);
printf("\n\tVocê acertou %d números. Tente outra vez... :(\n", acertosSeq);
ToLogFile("\n\tO jogador acertou ");
sprintf(buffer, "%d", acertosBin);
ToLogFile(buffer);
ToLogFile(" números.\n");
printf("Pressione enter para voltar: ");
Limpa();
scanf("%c", &voltar);
break;
case 2:
system("clear");
puts("\n########################################################\n");
Setup(vetorDes, vetorOrd, &tam, &numMax);
puts("\n########################################################\n");
break;
case 3:
system("clear");
ToLogFile("\n- Imprimindo vetor desordenado:\n\t[");
puts("\n########################################################\n");
ImprimeVetor(vetorDes, tam);
puts("\n########################################################\n");
printf("Pressione enter para voltar: ");
Limpa();
scanf("%c", &voltar);
break;
case 4:
system("clear");
ToLogFile("\n- Imprimindo vetor ordenado:\n\t[");
puts("\n########################################################\n");
ImprimeVetor(vetorOrd, tam);
puts("\n########################################################\n");
printf("Pressione enter para voltar: ");
Limpa();
scanf("%c", &voltar);
break;
case 5:
system("clear");
puts("\n########################################################\n");
TempoExecucao(vetorOrd, tam, numMax);
puts("\n########################################################\n");
printf("Pressione enter para voltar: ");
Limpa();
scanf("%c", &voltar);
break;
}
}
......
......@@ -7,7 +7,11 @@
#include"pilha.h"
#define MAXVETOR 16384
#define TESTES 10000
#define MAXSTR 32
int vetorDes[MAXVETOR], vetorOrd[MAXVETOR];
char buffer[32];
void SelectSort(int vetor[], int tam);
void BubbleSort(int vetor[], int tam);
......@@ -17,6 +21,8 @@ void QuickIt(int vetor[], tipoPilha *pilha ,int esq, int dir);
int PesqSec(int vetor[], int tam, int elem);
int PesqBin(int vetor[], int elem, int esq, int dir);
void Limpa();
void ToLogFile(char string[MAXSTR]);
int Mediana(int vetor[], int esq, int meio, int dir);
void Particao(int vetor[], int esq, int dir, int *posicaoPivo);
void TempoExecucao(int vetor[], int tam, int numMax);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment