示例#1
0
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');
    }
} 
示例#2
0
//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");
}
示例#3
0
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);
}
示例#5
0
/* 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;
}