Commit 61b7599f authored by Felipe Pereira's avatar Felipe Pereira

Adicionado funcoes de busca e ordenacao

parent df1ef8a6
#include<stdio.h>
#define 16384
#include<stdlib.h>
#include<time.h>
#define MAXVETOR 16384
int vetorDes[MAXVETOR], int vetorOrd[MAXVETOR];
int vetorDes[MAXVETOR], vetorOrd[MAXVETOR];
void OrdenaVetor(int vetorDes[MAXVETOR], int vetorOrd[MAXVETOR], int ordenacao, int tam)
void SelectSort(int vetor[MAXVETOR], int tam)
{
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;
}
}
void GeraVetor(int vetor[MAXVETOR], int tam, int numMax)
void BubbleSort(int vetor[MAXVETOR], int tam)
{
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;
}
}
}
void Setup(int vetorDes[MAXVETOR], int vetorOrd[MAXVETOR], int tam, int numMax)
int Mediana(int vetor[MAXVETOR], int esq, int meio, int dir)
{
int ordenacao;
printf("Entre com o tamanho máximo do vetor(1 - 16384): ");
scanf("%d", &tam);
while((tam < 1) || (tam > MAXVETOR))
{
printf("O número nao está dentro do intervalo. Entre com o tamanho máximo do vetor(1 - 16384): ");
scanf("%d", &tam);
};
printf("Entre com um valor máximo positivo, diferente 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: ");
scanf("%d", &numMax);
};
GeraVetor(vetorDes, tam, numMax);
printf("Qual método de ordenação utilizar?\n\t1: SelectSort;\t2: BubbleSort;\t3: QuickSort Recursivo;\t4: QuickSort Iterativo;\n");
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);
};
OrdenaVetor(vetorDes, vetorOrd, ordenacao, tam);
/*int i, vetorAux[4];
vetorAux[1] = vetor[esq];
vetorAux[2] = vetor[meio];
vetorAux[3] = vetor[dir];
BubbleSort(vetorAux, 4);
if(vetorAux[2] == vetor[esq])
return esq;
else if(vetorAux[2] == vetor[meio])
return meio;
else
return dir;*/
return esq;
}
void SelectSort(int vetorDes[MAXVETOR], int vetorOrd[MAXVETOR], int tam)
void Particao(int vetor[MAXVETOR], int esq, int dir, int *posicaoPivo)
{
int i, j, pivo, aux;
pivo = Mediana(vetor, esq, dir/2, dir);
i = esq;
j = dir;
while(i < j)
{
while((vetor[i] <= pivo) && (i < dir))
i++;
while(vetor[j] >= pivo)
j--;
if(i < j)
{
aux = vetor[j];
vetor[j] = vetor[i];
vetor[i] = aux;
}
}
vetor[esq] = vetor[j];
vetor[j] = pivo;
*posicaoPivo = j;
}
void BubbleSort(int vetorDes[MAXVETOR], int vetorOrd[MAXVETOR], int tam)
void QuickRec(int vetor[MAXVETOR], int esq, int dir)
{
int posicaoPivo;
if(esq < dir)
{
Particao(vetor, esq, dir, &posicaoPivo);
QuickRec(vetor, esq, posicaoPivo - 1);
QuickRec(vetor, posicaoPivo + 1, dir);
}
}
void QuickRec()
void QuickIt()
{
}
void QuickIt(int vetorDes[MAXVETOR], int vetorOrd[MAXVETOR], int tam)
int PesqSec(int vetor[MAXVETOR], int tam, int elem)
{
int i;
i = tam;
while(i > 0)
{
if(elem == vetor[i])
return 1;
i--;
}
return 0;
}
int PesqBin(int vetor[MAXVETOR], int elem, int esq, int dir)
{
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);
}
int PesqSec(int vetor[MAXVETOR], int elem)
void TempoExecucao()
{
}
int PesqBin()
void OrdenaVetor(int vetorDes[MAXVETOR], int vetorOrd[MAXVETOR], int ordenacao, int tam)
{
int i;
for(i = 1; i <= tam; i++)
vetorOrd[i] = vetorDes[i];
switch(ordenacao)
{
case 1:
SelectSort(vetorOrd, tam);
break;
case 2:
BubbleSort(vetorOrd, tam);
break;
case 3:
QuickRec(vetorOrd, 1, tam - 1);
break;
case 4:
QuickIt();
break;
}
}
void GeraVetor(int vetor[MAXVETOR], int tam, int numMax)
{
int i;
srand(time(NULL));
for(i = 1; i <= tam; i++)
vetor[i] = (rand() % numMax) + 1;
}
void TempoExecucao()
void Setup(int vetorDes[MAXVETOR], int vetorOrd[MAXVETOR], int *tam, int *numMax)
{
int ordenacao;
printf("Entre 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): ");
scanf("%d", tam);
};
printf("Entre com um valor máximo positivo, diferente 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: ");
scanf("%d", numMax);
};
GeraVetor(vetorDes, *tam, *numMax);
printf("Qual método de ordenação utilizar?\n\t1: SelectSort;\n\t2: BubbleSort;\n\t3: QuickSort Recursivo;\n\t4: QuickSort Iterativo;\n");
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);
};
OrdenaVetor(vetorDes, vetorOrd, ordenacao, *tam);
}
void ImprimeVetor(int vetor[MAXVETOR], int tam)
{
int i;
printf("[");
for(i = 0; i < tam - 1; i++)
for(i = 1; i <= tam - 1; i++)
printf("%d ",vetor[i]);
printf("%d]\n", vetor[i]);
}
main(){
int tam, numMax, i;
int tam, numMax, i, menu, acertosSeq, acertosBin;
int vetorPalpite[4];
printf("\t\tBEM VINDO Á MEGA QUADRA!\n\tSetup incial:\n");
menu = 1;
printf("\t\tBEM VINDO Á MEGA QUADRA!\n");
Setup(vetorDes, vetorOrd, tam, numMax);
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;");
......@@ -115,25 +234,25 @@ main(){
for(i = 0; i < 4; i++)
{
scanf("%d", vetorPalpite[i]);
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);
scanf("%d", vetorPalpite[i]);
scanf("%d", &vetorPalpite[i]);
}
acertosSeq += PesqSec(vetorDes, vetorPalpite[i]);
acertosBin += PesqBin(vetorOrd, vetorPalpite[i]);
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");
else
printf("Você acertou %d números. Tente outra vez... :(");
printf("Você acertou %d números. Tente outra vez... :(", acertosSeq);
break;
case 2:
Setup(vetorDes, vetorOrd, tam, numMax);
Setup(vetorDes, vetorOrd, &tam, &numMax);
break;
case 3:
......@@ -146,6 +265,7 @@ main(){
case 5:
/*TODO*/
break;
}
}
}
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