void ImprimeGrafo(TipoGrafo *Grafo) { short i; for (i = 0; i <= Grafo->NumVertices - 1; i++) { printf("Vertice %d: ", i); if (!ListaVazia(Grafo->Adj[i])) ImprimeLista(Grafo->Adj[i]); putchar('\n'); } }
//FUNÇÃO PARA IRMPRIMIR O GRAFO GERADO. NÃO UTILIZADO NESTE PROGRAMA void ImprimeGrafo(TipoGrafo *Grafo){ int i; for (i = 0; i <= Grafo->NumVertices - 1; i++){ printf("\nVertice %2d: ", i); if (!ListaVazia(Grafo->Adj[i])){ ImprimeLista(Grafo->Adj[i]); } } printf("\n"); }
void listaenc(int op){ switch(op){ case 0: exit(1); break; case 1: LVazia(); break; case 2: ImprimeLista(); break; case 3: int d; printf("Novo Elemento:\n"); scanf("%d",&d); InsereLista(d); break; case 4: int x; printf("Buscar Elemento:\n"); scanf("%d",&x); PesquisaLista(x); break; case 5: int b; printf("Remover Elemento:\n"); scanf("%d",&b); RemoveLista(b); break; default: printf("Comando invalido\n\n"); } }
//=========================FUNÇÃO PRINCIPAL=================================== int main(){ system("title Controle De Estoque 2011"); system("color 0f"); int op,z,d,i,k; char resp,c; TipoItem item; TipoLista Lista; ApontadorNo Arvore_cod; IniciarLista(&Lista); Inicializa(&Arvore_cod); i=0; do{ menu(); scanf("%d",&op); system("cls"); if(op==1){ do{ printf("\t\tGERENCIAMENTO DE ESTOQUE\n\n\tINCLUSAO DE NOVO CADASTRO\n\n"); fflush(stdin); printf("Digite o codigo do produto: "); scanf("%d",&item.cod); printf("\nDigite o nome do produto: "); fflush(stdin); gets(&item.nome[i]); printf("\nDigite o valor: "); fflush(stdin); scanf("%f",&item.valor); printf("\nDigite o fabricante: "); fflush(stdin); gets(&item.fabri[i]); printf("\nDigite a quantidade: "); fflush(stdin); scanf("%d",&item.quantidade); InserirCelula(&Lista,item); printf("\n\tDeseja digita novamente? (S/N).:"); fflush(stdin); Insere(item,&Arvore_cod); scanf("%c",&resp); system("cls"); }while(resp=='s'); system("cls"); } if(op==2){ printf("\t\t\tESTOQUE\n"); ImprimeLista(Lista); system("pause"); system("cls"); } if(op==3){ if(TesteListaVazia(Lista)){ ImprimeLista(Lista); system("pause"); system("cls"); } else{ ImprimeLista(Lista); do{ printf("\n\tQual deseja remover.:"); scanf("%d",&k); if(Verificar(k,Lista)==1){ fflush(stdin); RetiraL(k,&Lista,&item); fflush(stdin); Retira(item, &Arvore_cod); fflush(stdin); printf("\n\tDeseja Remover novamente? (S/N).:"); fflush(stdin); scanf("%c",&resp); } }while(resp=='s'); system("pause"); system("cls"); } } if(op==4){ if(TesteListaVazia(Lista)){ ImprimeLista(Lista); system("pause"); system("cls"); } else{ printf("\t\tOrdenado por valor\n"); d=Tamanho(Lista); QuickSortLista(&Lista,d); ImprimeLista(Lista); system("pause"); system("cls"); } } if(op==5){ if(TesteListaVazia(Lista)){ ImprimeLista(Lista); system("pause"); system("cls"); } else{ printf("\n\n\n Digite o codigo que deseja encontrar: "); scanf("%d", &item.cod); fflush(stdin); Pesquisa(&item, &Arvore_cod, item.quantidade); printf("\n"); system("pause"); } system("cls"); } if(op==6){ } if(op==7){ } if(op==8){ } if(op==9){ } if(op<1||op>10){ system("color 4f"); printf("\tOpcao Invalida\n"); system("pause"); system("cls"); system("color 0f"); } else if(op==10){ exit(1); } }while(op>0||op<10); }
/* SEU PROGRAMA - MAIN */ int main() { int op_tot = -1, mem_total, i, mem_arquivo, erro = 0, inserido = 0; char operacao[8], arquivo[11], memoria[7], arq_tamanho[7]; Lista *disco_memoria, *aux_disco; /* Entrada da quantidade de operacoes */ scanf("%d", &op_tot); while(op_tot != 0){ erro = 0; /* Entrada da memoria total do disco */ scanf("%s", memoria); printf("memoria %s\n", memoria); mem_total = interpretar_memoria(memoria); /* Criacao da lista de alocacao de arquivos */ disco_memoria = (Lista*)malloc(sizeof(Lista)); InicializaLista(disco_memoria, mem_total); /* Execucao das operacoes */ for(i=0; i < op_tot; i++){ /* Ponteiro auxiliar para manipulacao da lista */ aux_disco = disco_memoria; scanf("%s", operacao); scanf("%s", arquivo); printf("%s em %s ", operacao, arquivo); /* Operacao insere */ if(!strcmp("insere", operacao)){ /* Entrada do tamanho do arquivo */ scanf("%s", arq_tamanho); printf("de tamanho %s ", arq_tamanho); mem_arquivo = interpretar_memoria(arq_tamanho); printf("que eh igual a %d\n", mem_arquivo); /* Tentativa de inserir arquivo em espacos vazios entre nos */ inserido = 0; /* Percorrer ate o fim porque senao inserir agora eh preciso inserir no fim */ while(aux_disco->prox != NULL){ if((aux_disco->prox->memoria >= mem_arquivo) && !(aux_disco->prox->ocupado) && !inserido){ InsereProx(aux_disco, mem_arquivo, arquivo); disco_memoria->memoria -= mem_arquivo; inserido = 1; printf("inserindo entre nohs %d e inserido vale %d\n", mem_arquivo, inserido); } aux_disco = aux_disco->prox; } /* Caso nao seja encontrado espaco entre arquivos e ainda exista * espaco na memoria, inserir no fim da lista */ if(disco_memoria->memoria - mem_arquivo >= 0 && !inserido){ InsereProx(aux_disco, mem_arquivo, arquivo); disco_memoria->memoria -= mem_arquivo; inserido = 1; printf("inserindo no fim %d e inserido vale %d\n", mem_arquivo, inserido); } /* Caso nao seja possivel inserir em nenhuma posicao, otimizar memoria */ if(!inserido){ /* Auxiliar volta para o inicio da lista */ aux_disco = disco_memoria; /* Procura espacos vazios entre os arquivos */ while(aux_disco->prox != NULL){ if(!aux_disco->prox->ocupado){ /* Retira o noh vazio para otimizar a memoria */ operacao_otimiza(aux_disco); disco_memoria->memoria += mem_arquivo; } aux_disco = aux_disco->prox; } /* Testa se eh possivel inserir apos a otimizacao */ if(disco_memoria->memoria - mem_arquivo >= 0){ InsereProx(aux_disco, mem_arquivo, arquivo); disco_memoria->memoria -= mem_arquivo; printf("inserindo pos otimizacao %d\n", mem_arquivo); /* Caso nao seja possivel inserir, acusa erro */ }else{ printf("entrou em %d\n", i+1); erro = 1; } } } /* Operacao remove */ else if(!strcmp("remove", operacao)){ /* Procura arquivo na lista para remocao */ while(strcmp(arquivo, aux_disco->prox->arquivo) && aux_disco->prox != NULL){ aux_disco = aux_disco->prox; } if(aux_disco->prox != NULL && aux_disco->prox->ocupado){ /* Muda o noh para desocupado e passa a memoria desse para o total*/ RemoveProx(aux_disco); disco_memoria->memoria += mem_arquivo; printf("removendo %d\n", mem_arquivo); } } /* Operacao otimiza */ else if(!strcmp("otimiza", operacao)){ /* Procura espacos vazios entre os arquivos */ while(aux_disco->prox != NULL){ if(!aux_disco->prox->ocupado){ /* Retira o noh vazio para otimizar a memoria */ operacao_otimiza(aux_disco); disco_memoria->memoria += mem_arquivo; } aux_disco = aux_disco->prox; } } } if(!erro){ ImprimeLista(aux_disco, mem_total, disco_memoria->memoria); }else{ printf("ERRO: disco cheio\n"); } LiberaLista(disco_memoria); scanf("%d", &op_tot); } return 0; }