/* ----------------------------- arrays.c - Processamento de Arrays 2006-03-21: Created by jcr ------------------------------------- */ void menu() { printf("\n\n Sequencias de inteiros: lista de operacoes\n"); printf("A - Ler a Sequencia\n"); printf("B - Escrever a Sequencia\n"); printf("C - Calcular o Maximo da Sequencia\n"); printf("D - Calcular o Minimo da Sequencia\n"); printf("E - Determinar a subsequencia de elementos acima da media\n"); printf("F - Determinar a subsequencia de elementos abaixo da media\n"); printf("G - Calcular o mmc da sequencia\n"); printf("H - Ordenar a Sequencia com o BubbleSort\n"); printf("I - Ordenar a Sequencia com o QuickSort\n"); printf("J - Procurar um elemento\n"); printf("S - Sair do Programa\n"); printf(" Opcao: "); } /* --------------------------- quick sort 2006-03-22: created by jcr ----------------------------- */ void troca( int *a, int *b ) { int t=*a; *a=*b; *b=t; } void quickSort( int A[], int i, int j ) { int pivot, l, r; if(j>i+1) { pivot = A[i]; l = i+1; r = j; while(l0)&&troca) { troca = 0; // Para já não houve nenhuma troca for(j=0;i>j;j++) { if(A[j]>A[j+1]) { troca = 1; // Houve uma troca nesta iteração temp = A[j]; A[j] = A[j+1]; A[j+1] = temp; } } i--; } } /* --------------------------- Pesquisa Binária 2006-03-30: created by jcr ----------------------------- */ int procura( int A[], int nelems, int elem ) { int i, inf=0, sup=nelems-1; i = (sup+inf)/2; while( (A[i]!= elem) && (inf <= sup)) { if(A[i]1) return mmcSeqAux( A+2, nelems-2, mmc(A[0],A[1]) ); else if(nelems) return A[0]; else return 0; } int mmcSeqAux( int A[], int nelems, int mmcact ) { if(nelems==0) return mmcact; else return mmcSeqAux( A+1, nelems-1, mmc(mmcact,A[0])); } /* ------------------- Máximo da Sequencia ------------------- */ int maxSeq( int A[], int nelems ) { int max = A[0], i; for(i=1;imax) max=A[i]; return max; } /* ------------------- Mínimo da Sequencia ------------------- */ int minSeq( int A[], int nelems ) { int min = A[0], i; for(i=1;imedia) { subA[j++]=A[i]; cont++; } return cont; } int abaixoMedia( int A[], int nelems , int subA[], float media) { int i, j=0, cont=0; for(i=0;i=0) printf("\nElemento encontrado na posição %d\n",res); else printf("\n\nElemento Inexistente!\n\n"); break; } getchar(); // limpar o \n do buffer de entrada menu(); op = getchar(); } return 0; }