int main(){ lista *li; li = criaLista(); int i; int quantCarros,quantRemocao; int opcao; while(1){ system("cls"); setlocale(LC_ALL,"Portuguese"); printf("[1] Adicionar carro\n[2] Excluir carro\n[3] Mostrar carros\n[4] Mostrar tamanho da lista\n[5] Sair\nEscolha a opção: "); fflush(stdin); scanf("%d",&opcao); if(opcao == 1){ printf("Desejas adicionar quantos carros? "); fflush(stdin); scanf("%d",&quantCarros); carros car[quantCarros]; for(i=0; i<quantCarros; i++){ fflush(stdin); printf("Digite a marca: ");fflush(stdin); gets(car[i].marca); printf("Digite o ano: ");fflush(stdin); scanf("%d",&car[i].ano); printf("Digite a cor: ");fflush(stdin); gets(car[i].cor); printf("Digite o preco: ");fflush(stdin); scanf("%f",&car[i].preco); inserirLista(li,car[i]); } }else if(opcao == 2){ system("cls"); printf("Deseja remover quantos? "); scanf("%d",&quantRemocao); if(removeInicio(li,quantRemocao) == 1){ printf("Removido com Sucesso!\n"); }else{ printf("Erro ao Remover!"); } system("pause"); }else if(opcao == 3){ imprimirLista(li); }else if(opcao == 4){ system("cls"); if(tamanhoLista(li) == 0){ printf("Lista está vazia!\n"); }else{ printf("Tamanho da lista: %d\n",tamanhoLista(li)); } system("pause"); }else if(opcao == 5){ return 0; }else{ printf("Opção inválida!\n"); } } liberarLista(li); return 0; }
int imprimeTarefasNcurses(t_grafo* g, TipoLista *l_atual, TipoLista *l_concluidas, int tempo){ if(!esta_inicializada){ return GUI_ERR; } clear(); bkgd(COLOR_PAIR(5)); box(stdscr, ACS_VLINE, ACS_HLINE); int linha = 1, coluna = 2, i; char op[11]; mvprintw(linha, src_cols - 20, "TEMPO : %d", tempo); linha++; //t_vertix* AUX; t_item temp; //imprime as tarefas concluidas mvprintw(linha, coluna, "Concluidos: "); linha++; for(i = 0; i < tamanhoLista(l_concluidas) ; i++){ temp = buscaListaInd(l_concluidas, i); attron(COLOR_PAIR(2)); mvprintw(linha,coluna, "%d",temp.ID); refresh(); attroff(COLOR_PAIR(2)); linha++; } //imprime as tarefas ainda não concluidas mas iniciadas mvprintw(linha, coluna, "Em andamento: "); linha++; for(i = 0; i < tamanhoLista(l_atual) ; i++){ temp = buscaListaInd(l_atual, i); attron(COLOR_PAIR(5)); mvprintw(linha,coluna, "%d", temp.ID); refresh(); attroff(COLOR_PAIR(5)); linha++; } mvprintw(linha, coluna, "Não Começadas: "); linha++; t_vertix* aux; for (aux = getVertices(g) ; aux != NULL; aux = aux->prox){ if(buscaLista(l_atual, aux->propriedades.ID) != NULL || buscaLista(l_concluidas, aux->propriedades.ID) != NULL){ continue; } attron(COLOR_PAIR(3)); mvprintw(linha,coluna, "%d", aux->propriedades.ID); linha++; attroff(COLOR_PAIR(3)); refresh(); } attron(COLOR_PAIR(1)); mvprintw(linha+3,coluna, "Mais opções: 1 : selecionar outro tempo"); mvprintw(linha+4,coluna+17, "2 : visualizar todas as tarefas"); mvprintw(linha+5,coluna+17, "3 : Editar Tarefas"); mvprintw(linha+6,coluna+17, "4 : Procurar Caminho"); mvprintw(linha+7,coluna+17, "99 : Sair"); mvprintw(linha+8,coluna+17, "Digite sua opção:"); refresh(); getstr(op); attroff(COLOR_PAIR(1)); return atoi(op); }
int imprimeCaminhoInterface(t_grafo* g, int IDDestino){ if(g==NULL){ return 1; } char ID[15], op[15]; do{ clear(); bkgd(COLOR_PAIR(5)); box(stdscr, ACS_VLINE, ACS_HLINE); mvprintw(2, 2, "Digite o ID da tarefa que deseja saber o caminho: "); getstr(ID); IDDestino = atoi(ID); if (buscaVertice(g, IDDestino) == NULL){ attron(COLOR_PAIR(3)); mvprintw(4, 2, "ERRO AO PROCURAR CAMINHO, VERIFIQUE SE A ENTRADA E VALIDA."); getch(); attroff(COLOR_PAIR(3)); } }while(buscaVertice(g, IDDestino) == NULL); TipoLista *l_concluidas = criaLista(); t_item item_aux, item_suc; t_item item_add; t_vertix *v, *v_sucessor; int true_inicio=0; int i =0, j=0; //Esses lacos criam a lista de concluidos com os pesos de todas as tarefas for(i = 0; i < tamanhoLista(getOrigens(g)); i++){ //checagem das origens e insercao na lista de concluidos item_aux = buscaListaInd(getOrigens(g), i); v = buscaVertice(g, item_aux.ID); item_add.ID = v->propriedades.ID; item_add.peso = v->propriedades.duracao + v->propriedades.inicio; if(insereLista(l_concluidas, item_add) == LISTA_ERR){ return 1; } }//for for(i = 0; i < tamanhoLista(l_concluidas); i++){ //checagem e insercao para o resto dos vertices item_aux = buscaListaInd(l_concluidas, i); v = buscaVertice(g, item_aux.ID); //busca vertice no grafo com a ID igual a celula na lista de concluidos if(v == NULL){ return 1; //assertiva de saida } for(j = 0; j < tamanhoLista(v->adjacentes); j++){ //trabalha com os sucessores de cada vertice dos concluidos item_suc = buscaListaInd(v->adjacentes, j); v_sucessor = buscaVertice(g, item_suc.ID); if(v_sucessor == NULL){ return 1; //assertiva de saida } true_inicio = get_maior_peso(g, l_concluidas, item_suc.ID); item_add.ID = v_sucessor->propriedades.ID; item_add.peso = true_inicio + v_sucessor->propriedades.duracao; if(buscaLista(l_concluidas, item_add.ID)==NULL){ //evitar a insercao de duplicados if(insereLista(l_concluidas, item_add) == LISTA_ERR){ return 1; } } }//for sucessores }//for lista_concluidos achaCaminhoMin(g,l_concluidas, IDDestino); //fim dos lacos, prosseguir para a impressao clear(); box(stdscr, ACS_VLINE, ACS_HLINE); int linha = 1, coluna = 2; t_vertix* AUX = buscaVertice(g, IDDestino); while(AUX != NULL){ mvprintw(linha, coluna, "%d -- %s", AUX->propriedades.ID, AUX->propriedades.nome); linha++; AUX = AUX->pai; } AUX = buscaVertice(g, IDDestino); mvprintw(linha, coluna, "Tempo para completar essa tarefa: %d", get_maior_peso(g, l_concluidas, AUX->propriedades.ID) + AUX->propriedades.duracao); attron(COLOR_PAIR(1)); mvprintw(linha+3,coluna, "Mais opções: 1 : selecionar outro tempo"); mvprintw(linha+4,coluna+17, "2 : visualizar todas as tarefas"); mvprintw(linha+5,coluna+17, "3 : Editar Tarefas"); mvprintw(linha+6,coluna+17, "4 : Procurar Caminho"); mvprintw(linha+7,coluna+17, "99 : Sair"); mvprintw(linha+8,coluna+17, "Digite sua opção:"); refresh(); getstr(op); attroff(COLOR_PAIR(1)); return atoi(op); }