示例#1
0
//------------------------------------------------------------------------------
// 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);
}
示例#2
0
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 ;
}
示例#3
0
    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) ;
}
示例#4
0
文件: btree.c 项目: vwraposo/MAC0121
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");  
}
示例#6
0
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);
}
示例#7
0
文件: listad.c 项目: leolas95/c
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");

}
示例#10
0
文件: a2.c 项目: fvgarcia/codigos-c
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);

}
示例#11
0
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;
}
示例#12
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);

}
示例#13
0
/* 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;
}
示例#15
0
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;
}
示例#16
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;
}
示例#17
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;
}
示例#18
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;
}
示例#19
0
文件: snp.c 项目: ruidbras/securechat
/* 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);
}
示例#20
0
文件: btree.c 项目: vwraposo/MAC0121
static void imprime_lista (celula *p, FILE *saida) {
    if (p == NULL) return;
    imprime_lista (p->prox, saida);
    fprintf (saida, "%d, ", p->cont);
}
示例#21
0
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;
}