Exemple #1
0
//!///////////////////////////////////////////////////////////////////////MAIN/////////////////////////////////////////////////////////////////////
void main() {

    TipoGrafo *g = (TipoGrafo*)malloc(sizeof(TipoGrafo) * 10);
    carregaArquivo(g);
    imprimeGrafo(g);
    printf("\n");

    int *resp = dijkstra(g, 1);
    for(int i = 1; i <= nVertices; i++) {
        printf("D(v1 -> v%d) = %d\n", i, resp[i]);
    }


/*
//! testes heap
  iniciarMinHeap(6);
  for (int i = 0; i <=5; i++) {
    push(1);
  }
    push (DBL_MAX);
    push (8);
    push (-6);
    push (3);
    push (1);
    printf ("heap after pusshing DBL_MAX 8 -6 3 1 -5\n");
    printHeap ();
    pop ();
    printf ("heap array after pop \n");
    printHeap ();
    push (2);
    printf ("heap array after pushing 2\n");
    printHeap ();*/

}
/*********************************MAIN************************************/
int main(int argc, char **argv) {
    criarArvore(&arvore);/*passa o endereco pra que a funcao crie*/
    FILE *arquivo, *arquivoremove, *arquivoentrada, *desenho_arvore, *fim;
    DIR *dir;
    struct dirent *lsdir;
    dir= opendir(argv[1]);/*Url passada dos arquivos dos alunos.dat*/
    char caminho[300], caminhosaida[300], caminhoremove[300];
    /* Primeiro parâmetro: o de leitura */

    /***********************CARREGANDO ARQUIVOS DA PASTA****************************************/
    while ( ( lsdir = readdir(dir) ) != NULL )//atraves do readdir o lsdir tem struct com nomes como parametros..
    {
        if (strcmp(lsdir->d_name, ".") != 0 && strcmp(lsdir->d_name, "..")) { /*O lsdir traz pontos indesejaveis, entao para que nao use-o - uma condicao*/
            /*De um por um, com o lsdir->d_name*/
            strcpy(caminho,argv[1]);//salvando em uma variavel
            strcat(caminho, "/");
            strcat(caminho,lsdir->d_name);/*Concatenando*/
            //printf("%s\n",caminho);
            arquivo = fopen(caminho, "r");
            carregaArquivo(&arvore, arquivo);
        }
    }

    closedir(dir);
    /**************IMPRESSAO EM DESENHO INICIAL.RES*****************/
    strcpy(caminhosaida, argv[3]);
    strcat(caminhosaida,"/carga-inicial.res");
    desenho_arvore = fopen(caminhosaida, "w");
    mostrar(arvore.topo, 0, desenho_arvore);
    fclose(desenho_arvore);
    /*********************REMOVER**********************/
    strcpy(caminhoremove, argv[3]);//terceiro argumento..saída
    strcat(caminhoremove, "/");
    strcat(caminhoremove, "excluir.res");
    arquivoremove = fopen(caminhoremove, "w");
    /**********concatenando strings para a entrada ************/
    strcpy(caminho, argv[2]);
    strcat(caminho, "/");
    strcat(caminho, "excluir.in");
    arquivo = fopen(caminho, "r");
    remover(arvore, arquivo, arquivoremove);//removendo todos do excluir.in o argv2 é o parametro de remocao
    /*****************DESENHO APOS EXCLUSAO.RES (matriculas impressa em formato de arvore********************/
    strcpy(caminhosaida, argv[3]);
    strcat(caminhosaida, "/apos-exclusao.res");
    desenho_arvore = fopen(caminhosaida, "w");
    mostrar(arvore.topo, 0, desenho_arvore);
    fclose(desenho_arvore);
    /**************IMPRESSAO APOS EXCLUSAO***********/
    strcpy(caminhosaida, argv[3]);
    strcat(caminhosaida,"/final.res");
    fim = fopen(caminhosaida,"w");
    salvar(arvore.topo, fim);
    /**************************************************/
    return 0;
}
int main(int argc, char** argv) {
    // verifica se um parametro foi passado, senao exibe a forma de uso
    if (!argv[1]){
        mostraUso();
        return 0;
    }

    // Procedimento que carrega os dados do arquivo em uma matriz
    int **matriz;
    int linhas, colunas;
    printf("Abrindo arquivo...\n");
    matriz = (int **)carregaArquivo(argv[1], &linhas, &colunas);
    if (!matriz){
        printf("ERRO: nao foi possivel abrir o arquivo %s\n", argv[1]);
        return 0;
    }
        
    // entrando no loop do menu
    int opcao;
    do{
        // limpa a tela se o clear estiver disponível
        system("clear");
        printf("Selecione uma opcao ou 0 para encerrar\n" \
                "[1] - Salvar\n" \
                "[2] - Limiarizar\n" \
                "[3] - Inverter\n" \
                "[4] - Media 3x3\n" \
                "[5] - Mediana 3x3\n" \
                "[6] - Numero de brancos\n" \
                "======> ");
        scanf("%d", &opcao);
        switch(opcao){
            case 0:
                break;
            case 1:
                printf("\nNome do novo arquivo (enter para sobrescrever): ");
                char caminho[20];
                // workaround do buffer sujo
                getchar();
                fgets(caminho, sizeof(caminho), stdin);
                if (caminho)
                    salvaArquivo(caminho, matriz, linhas, colunas);
                else
                    salvaArquivo(argv[1], matriz, linhas, colunas);
                teclaEnter();
                break;
            case 2:
                limiarizar(matriz, linhas, colunas);
                mostraMatriz(matriz, linhas, colunas);
                break;
            case 3:
                inverter(matriz, linhas, colunas);
                mostraMatriz(matriz, linhas, colunas);
                break;
            case 4:
                if (media3x3(matriz, linhas, colunas))
                    mostraMatriz(matriz, linhas, colunas);
                break;
            case 5:
                if (mediana3x3(matriz, linhas, colunas))
                    mostraMatriz(matriz, linhas, colunas);
                break;
            case 6:
                printf("\nNumero de brancos: %d\n", nroBrancos(matriz, linhas, colunas));
                // espera input do teclado
                teclaEnter();
                break;
            default:
                printf("Opcao nao reconhecida");
                teclaEnter();
                break;
        }
    }while(opcao != 0);

    // liberacao de memoria
    desalocaMatriz(matriz, linhas);
    
    return 0;
}