//------------------------------------------------------------------------------ // IMPRIME_LISTA // Imprime os dados da árvore binária ordenadamente //------------------------------------------------------------------------------ void imprime_lista(Registro *reg) { if (reg==NULL) return; if (reg->esq != NULL) imprime_lista(reg->esq); tree_view_add(reg->nome, reg->curso, reg->turno, reg->cidade); if (reg->dir != NULL) imprime_lista(reg->dir); }
void Faz_Reserva(List_head lista, List_head lista_pre) { int option ; cliente dados_cliente ; printf("Insira o nome: \n ") ; fgets(dados_cliente.nome,150, stdin); //gets(dados_cliente.nome) ; // getchar() ; fflush(NULL) ; printf("Insira agora o horario pretendido: \n " ) ; printf("Dia: ") ; scanf("%d", &dados_cliente.D.dia) ; printf("Mes: ") ; scanf("%d", &dados_cliente.D.mes) ; printf("Hora: ") ; scanf("%d", &dados_cliente.D.horas) ; printf("Minuto (tenha em atençao ás meias horas: ") ; scanf("%d", &dados_cliente.D.min) , do{ printf("Deseja reservar: \n") ; printf("\t1-Lavagem \n") ; printf("\t2-Manutencao \n") ; printf("\t3-Sair") ; scanf("%d",&option) ; if(option==1) { dados_cliente.tipo_reserva = 2 ; // printf(" Sera que a lista existe? %d", procura_lista_data(lista,dados_cliente,0)) ; //teste if(procura_lista_data(lista, dados_cliente,0)== 0) { insere_lista(lista,dados_cliente) ; imprime_lista(lista) ; } else { printf("A hora escolhida nao esta disponivel. Podera fazer um pre reserva atraves do Menu se desejar.") ; } return ; } else { dados_cliente.tipo_reserva = 1 ; //elimina_lista(lista,dados_cliente); // printf(" Sera que a lista existe? %d", procura_lista_data(lista,dados_cliente,0)) ; //teste if(procura_lista_data(lista, dados_cliente,0)== 0) { insere_lista(lista,dados_cliente) ; imprime_lista(lista) ; } else { printf("A hora escolhida nao esta disponivel. Podera fazer um pre reserva atraves do Menu se desejar.") ; } return ; } }while(option != 3) ; return ; }
void menu_main(List_head lista,List_head lista_pre){ int option ; do{ printf("Deseja: \n") ; printf("\t1-Reservar \n") ; printf("\t2-Pre-Reservar \n") ; printf("\t3-Cancelar reserva \n") ; printf("\t4-Cancelar pre-reserva \n") ; printf("\t5-Listar por data \n") ; printf("\t6-Lista por Cliente \n") ; printf("\t7-Sair \n") ; scanf("%d",&option) ; getchar() ; switch(option) { case 1: printf("Escolheu Reservar \n " ) ; Faz_Reserva(lista,lista_pre); break ; case 2: printf("Escolheu Pre-reservar \n ") ; break ; case 3: printf("Escolheu Cancelar reserva \n ") ; elimina_reserva(lista) ;break ; case 4: printf("Escolheu Cancelar pre-reserva \n ") ; elimina_reserva(lista_pre) ; break ; case 5: printf("Escolheu Listar por data \n ") ; imprime_lista(lista); break ; case 6: printf("Escolheu Listar por Cliente \n ") ; break ; case 7: printf("Escolheu Sair \n") ; } }while(option!=7) ; }
void imprime (arvore r, FILE* saida) { if (r != NULL) { imprime (r->esq, saida); fprintf (saida, "%s ", r->str); imprime_lista (r->list, saida); fprintf (saida, "\n"); imprime (r->dir, saida); } }
int main() { Digrafo g; build_digraph(g); DynDlist<Digrafo::Node*> list; Topological_Sort <Digrafo> () (g, list); imprime_lista(list, "top-1.tex"); list.empty(); Topological_Sort <Digrafo> () (g, list); imprime_lista(list, "top-2.tex"); }
int main(){ struct l_descr l1; inicializa_lista(&l1); insere_inicio(&l1, 4); insere_inicio(&l1, 1); insere_ordenado(&l1, 2); insere_ordenado(&l1, 3); remove_indice(&l1, 4); imprime_lista(&l1); }
int main(void) { lista_t *l; l = nueva_lista(); inserta_ilista(l, 3); inserta_ilista(l, 2); inserta_ilista(l, 1); imprime_lista(l); return 0; }
int interface_stdin( void ) { no *T = malloc(sizeof(no)); if ( T ) inicializada(T) = 0; char c; /* comando dentre {i, r, b} */ int v, /* parametro da {insercao, remocao, busca} */ i=0, j=0; /* controle do buffer, para nao repetir strings * i: indica numero de comandos {i, r, b} chamados, * j: indica o numero de impressoes. * Portanto, sempre deve valer i=j. */ do { scanf("%c", &c); switch (c) { case 'i': scanf("%d", &v); T = inserir(T, v); i++; /* um comando executado implica i <- i + 1, * comentarios posteriormente suprimidos. */ break; case 'r': scanf("%d", &v); T = balancia(remover(T, v)); i++; break; case 'b': scanf("%d", &v); i++; break; } if ( c == 'i' || c == 'r' || c == 'b' ) printf("%c %d\n", c, v); /* j eh o numero de iteracoes, que deve ser concordante com i, * senao, j sera decrementado posteriormente e nada sera impresso. */ j++; /* previne impressoes duplicadas. */ if ( i != j ) j--; /* Se o comando for {insercao, remocao}, imprime a arvore */ else if ( c != 'b' ) { escreve(T, PRE_ORDER); printf("\n"); /* Se o comando for de busca, imprime os no's percorridos. */ } else imprime_lista(busca(T, calloc(AVL_ALTURA_MAX, sizeof(int)), v)); } while ( c != 'q' && !feof(stdin) ); finaliza(T); /* Destroi T. */ return EXIT_SUCCESS; }
int main() { tipo_palavra * palavra; palavra = inicia_lista("oi"); insere_elemento(palavra, "tchau"); insere_elemento(palavra, "feliz natal"); imprime_lista(palavra); printf("-----\n"); remove_elemento(&palavra, "oi"); imprime_lista(palavra); printf("-----\n"); remove_elemento(&palavra, "nao existe"); imprime_lista(palavra); printf("-----\n"); remove_elemento(&palavra, "tchau"); imprime_lista(palavra); printf("-----\n"); remove_elemento(&palavra, "nao existe"); imprime_lista(palavra); printf("-----\n"); remove_elemento(&palavra, "feliz natal"); imprime_lista(palavra); printf("-----\n"); }
int main(){ struct no *inicio=NULL; /* // Aloca o primeiro elemento da lista inicio=malloc(sizeof(struct no)); // Atribui o valor para o primeiro elemento inicio->valor=10; inicio->proximo=NULL; */ insere(&inicio,20); insere(&inicio,30); insere(&inicio,40); insere(&inicio,50); // Imprimir os elementos da lista imprime_lista(inicio); }
int main() { int num_motoristas, num_carros, resultado; // (3 ≤ num_motoristas ≤ 10⁴, 1 ≤ num_carros ≤ 10³) TipoVeiculo carro_aux; fscanf(stdin, "%d %d", &num_motoristas, &num_carros); // le uma nova entrada // roda o programa enqto a qtde de motoristas e num_carros do estacionamento forem diferentes de ZERO while( (num_motoristas != 0) && (num_carros != 0) ) { // aloca a memoria necessaria para armazenar a quantidade especificada de veiculos TipoVeiculo *lista_carros = (TipoVeiculo*) malloc (num_motoristas * sizeof(TipoVeiculo) ); int i; for (i = 0; i < num_motoristas; i++) { fscanf(stdin, "%d %d", &carro_aux.chegada, &carro_aux.saida); lista_carros[i] = carro_aux; } //ordena_carros(lista_carros, num_motoristas); imprime_lista(lista_carros, num_motoristas); resultado = verifica_estacionamento(lista_carros, num_motoristas); // funcao principal if (resultado == TRUE) fprintf(stdout, "Sim"); else fprintf(stdout, "Nao"); free(lista_carros); // desaloca memoria da lista para essa instancia fscanf(stdin, "%d %d", &num_motoristas, &num_carros); // le uma nova entrada if ( (num_motoristas != 0) && (num_carros != 0) ) fprintf(stdout, "\n"); // imprime uma quebra de linha se houver mais casos de teste a serem processadas } return 0; }
/********************************************* * Funcao principal *********************************************/ int main(){ int opcao; unsigned int id_remover; Carro carro; Lista *lista = cria_lista(); limpa_tela(); // Cria uns carros estaticos, to cansado de ficar digitando carro = cria_carro_estatico(1, "Gol", 2009, "Vermelho", 15000); add_item_lista(lista, carro); carro = cria_carro_estatico(2, "Palio", 2004, "Prata", 13000); add_item_lista(lista, carro); carro = cria_carro_estatico(3, "Strada", 2008, "Preto", 15000); add_item_lista(lista, carro); do { mostra_menu(&opcao); if(opcao > 0 && opcao < 5){ switch(opcao){ case 1: carro = cria_carro(); add_item_lista(lista, carro); break; case 2: id_remover = remove_carro(); remove_item_lista(lista, id_remover); break; case 3: imprime_lista(lista); break; } } } while(opcao != 4); libera_lista(lista); }
/* função principal do programa */ int main (int argc, char *argv[]){ char *texto, opcao; /* crio uma string para armazenar cada palavra do texto */ node *head; /* crio um apontador para marcar o começo da lista */ int qtd_impressos = 0, sensitive = 0; /* laço que verifica se há algum parâmetro enviado na chamada do programa */ while((opcao = getopt(argc, argv, "n:I")) != -1){ switch(opcao){ case 'I': /* caso o insensitive case for ativado */ sensitive = 1; break; case 'n': /* caso há um limite nas impressões */ qtd_impressos = atoi(optarg); break; } } texto = malloc (20 * sizeof(char)); /* aloco espaço para o texto */ head = malloc (sizeof(node)); /* aloco espaço para o node */ head->qtd = 0; /* inicializo o valor da variável com 0 */ head->next = NULL; /* o next do node aponta para o nulo */ printf("\n\tEXERCICIO PROGRAMA 1 - MAC0323 ESTRUTURA DE DADOS\n\n\n"); /* loop que lerá uma palavra por vez */ while (scanf("%s", texto) != EOF){ verifica_palavra(texto, sensitive); /* faço a verificação da pontuação */ insere_lista(texto, head); /* insiro na lista */ } head->next = lmergesort_alfabetica(head->next); /* faço o primeiro mergesort para ordenar em ordem alfabética */ contabiliza_strings(head); /* faço a contagem das strings */ head->next = lmergesort_numerico(head->next); /* faço o segundo mergesort para ordenar em ordem numérica */ imprime_lista(head, qtd_impressos); /*imprimo a lista final */ libera_lista(head);/* libero a lista */ /* libero a minha célula usada como cabeça */ free(head); return 0; }
int interface_arquivo(FILE *fp) { if ( !fp ) return EXIT_FAILURE; no *T = malloc(sizeof(no)); if ( T ) inicializada(T) = 0; char comando, /* comando dentre {i, r, b} */ *linha = malloc(256 * sizeof(char)); /* linha que contem o `comando' e o `valor' */ int valor; /* parametro do comando */ do { fgets(linha, 16, fp); if ( !interpreta_linha(linha, &comando, &valor) || feof(fp) ) comando = 'q'; if ( comando != 'q' ) printf("%c %d\n", comando, valor); switch (comando) { case 'i': T = inserir(T, valor); break; case 'r': T = balancia(remover(T, valor)); break; /* Comando `b' (busca) eh tratado posteriormente ao final da iteracao, * pois a arvore nao eh impressa. */ } if ( comando != 'q' && comando != 'b' ) { /* Se o comando nao for para sair, imprime a lista */ escreve(T, PRE_ORDER); printf("\n"); } else if ( comando == 'b' ) /* Se o comando for de busca, imprime os no's percorridos. */ imprime_lista(busca(T, calloc(AVL_ALTURA_MAX, sizeof(int)), valor)); } while ( comando != 'q' ); finaliza(T); /* Destroi T. */ return EXIT_SUCCESS; }
int main(void) { int n, i, x; celula *lista, *aux, *proximo; /*Lista com cabeça, esse elemento fica vaziu*/ lista = (celula *) malloc(sizeof (celula)); lista->prox = NULL; /*Como não podemos mais mexer na variavel lista, copiamos o endereço dela*/ proximo=lista; printf ("Entre com o número de elementos:"); scanf("%d",&n); printf("Entre com os elementos:"); for (i= 0; i<n; i++) { /*Pegando o endereço anterior*/ aux=proximo; /*Criando um novo elemento*/ proximo = (celula *) malloc(sizeof (celula)); if(proximo==NULL) printf("Cabou a memoria no elemento %d \n",i+1); /*Salvando uma chave no novo elemento*/ scanf("%d",&proximo->chave); /*Apontando esse novo elemento para NULL*/ proximo->prox = NULL; /*Apontando o endereço anterior para este endereço*/ aux->prox=proximo; } /*Imprimindo lista*/ imprime_lista(lista->prox); /*Busca iterativa*/ printf("Entre com um inteiro para buscar iterativamente na lista linear:"); scanf("%d",&x); aux=busca_C(x,lista); if(aux==NULL) printf("%d não está na lista linear\n",x); else printf("%d está no endereço %p\n",(*aux).chave,(void*)&aux); /*Busca recursiva*/ printf("Entre com um inteiro para buscar recursivamente na lista linear:"); scanf("%d",&x); aux=buscaR_C(x,lista->prox); if(aux==NULL) printf("%d não está na lista linear\n",x); else printf("%d está no endereço %p\n",aux->chave,(void*)&aux); /*Remoção*/ printf("Qual elemento entre 1 e %d deseja remover?",n); scanf("%d",&x); aux=lista->prox; for(i=1;i<(x-1);i++){ aux=aux->prox; } remove_C(aux); /*Conferindo remoção*/ imprime_lista(lista->prox); return 0; }
int main(void){ ListaEnc *lista; TipoInfo *info, *aux; int escolha = -1; char valor1[30]; char valor2[30]; int valor3 = -1000; int pos = -1; int flag=0; while ((escolha = menu())!= 0){ switch (escolha){ case 1: flag++; lista = criaLista(); break; case 2: valor3 = estah_vazia(lista); system("clear"); if(valor3 == 1) printf("A lista esta vazia\n"); else printf("A lista nao esta vazia\n"); printf("\nObs: Quando a lista encadeada esta vazia, adicionar registro no fim\ne no inicio corresponde a uma mesma operacao.\n"); break; case 3: system("clear"); printf("Informe o nome do usuario: "); scanf("%s", valor1); printf("Informe o curso do usuario: "); scanf("%s", valor2); printf("Informe a fase em que se encontra o usuario: "); scanf("%d", &valor3); system("clear"); info = criaInfo(valor1, valor2, valor3); adicionaNoInicio(lista, info); break; case 4: system("clear"); printf("Informe o nome do usuario: "); scanf("%s", valor1); printf("Informe o curso do usuario: "); scanf("%s", valor2); printf("Informe a fase em que se encontra o usuario: "); scanf("%d", &valor3); system("clear"); if(lista->tamanho > 1){ imprime_lista(lista); do{ printf("Podera inserir registros entre o 1o e o ultimo registro inclusive\n"); printf("Informe a posicao que desejas inserir este registro: "); scanf("%d", &pos); }while(pos <= 0 || pos >= lista->tamanho); info = criaInfo(valor1, valor2, valor3); adicionaNaPosicao(lista, info, pos); }else if(lista->tamanho <= 1 ){ info = criaInfo(valor1, valor2, valor3); adicionaNoInicio(lista, info); } break; case 5: system("clear"); printf("Informe o nome do usuario: "); scanf("%s", valor1); printf("Informe o curso do usuario: "); scanf("%s", valor2); printf("Informe a fase em que se encontra o usuario: "); scanf("%d", &valor3); system("clear"); info = criaInfo(valor1, valor2, valor3); adicionaNoFim(lista, info); break; case 6: aux = retiraDoInicio(lista); system("clear"); printf("Registro retirado\n\nNome de usuario: %s\nCurso do usuario: %s\nFase em que o usuario se encontra: %d", aux->nome, aux->curso, aux->fase); break; case 7: aux = retiraDoFim(lista); system("clear"); printf("Registro retirado\n\nNome de usuario: %s\nCurso do usuario: %s\nFase em que o usuario se encontra: %d", aux->nome, aux->curso, aux->fase); break; case 8: imprime_lista(lista); break; case 9: if(flag == 1){ flag--; destroi_lista(lista); }else printf("Nao ha lista para destruir\n"); } } if(flag == 1){ destroi_lista(lista); } return 0; }
int main() { printf(" _________________________________________ \n"); printf("| IFCE - Engenharia de Telecomunica��es |\n"); printf("| Estrutura de Dados - Prof. Ernani |\n"); printf("| Aluna: Brena Kesia |\n"); printf("|_________________________________________|\n"); inicio = criabox('A'); imprime_lista(inicio); inicio = insere_inicio(inicio, 'B'); imprime_lista(inicio); insere_final(inicio, 'C'); imprime_lista(inicio); insere_final(inicio, 'D'); imprime_lista(inicio); insere_entre(inicio, 'E', 'A'); imprime_lista(inicio); insere_final(inicio, 'F'); imprime_lista(inicio); inicio = insere_inicio(inicio, 'G'); imprime_lista(inicio); exclue_ultimo(inicio); imprime_lista(inicio); inicio = exclue_primeiro(inicio); imprime_lista(inicio); insere_entre(inicio, 'H', 'A'); imprime_lista(inicio); inicio = exclue_valor(inicio, 'A'); imprime_lista(inicio); insere_entre(inicio, 'I', 'E'); imprime_lista(inicio); insere_final(inicio, 'J'); imprime_lista(inicio); insere_entre(inicio, 'K', 'B'); imprime_lista(inicio); inicio = exclue_valor(inicio, 'D'); imprime_lista(inicio); inicio = exclue_valor(inicio, 'K'); imprime_lista(inicio); inicio = exclue_valor(inicio, 'I'); imprime_lista(inicio); inicio = exclue_valor(inicio, 'B'); imprime_lista(inicio); insere_final(inicio, 'L'); imprime_lista(inicio); return 0; }
int main(int argc, char const *argv[]) { FILE *fp = fopen("googlebot.txt", "r"); LISTA *lista = criar_lista(); int oper, codigo, relevancia, i; char *palavra, *nomeSite, *link; leArquivo(fp, lista); fclose(fp); if(fp != NULL){ do{ printf("1 - Inserir site\n2 - Inserir palavra chave\n3 - Remover um site\n4 - Atualizar relevancia\n"); printf("5 - Mostrar lista\n6 - Busca por palavra chave\n7 - Sugestoes de sites\n8 - Sair\n\n"); scanf("%d", &oper); switch(oper){ case 1: //Inserir um novo site na lista do{ printf("Codigo: "); scanf("%d", &codigo); if(codigo < 0 || codigo > 9999) printf("Codigo invalido. Digite um valor entre 0 e 9999\n"); }while(codigo < 0 || codigo > 9999); getchar(); printf("Nome Site: "); nomeSite = lerString(); if(strlen(nomeSite) > TAM-1) nomeSite[TAM-1] = '\0'; do{ printf("Relevancia: "); scanf("%d", &relevancia); if(relevancia < 0 || relevancia > 1000) printf("Relevancia invalido. Digite um valor entre 0 e 1000\n"); }while(relevancia < 0 || relevancia > 1000); getchar(); printf("Link: "); link = lerString(); if(strlen(link) > N-1) link[N-1] = '\0'; if(!insere_site( lista, criar_no(criar_item(codigo, nomeSite, relevancia, link)))){ printf("Erro ao inserir site!\n"); } free(link); free(nomeSite); break; case 2: //Inserir palavra chave do{ printf("Codigo: "); scanf("%d", &codigo); if(codigo < 0 || codigo > 9999) printf("Codigo invalido. Digite um valor entre 0 e 9999\n"); }while(codigo < 0 || codigo > 9999); getchar(); printf("Palavra chave: "); palavra = lerString(); if(strlen(palavra) > TAM-1) palavra[TAM-1] = '\0'; for(i=0; i < strlen(palavra); i++){ palavra[i] = ctolower(palavra[i]); } if(!insere_chave(lista, codigo, palavra)){ printf("Erro ao inserir palavra chave!\n"); } free(palavra); break; case 3: //Remover um site do{ printf("Codigo: "); scanf("%d", &codigo); if(codigo < 0 || codigo > 9999) printf("Codigo invalido. Digite um valor entre 0 e 9999\n"); }while(codigo < 0 || codigo > 9999); if(!remove_site(lista, codigo)){ printf("Erro ao remover site!\n"); } break; case 4: //Atualizar relevancia do{ printf("Codigo: "); scanf("%d", &codigo); if(codigo < 0 || codigo > 9999) printf("Codigo invalido. Digite um valor entre 0 e 9999\n"); }while(codigo < 0 || codigo > 9999); do{ printf("Relevancia: "); scanf("%d", &relevancia); if(relevancia < 0 || relevancia > 1000) printf("Relevancia invalido. Digite um valor entre 0 e 1000\n"); }while(relevancia < 0 || relevancia > 1000); atualiza_relevancia(lista, codigo, relevancia); break; case 5: //Mostrar a lista imprime_lista(lista); break; case 6: //Busca por palavra chave getchar(); printf("Palavra chave: "); palavra = lerString(); if(strlen(palavra) > TAM-1) palavra[TAM-1] = '\0'; for(i=0; i < strlen(palavra); i++){ palavra[i] = ctolower(palavra[i]); } busca_palavra(lista, palavra); free(palavra); break; case 7: //Sugestao do site getchar(); printf("Palavra chave: "); palavra = lerString(); if(strlen(palavra) > TAM-1) palavra[TAM-1] = '\0'; for(i=0; i < strlen(palavra); i++){ palavra[i] = ctolower(palavra[i]); } sugestao_site(lista, palavra); free(palavra); break; default: break; } }while(oper != 8); finaliza_lista(&lista); } else { printf("Could not open googlebot.txt\n"); } return 0; }
/* main function for snp */ int main(int argc, char** argv){ int n, port_p, port_a, ret; int fd_chat; socklen_t addrlen; fd_set rfds; int maxfd, counter; struct hostent *h; struct sockaddr_in addr_chat; char opt, input[10]; char buffer[512]; char options[128]; char *cmd; char *msg; char *surname, *snpip, *snpport; char *saip, *saport; list *start,*temp; start = (list *)malloc(sizeof(list)); temp = start; temp -> prox = NULL; temp -> ant = NULL; surname = NULL; snpip = NULL; snpport = NULL; saip = NULL; saport = NULL; /* usage of getopt function which deals with the input (argv)*/ strcpy(input, "n:s:q:i:p:"); while((opt = getopt(argc, argv, input))!=-1){ if(opt == '?'){ if(optopt == 'n' || optopt == 's' || optopt == 'q' || optopt == 'i' || optopt == 'p'){ write(1, "Required arg for option -", strlen("Required arg for option -")); printf("%c", optopt); write(1, "\n", 1); } else if(isprint(optopt)) { write(1,"Unknown option -", strlen("Unknown option -")); printf("%c", optopt); write(1, "\n", 1); } else{ printf("Unknown option character `\\x%x`.\n",optopt); } return -1; } if(opt == 'n'){ surname = optarg; } if(opt == 's'){ snpip = optarg; } if(opt == 'q'){ snpport = optarg; } if(opt == 'i'){ saip = optarg; } if(opt == 'p'){ saport = optarg; } } /* check if surname, ip and port were given from argv otherwise close */ if(surname == NULL || snpip == NULL || snpport == NULL){ exit(1); } /* since it is not mandatory to give the ip of the sa: */ /* we need to check if it was given or if we should use the default (tejo) */ if(saip == NULL){ /* connect to the sa, tejo in this case */ h = gethostbyname("tejo.tecnico.ulisboa.pt"); if(h == NULL){ write(1, "Unable to reach sa (tejo)\n", strlen("Unable to reach sa (tejo)\n")); exit(1); } }else{ /* connect to the sa, other than tejo in this case */ inet_pton(AF_INET, saip, &temp); h = gethostbyaddr(&temp,sizeof(temp),AF_INET); if(h == NULL){ write(1, "Unable to reach sa\n", strlen("Unable to reach sa\n")); exit(1); } } /* since it is not mandatory to give the port of the sa: */ /* we need to check if it was given or if we should use the default (58000) */ if(saport == NULL){ /* no port given */ port_a = 58000; }else{ /* get port given by input */ port_a = atoi(saport); } /* get port given by input for this snp */ if(sscanf(snpport, "%d\n", &port_p) != 1) { write(1, "Not a valid port\n", strlen("Not a valid port\n")); exit(1); } /* initializes the socket used to communicate with schats */ fd_chat = socket(AF_INET,SOCK_DGRAM, 0); if(fd_chat == -1) exit(1); sscanf(snpport,"%d\n",&port_p); memset((void*)&addr_chat, (int)'\0', sizeof(addr_chat)); addr_chat.sin_family = AF_INET; addr_chat.sin_addr.s_addr = htonl(INADDR_ANY); addr_chat.sin_port = htons(port_p); ret = bind(fd_chat, (struct sockaddr*)&addr_chat, sizeof(addr_chat)); if(ret == -1) exit(1); /* register the snp server in the sa serverc*/ init_sa(h, port_a, surname, snpip, snpport); while(1){ FD_ZERO(&rfds); FD_SET(fd_chat,&rfds); FD_SET(fileno(stdin), &rfds); maxfd = max(fd_chat,fileno(stdin)); /* returns the number of file descriptors ready */ counter = select(maxfd+1, &rfds, (fd_set*)NULL, (fd_set*)NULL, (struct timeval *)NULL); if(counter <= 0) exit(1); if(FD_ISSET(fileno(stdin), &rfds)){ fgets(options, 128, stdin); if(strcmp(options, "list\n") == 0){ /* The typed command is LIST */ imprime_lista(start->prox); }else{ if(strcmp(options, "exit\n") == 0){ /* The typed command is EXIT */ free_sa( h, 58000, surname); break; } else write(1, "Not an option\nThe options are: \n1)list\n2)exit\n", strlen("Not an option\nThe options are: \n1)list\n2)exit\n")); } } if(FD_ISSET(fd_chat, &rfds)){ /*fd_chat is ready*/ memset(buffer,0,strlen(buffer)); addrlen = sizeof(addr_chat); n = recvfrom(fd_chat, buffer, 128, 0, (struct sockaddr*)&addr_chat, &addrlen); if(n == -1) exit(1); /* Received command */ buffer[n] = '\0'; cmd = (char*) malloc(sizeof(char)*4); strncpy(cmd,buffer, 3); cmd[3] = '\0'; if(choose_command(cmd)==0){ /* The received command is to register a user (REG) */ msg = register_new(start, buffer, n, surname); n = sendto(fd_chat, msg, strlen(msg), 0, (struct sockaddr*)&addr_chat, addrlen); if(n==-1) { write(1, "NOK message not sent. Error replying!", strlen("NOK message not sent. Error replying!")); } } if(choose_command(cmd) == 1){ /* The received command is to delete a registered user (UNR) */ msg = u_unregister(start, buffer, n, surname); n = sendto(fd_chat, msg, strlen(msg), 0, (struct sockaddr*)&addr_chat, addrlen); if(n==-1) { write(1, "NOK message not sent. Error replying!", strlen("NOK message not sent. Error replying!")); } } /* The received command is to query a user (QRY) */ if(choose_command(cmd) == 2){ msg = do_qry(start, buffer, n, h, 58000, surname); n = sendto(fd_chat, msg, strlen(msg), 0, (struct sockaddr*)&addr_chat, addrlen); if(n==-1) { write(1, "NOK message not sent. Error replying!", strlen("NOK message not sent. Error replying!")); } } free(cmd); } } close(fd_chat); free(start); exit(0); }
static void imprime_lista (celula *p, FILE *saida) { if (p == NULL) return; imprime_lista (p->prox, saida); fprintf (saida, "%d, ", p->cont); }
int main() { int escolha=0, aux=0; /* Variavel que aloca a escolha feita pelo utilizador */ List l_lavagem, l_reparacao, l_lavagem_pre, l_reparacao_pre; List_c l_clientes; l_clientes=start_l_c(); l_lavagem=start_l(1, l_clientes); l_reparacao=start_l(2, l_clientes); l_lavagem_pre=start_l(3, l_clientes); l_reparacao_pre=start_l(4, l_clientes); /* Concluir as reservas com base na hora do sistema */ aux=conclui(l_lavagem, l_reparacao, l_lavagem_pre, l_reparacao_pre, l_clientes); if (aux==1) { update_bd_l(l_lavagem, 1); update_bd_l(l_reparacao, 2); update_bd_l(l_lavagem_pre, 3); update_bd_l(l_reparacao_pre, 4); } system("clear"); while(escolha!=7) { printf("\nBem vindo!\n"); /* Mensagem de boas vindas */ escolha=menu(); switch(escolha) { case 1: insere_reserva(l_lavagem, l_reparacao, l_lavagem_pre, l_reparacao_pre, l_clientes); update_bd_l(l_lavagem, 1); update_bd_l(l_reparacao, 2); update_bd_l(l_lavagem_pre, 3); update_bd_l(l_reparacao_pre, 4); if (check()==1) { system("clear"); } break; case 2: elimina_reserva(l_lavagem, l_reparacao, l_lavagem_pre, l_reparacao_pre, l_clientes); update_bd_l(l_lavagem, 1); update_bd_l(l_reparacao, 2); update_bd_l(l_lavagem_pre, 3); update_bd_l(l_reparacao_pre, 4); if (check()==1) { system("clear"); } break; case 3: elimina_pre_reserva(l_lavagem_pre, l_reparacao_pre, l_clientes); update_bd_l(l_lavagem, 1); update_bd_l(l_reparacao, 2); update_bd_l(l_lavagem_pre, 3); update_bd_l(l_reparacao_pre, 4); if (check()==1) { system("clear"); } break; case 4: printf("--------Lista de Lavagens------\n \n"); imprime_lista(l_lavagem); printf("-------Lista de Reparações-----\n \n"); imprime_lista(l_reparacao); printf("----Lista de Espera Lavagens----\n \n"); imprime_lista(l_lavagem_pre); printf("---Lista de Espera Reparações---\n \n"); imprime_lista(l_reparacao_pre); if (check()==1) { system("clear"); } break; case 5: lista_cliente(l_clientes); if (check()==1) { system("clear"); } break; case 6: creditos(); if (check()==1) { system("clear"); } break; } } system("clear"); return 0; }