Вы находитесь на странице: 1из 6

/* Aluno: Brenno dos Santos Fernandes Matricula: -------Curso: Eng da Computaao */ #include <stdio.h> #include <stdlib.

h> int cont = 0;//Variavel responsavel por determinar o numero de elementos contido s no vetor //Fucao para criar o ponteiro para o primeiro elemento do vetor int *cria() { int *vet; vet = (int*)malloc(sizeof(int)); return vet; } //Funcao de imressao void imprime(int *vet) { int i; for(i = 0; i < cont; i++) printf("%d, ", vet[i]); } //Funcao para adicionar elementos no vetor void adicionar(int *vet,int valor) { int *aux; //Condicao de insercao para o primeiro elemento no "noh", feito pela funcao cria() if(cont == 0) { vet[cont] = valor; cont++; //Atualizacao do numero de elementos presentes no vetor } //Condicao de insercao para quando o vetor ja tiver 1 ou mais elementos else { aux = (int*)realloc(vet,(cont+1) * sizeof(int));//Realocacao do vetor para mais um elemento (cont + 1), utilizando um poteiro auxiliar aux = vet; vet[cont] = valor; cont++;//Atualizacao do numero de elementos presentes no vetor } } //Funcao de busca utilizada para retornar o indice do elemento pesquisado int busca(int *vet, int valor) { int i; for (i = 0; i < cont; i++) { if(vet[i] == valor)

return i;//Caso encontre o elemento a ser removido, retorna o indice do mesmo no vetor } return -1;//Caso nao encontre o elemento a ser removido, retorna -1 para co ntrole } int remover(int *vet, int valor) { int indice, i, aux; indice = busca(vet, valor); if(indice != -1)//Condicao de exitencia do elemento { //Lao para reorganizar o vetor retirando o elemento solicitado pelo usur aio for(i = indice; i < cont - 1; i++) vet[i] = vet[i + 1]; //Redimensionando o vetor para menos 1 elemento (cont - 1) vet = (int*)realloc(vet,(cont - 1) * sizeof(int)); cont--;//Atualizacao do numero de elementos presentes no vetor } return indice; } //Funcao para retornar o valor do ultimo elemento do vetor int fim(int *vet) { return vet[cont - 1]; } //Funcao para retornar o valor do primeiro elemento do vetor int inicio(int *vet) { return vet[0]; } //Funcao para retornar o valor ocupado pela estrutura int ocupado(int *vet) { return cont * sizeof(vet); } int main() { int *vet, elemento, aux; vet = cria(); //Ponteiro *vet recebe o endero para o inicio do vetor //Lao para o menu de opoes while(1) { system("clear"); printf("MENU DE OPCOES\n");

printf("--------------\n"); printf("1. Insercao\n"); printf("2. Remocao\n"); printf("3. Pesquisar\n"); printf("4. Visualizar Elementos\n"); printf("5. Valor Ocupado\n\n"); printf("6. Sair\n");

scanf("%d",&elemento); if(elemento == 6) break; switch(elemento) { case 1://Insercao de elementos no vetor while(1) { system("clear"); printf("INSERCAO()\n"); printf("--------\n"); printf("Digite o valor do elemento a ser inserido: (999 para fi nalizar)\n--> "); scanf("%d", &elemento); if (elemento == 999) break; adicionar(vet,elemento);//Funcao de insercao printf("\nInserido com sucesso!"); getchar(); getchar(); } break; case 2://Remorcao de elementos no vetor while(1) { system("clear"); printf("REMORCAO()\n"); printf("--------\n"); printf("Digite o valor do elemento a ser removido: (999 para fi nalizar)\n--> "); scanf("%d", &elemento); if (elemento == 999) break; aux = remover(vet,elemento);//Funcao de remorcao if(aux == -1)//Se o retorno da funcao seja -1, o elemento nao f oi encontrado no vetor { printf("\nElemento inexistente!"); getchar(); getchar(); } else // Se retorno da funcao for diferente de -1, o elemento fo i encontrado e removido {

printf("\nRemovido com sucesso!"); getchar(); getchar(); } } break; case 3://Pesquisa de elementos no vetor while(1) { system("clear"); printf("\nPESQUISA\n"); printf("--------\n"); printf("1. Indice()\n"); printf("2. Busca()\n\n"); printf("999. Sair\n\n-->"); scanf("%d", &aux); if(aux == 999) //Opao de retorno ao menu de opcoes break; else if(aux == 1)//Condicional para pesquisa atraves do indi ce informado pelo usuario { system("clear"); printf("Informe o indice\n--> "); scanf("%d", &elemento); if(elemento <= (cont - 1))//O indice deve ser menor que o numero total de elementos no vetor menos 1 (vet[0]...vet[cont-1]) { printf("\nVet[%d] = %d", elemento, vet[elemento]); getchar(); getchar(); } else//Caso o indice seja maior que (cont - 1) { printf("\nIndice inexistente!"); getchar(); getchar(); } } else if(aux == 2)//Condicional para pesquisa atraves d o valor de um elemento { system("clear"); printf("Informe o elemento\n--> "); scanf("%d", &elemento); aux = busca(vet,elemento); if(aux == -1)//Retorno de controle, quando a funca o busca() nao encontra o elemento printf("\nElemento inexistente!"); else//Caso seja diferente de -1, o elemento est pre sente no vetor printf("\nElemento encontrado!"); getchar();

getchar(); } } break; case 4: //Condicional para impressao dos elementos do vetor while(1) { system("clear"); printf("IMPRESSAO\n"); printf("---------\n"); printf("1. Inicio()\n"); printf("2. Fim()\n"); printf("3. Todos\n\n"); printf("999. Sair\n\n-->"); scanf("%d", &aux); if((aux == 1) && (cont != 0) )//Impressao do primeiro elemeno d o vetor { system("clear"); printf("Inicio()\n"); printf("---------\n\n"); printf("%d",inicio(vet)); } else if((aux == 2) && (cont != 0))//Impressao do ultimo eleme nto do vetor { system("clear"); printf("Fim()\n"); printf("---------\n\n"); printf("%d",fim(vet)); } else if ((aux == 3) && (cont != 0))//Impressao do vetor c ompleto { system("clear"); printf("Todos\n"); printf("---------\n\n"); imprime(vet); } if(((aux == 1) 0)) { system("clear"); printf("Vetor vazio!"); } else if(aux == 999)//Voltar ao menu de opcoes break; getchar(); getchar(); } break; case 5: system("clear"); printf("Ocupado()\n"); printf("---------\n"); printf("\nOcupado = %d bytes",ocupado(vet)); (aux == 2) (aux == 3)) && (cont ==

getchar(); getchar(); } } return 0; }

Вам также может понравиться