diff --git a/Makefile b/Makefile index 215750d1dee1a720d4835fd063f411e5c52be928..c9a7d28ed67b66b953dfc5f5518357527bd31909 100644 --- a/Makefile +++ b/Makefile @@ -8,3 +8,6 @@ libbusca.a: busca.o busca.o: gcc -c busca.c -o busca.o + +clean: + rm *.o *.a *.exe diff --git a/Quadra.c b/Quadra.c index 010ebc99efee390956335907b6f33934a3d11aae..ca87919335fbda6e451fda95f81bcbb2e930a37a 100644 --- a/Quadra.c +++ b/Quadra.c @@ -1,49 +1,48 @@ #include "busca.h" #include <time.h> -int sorteia(int min, int max) -{ - int r; - srand(time(NULL)); - r = min + (rand() % max); - return r; -} - -void vetSort(int *vet, int Tam, int max) +void vetSort(int *vet[], int Tam, int max) { int i; - vet = (int *) malloc ((Tam+1) * sizeof(int)); + srand(time(NULL)); + *vet = (int *) malloc ((Tam+1) * sizeof(int)); for (i = 1; i <= Tam; i++) - vet[i] = sorteia(1, max); + { + (*vet)[i] = 1 + (rand() % max); + printf("Valor %d: %d\n", i, (*vet)[i]); + } } -void vetcpy(int *vet, int *vet_ord, int Tam) +void vetcpy(int vet[], int *vet_ord[], int Tam) { int i; - vet_ord = (int *) malloc ((Tam + 1) * sizeof(int)); + *vet_ord = (int *) malloc ((Tam + 1) * sizeof(int)); for (i = 1; i <= Tam; i++) - vet_ord[i] = vet[i]; + (*vet_ord[i]) = vet[i]; } void imprime (int *vet, int N) { int i; - for (i = 1; i <= N; i++) - { + printf("Entrou\nTamanho %d\n", N); + for (i = 1; i <= 5; i++) + printf("%d ", i); + /*{ + printf("Interacao %d: ", i); if ((i % 10) == 0) printf ("\n\n"); printf ("%d ", vet[i]); - } + }*/ } -void jogar (int *vet, int *vet_ord, int N) +void jogar (int *vet[], int *vet_ord[], int N) { int x, i = 0, j; printf ("Entre com a Quadra de valores: "); for (j = 0; j < 4; j++) { scanf ("%d", &x); - if ((pesqseq(vet, x, N) != 0) || (pesqbin(vet_ord, x, N) != 0)) + if ((pesqseq(*vet, x, N) != 0) || (pesqbin(*vet_ord, x, N) != 0)) i++; } if (i == 4) @@ -93,12 +92,13 @@ int main (void) { int Tam, max, *vet, *vet_ord; int menu; - printf ("Entre com tamanho de vetor: ") + printf ("Entre com tamanho de vetor: "); scanf ("%d", &Tam); printf ("Entre com valor maximo dos numeros aleatorios: "); scanf ("%d", &max); - vetSort(vet, Tam, max); - vetcpy(vet, vet_ord, Tam); + vetSort(&vet, Tam, max); + imprime(vet, Tam); + vetcpy(vet, &vet_ord, Tam); QuickSort_it(vet_ord, Tam); printf ("\nMenu:\n"); menu = 1; @@ -116,7 +116,7 @@ int main (void) imprime (vet_ord, Tam); break; case 4: - jogar (vet, vet_ord, Tam); + jogar (&vet, &vet_ord, Tam); break; case 5: jornada(Tam, max); diff --git a/Quadra.exe b/Quadra.exe new file mode 100755 index 0000000000000000000000000000000000000000..faec9f4aeaf3876c09adeba29ac01cf7af5457d2 Binary files /dev/null and b/Quadra.exe differ diff --git a/busca.c b/busca.c index 37a3c5ac74e7d1353aaf767ffe70e58af36e9fde..fcce726928f3ce5755e0c8776f46df1debaa4f7a 100644 --- a/busca.c +++ b/busca.c @@ -65,11 +65,13 @@ void BubbleSort (int *vet, int N) int mediana (int *vet, int esq, int dir) { int med = (esq+dir)/2; - if (vet[esq] <= vet[dir]) + int E = vet[esq], D = vet[dir], M = vet[med]; + printf("esq = %d, dir = %d, med = %d\n", E, D, M); + if (E <= D) { - if (vet[esq] <= vet[med]) //descobrimos se esq é o menor elemento ou não + if (E <= M) //descobrimos se esq é o menor elemento ou não { - if (vet[med] <= vet[dir]) //se esq é menor elemento, o segundo menor é mediana + if (M <= D) //se esq é menor elemento, o segundo menor é mediana return med; else return dir; @@ -79,9 +81,9 @@ int mediana (int *vet, int esq, int dir) } else //ja sabemos que esq não é menor elemento, tentamos dir { - if (vet[dir] <= vet[med]) + if (D <= M) { - if (vet[med] <= vet[esq]) + if (M <= E) return med; else return esq; @@ -93,7 +95,10 @@ int mediana (int *vet, int esq, int dir) void Particao (int *vet, int esq, int dir, int *pos_pivo) { - int i, j, aux, pivo, med = mediana(vet, esq, dir); + int i, j, aux, pivo, med; + printf("Entrou!\n"); + med = mediana(vet, esq, dir); + printf("Passou!\n"); pivo = vet[med]; vet[med] = vet[esq]; vet[esq] = pivo; @@ -115,6 +120,7 @@ void Particao (int *vet, int esq, int dir, int *pos_pivo) vet[esq] = vet[j]; vet[j] = pivo; *pos_pivo = j; + printf("passou!\n"); } void QuickSort_rec (int *vet, int esq, int dir) @@ -123,8 +129,8 @@ void QuickSort_rec (int *vet, int esq, int dir) if (esq < dir) { Particao(vet, esq, dir, &pos_pivo); - QuickSort(vet, esq, pos_pivo - 1); - QuickSort(vet, pos_pivo + 1, dir); + QuickSort_rec(vet, esq, pos_pivo - 1); + QuickSort_rec(vet, pos_pivo + 1, dir); } } @@ -148,7 +154,7 @@ void QuickSort_it (int *vet, int N) i++; pilha_esq[i] = esq; pilha_dir[i] = pos_pivo - 1; - i++ + i++; pilha_esq[i] = pos_pivo + 1; pilha_dir[i] = dir; } diff --git a/busca.o b/busca.o new file mode 100644 index 0000000000000000000000000000000000000000..c9f8eff56f78c41bdbecfd7208e2e67fd41ba704 Binary files /dev/null and b/busca.o differ diff --git a/libbusca.a b/libbusca.a new file mode 100644 index 0000000000000000000000000000000000000000..f106f2032029f25f16e9562823810d436716395f Binary files /dev/null and b/libbusca.a differ