Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include<stdio.h> #include<stdlib.h> #include<locale.h> int const tamanho_maximo=1000; int frente, tras; int fila[tamanho_maximo]; void fila_construtor() { frente=0; tras=-1; } bool fila_vazia() { if(frente>tras) { return true; } else { return false; } } bool fila_cheia() { if(tras==tamanho_maximo-1) { return true; } else { return false; } } void fila_organizar() { int indice; if(frente>0) { for(indice=0;indice<tras;indice++) { fila[indice]=fila[indice+1]; } frente--; tras--; } } int fila_mostrar_tamanho() { return(tras-frente); } bool fila_obter(int &valor) { if(fila_vazia()) { return false; } else { valor=fila[frente]; return true; } } bool fila_inserir_na_posicao(int posicao) { int indice, valor; if(fila_cheia()||posicao>fila_mostrar_tamanho()) { return false; } else { printf("\n Digite o valor que deseja inserir: "); scanf("%i", &valor); for(indice=fila_mostrar_tamanho();indice>=posicao;indice--) { fila[indice+1]=fila[indice]; } fila[posicao]=valor; tras++; printf("\n O número %i foi inserido na posição %i! \n", valor, posicao); return true; } } bool fila_remover_a_posicao( int posicao) { int indice, valor; if(fila_vazia()) { return false; } else { if(posicao>frente&&posicao<tras) { valor=fila[posicao]; for(indice=posicao;indice<tras;indice++) { fila[indice]=fila[indice+1]; tras--; } printf("\n A posição %i foi removida! \n\n", posicao); } return true; } } int fila_imprimir_lista(void) { int contador=fila_mostrar_tamanho(); if(contador==0) { printf("\n A fila está vazia! \n"); printf("\n"); } else { while(contador!=0) { printf(" %i -> ", fila[contador]); contador--; } printf("NULL\n"); printf("\n"); } } bool fila_buscar_valor(int valor) { int indice, posicao; if(fila_vazia()) { return false; } else { for(indice=frente;indice<tras;indice++) { if(fila[indice]==valor) { posicao=indice; printf("\n Número %i encontrado na posição %i\n", valor, posicao); } } return true; } } bool fila_enfileirar(int valor) { char opcao='s'; if(fila_cheia()) { return false; } else { printf("\n Digite um número para enfileirar: "); scanf("%i", &valor); tras++; fila[tras]=valor; printf("\n Deseja continuar enfileirando?(s/n)"); scanf("%s", &opcao); if(opcao=='s') { fila_enfileirar(valor); } else { system("pause"); system("cls"); } return true; } } bool fila_desenfileirar(int valor) { int opcao='s'; if(fila_vazia()) { return false; } else { valor=fila[frente]; frente++; fila_organizar(); } printf("\n Valor retirado! \n"); printf("\n Deseja continuar desenfileirando?(s/n)"); scanf("%s", &opcao); if(opcao=='s') { fila_desenfileirar(valor); } else { system("pause"); system("cls"); } return true; } bool fila_substituir_na_posicao(int posicao) { int indice, valor; if(fila_vazia()) { return false; } else { if(posicao>frente&&posicao<=tras) { printf("\n Digite um número: "); scanf("%i", &valor); for(indice=tras+1;indice>posicao;indice--) { fila[posicao]=valor; } printf("\n O número %i foi inserido na posição %i! \n\n", valor, posicao); return true; } } } int main(void) { setlocale(LC_ALL,"Portuguese"); int opcoes, numero, fila; { printf("\n\n\n\n\n\t\t\t FILA LISTA \n\n"); printf("\t\t\t [1] Inserir posição \n"); printf("\t\t\t [2] Remover posição \n"); printf("\t\t\t [3] Exibir lista \n"); printf("\t\t\t [4] Pesquisar \n"); printf("\t\t\t [5] Mostrar tamanho \n"); printf("\t\t\t [6] Enfileirar \n"); printf("\t\t\t [7] Desinfileirar \n"); printf("\t\t\t [8] Substituir posição \n"); printf("\t\t\t [9] Sair \n"); printf("\t\t\t \n"); printf("\t\t\t opção >> "); scanf("%i", &opcoes); switch(opcoes) { case 1: { printf("\n Digite a posição em que deseja inserir o número: "); scanf("%i", &numero); fila=fila_inserir_na_posicao(numero); system("pause"); system("cls"); return main(); break; } case 2: { printf("\n Digite a posição em que deseja remover: "); scanf("%i", &numero); fila=fila_remover_a_posicao(numero); system("pause"); system("cls"); return main(); break; } case 3: { printf("\n Listagem da fila: \n\n"); fila=fila_imprimir_lista(); system("pause"); system("cls"); return main(); break; } case 4: { printf("\n Digite o valor que está buscando: "); scanf("%i", &numero); fila=fila_buscar_valor(numero); system("pause"); system("cls"); return main(); break; } case 5: { printf("\n O tamanho da fila é: %i", fila_mostrar_tamanho()); printf("\n\n"); system("pause"); system("cls"); return main(); break; } case 6: { fila=fila_enfileirar(numero); system("cls"); return main(); } case 7: { fila=fila_desenfileirar(numero); system("cls"); return main(); } case 8: { printf("\n Digite a posição em que deseja trocar o valor: "); scanf("%i", &numero); fila=fila_substituir_na_posicao(numero); system("pause"); system("cls"); return main(); break; } case 9: { printf("\n Finalizando o programa: "); exit(0); break; } default: { printf("\n Opção inválida, tente novamente... \n\n"); system("pause"); system("cls"); return main(); } } } }
Compartilhar