// mostrar um array 1D com N inteiros void escreverArray1DInteirosMD (int *A, int N) { int k; for (k = 0; k < N; k++) { printf("%d ", A[k]); } printf("\n"); } // ler/construir um array com um dado tamanho int* lerArray1DInteirosMD (int dim) { int *A, k; A = (int*) malloc(dim * sizeof(int)); if(A == NULL) return NULL; // não foi reservada memória para A // houve reserva de memória for(k = 0; k <= dim-1; k++) { printf("Inserir um inteiro: "); scanf("%d", &A[k]); } return A; } // ler/construir um array com um dado tamanho - versão 2 void lerArray1DInteirosMD_2 (int **A, int dim) { int k; *A = (int*) malloc(dim * sizeof(int)); if (*A == NULL) return; // não houve alocação de memória // houve alocação/reserva de memória for(k = 0; k <= dim-1; k++) { printf("Inserir um inteiro: "); scanf("%d", &(*A)[k]); } } // ler/construir um array com um dado tamanho - versão 3 // devolve: 1 se o array foi construido e 0 se não foi int lerArray1DInteirosMD_3 (int **A, int dim) { int k; *A = (int*) malloc(dim * sizeof(int)); if (*A == NULL) return 0; // não há memória para o array for(k = 0; k <= dim-1; k++) { printf("Inserir um inteiro: "); scanf("%d", &(*A)[k]); } return 1; // operação com sucesso } // det. o menor e o maior elementos de um array void menorMaiorArray1D (int *A, int dim, int *min, int *max) { int k; *min = A[0]; *max = A[0]; for(k = 1; k < dim; k++) { if(A[k] > *max) *max = A[k]; else if(A[k] < *min) *min = A[k]; } } // remover um elemnto dum array int* removerElementoArray1D (int *A, int *N, int a) { int k; k = 0; while(k <= *N-1 && A[k] != a) { k = k + 1; } if(k > *N-1) return A; // não existe elemento de A igual a a // k é o indice de um elemento = a A[k] = A[*N-1]; *N = *N - 1; A = (int*) realloc(A, *N * sizeof(int)); return A; }