Untitled

 avatar
unknown
plain_text
4 years ago
5.7 kB
22
No Index
 #include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>                 // usado no código para por acentuação.
#define MAXNUMREG 20                 //constante definida para a quantidade de registros na lista.

typedef int dados;             //dando sinonimo à inteiro para lembrar que não será apenas um inteiro e sim um registro.

//////////////////////////////////////////////////////////////////////////////////////
typedef struct{                    // struct do registro;
	dados info;
}REGISTRO;

//////////////////////////////////////////////////////////////////////////////////////
typedef struct{                        //struct lista com registros e numero de elementos.
	REGISTRO A[MAXNUMREG];
	int numeroElementos;
}LISTA;

//////////////////////////////////////////////////////////////////////////////////////
void inicializarlista(LISTA *l){    // função carregando lista
	(*l).numeroElementos = 0;                   // dando um valor inicial para carregar a lista e zerando a mesma.
}

/////////////////////////////////////////////////////////////////////////////////////
int tamanho(LISTA *l){               //função retornar valores
	return ((*l).numeroElementos);           // retornando valores do numero de elementos
}

//////////////////////////////////////////////////////////////////////////////////////
void exibirlista(LISTA *l){                    // função exibir na tela
	int temp1;
	temp1=0;
	printf("Lista: \" ");
	for(temp1=0; temp1<((*l).numeroElementos); temp1++)
	{                                           //repetição for mostra as info existentes na tela pelo print
		printf(" [");
		printf("%i",(*l).A[temp1].info);
		printf("] ");
	};
	printf("\"\n");
	printf("\n\n Elementos: %d",(*l).numeroElementos);
	printf("\n\n");
}

////////////////////////////////////////////////////////////////////////////////////////
int buscasequencial(LISTA *l,dados ch){         //função buscar
	int temp2;                                       // aplica uma busca atravez de um contador em while(sem do;)
	temp2=0;
	while(temp2 < ((*l).numeroElementos)){
		if(ch == ((*l).A[temp2].info))
			return(temp2);
		else
			temp2++;
		
	}
	return(-1);
}

////////////////////////////////////////////////////////////////////////////////////////
bool inseriremlista(LISTA *l,REGISTRO reg,int i){                // função inserir(em posição especifica)
	int temp3;
	temp3=0;
	if((((*l).numeroElementos) == MAXNUMREG)||(i < 0)||(i > ((*l).numeroElementos)))
		return(false);
	for(temp3=((*l).numeroElementos); temp3 > i; temp3--){   // desloca todos para frente a partir do item inserido
		(*l).A[temp3] = (*l).A[temp3 - 1];
	};
	(*l).A[i] = reg;
	(*l).numeroElementos++;                                  // aumenta em 1 a quantidade de elementos registrados
	return(true);
}

///////////////////////////////////////////////////////////////////////////////////////////
bool excluirelemlista(dados ch,LISTA *l){       // função excluir elemento
	if(((*l).numeroElementos) == 1){
		(*l).numeroElementos = 0;
		return(true);};
	int local,temp4;
	temp4=0;
	local = buscasequencial(l,ch);                  // utilizando busca sequencial pré-feita.
	if(local == -1) return false;                   // se não achar retorna falso
	for(temp4=local; temp4 < ((*l).numeroElementos)-1; temp4++){  // desloca todos para trás
	(*l).A[temp4] = (*l).A[temp4 + 1];
	(*l).numeroElementos--;                                 //diminui em 1 a quantidade de elementos registrados
	return(true);
	};
}
////////////////////////////////////////////////////////////////////////////////////////////
void reiniciartudo(LISTA *l){                      // função reiniciar
	(*l).numeroElementos = 0;                              // basta zerar novamente

}

int main(void ){
	setlocale(LC_ALL, "Portuguese_Brazil");
	char nomelista[18];
	int opcao;
	LISTA umalistaqualquer;
	printf("\n\n\n---Diga um nome para sua lista(Max:18 char) \n\n ...:");
	fgets(nomelista,18,stdin);
	inicializarlista(&umalistaqualquer);
	tamanho(&umalistaqualquer);
	do
	{
		system("cls");
		printf("lista atual:  %s ", nomelista);
		printf("\n\n");
		exibirlista(&umalistaqualquer);
		printf("\n1 - Inserir elemento\n2 - Remover elemento\n3 - buscar posição\n4 - Resetar fila\n0 - Sair\n\nOpcao? ");
		scanf("%d", &opcao);
		switch(opcao){
			case 0 :
			exit(1);
			break;
			case 1 :
				REGISTRO valors;
				int posis;
				system("cls");
				printf("\n\n\n ---Qual o valor a ser registrado?\n\n..:");
				scanf("%d",&valors);
				system("cls");
				printf("Obs:substituição apenas de posições já existentes ou criar uma nova selecionando a posição 0");
				printf("\n\n\n ---Em qual posição da lista deseja inserir o valor?\n\n..:");
				scanf("%d",&posis);
				inseriremlista(&umalistaqualquer,valors,posis);
			break;
			case 2 :
				system("cls");
				exibirlista(&umalistaqualquer);
				dados valorsin;
				printf("\n\n Qual valor deseja remover? \n\n\n ...:");
				scanf("%i",&valorsin);
				excluirelemlista(valorsin,&umalistaqualquer);
			break;
			case 3 :
				system("cls");
				exibirlista(&umalistaqualquer);
				dados bus;
				int loc;
				printf("\n\n Digite o valor para saber sua posição na lista: \n\n...:");
				scanf("%d",&bus);
				loc=buscasequencial(&umalistaqualquer,bus);
				printf("Posição: %d",loc);
				printf("\n\n precione qualquer tecla..");
				getch();
			break;
			case 4 :
				reiniciartudo(&umalistaqualquer);
			break;
			}
	
	}while(1);
}
Editor is loading...