int main(int argc, char *argv[]){ if (argc == 3){ // Nome do arquivo (argv[0]) mais os dois parâmetros char entrada[40] = "entrada/"; char saida[40] = "saida/"; int k; // Instâncias de palavras char *palavra; palavra = (char *) malloc (MAXCHAR * sizeof(char)); int tamPalavra; Matriz estados; // Matriz n x 2, onde n é o tamanho da string e possui dois estados, o atual e o anterior. strcat(entrada,argv[1]); strcat(saida,argv[2]); FILE * inp = abreArquivoLeitura(entrada); FILE * out = abreArquivoEscrita(saida); fscanf(inp, "%d ", &k); // Lê as k instâncias de problemas for (int l=0; l<k; l++){ fscanf(inp,"%s\n",palavra); tamPalavra = strlen(palavra); criaMatriz(2,tamPalavra+1,&estados); preencheMatriz(0,&estados); // Preenche matriz toda com 0 fprintf(out,"%d\n",lcs(palavra, tamPalavra, &estados)); //imprimeMatriz(estados); destroiMatriz(&estados); } free(palavra); fechaArquivo(inp); fechaArquivo(out); } else{ printf("Número incorreto de parâmetros. Fazer seguir exemplo:\n\n\t./tp2 input.txt output.txt\n\n"); exit(0); } return 0; }
int main(int argc, char *argv[]) { //Nomes dos arquivos char NomeArqEntrada[TAMMAXNOMEARQ]; char NomeArqSaida[TAMMAXNOMEARQ]; //Status se o programa vai gerar dados para análise ou não bool Analise; int numThreads; //Verifica se os parâmetros necessários foram passados para o programa checaEntrada(argc, argv, NomeArqEntrada, NomeArqSaida, &numThreads, &Analise); FILE *ArqEntrada = abreArquivoLeitura(NomeArqEntrada); FILE *ArqSaida = fopen(NomeArqSaida, "w"); SMP(ArqEntrada, numThreads, ArqSaida, Analise); fclose(ArqEntrada); fclose(ArqSaida); return EXIT_SUCCESS; }
int main(int argc, char *argv[]){ if (argc == 3){ // Nome do arquivo (argv[0]) mais os dois parâmetros char entrada[40] = "entrada/"; char saida[40] = "saida/"; int k; // instâncias a serem simuladas int tam_mem_fis, tam_pagina, n_acessos; // tamanho (em bytes) da memória física, de cada página e o número n de acessos int num_paginas; // Quantas páginas a memória primária terá int posicao_acessada; TipoCelula pagina_atual; strcat(entrada,argv[1]); strcat(saida,argv[2]); FILE * inp = abreArquivoLeitura(entrada); FILE * out = abreArquivoEscrita(saida); fscanf(inp, "%d ", &k); // Lê as k instâncias de problemas for (int l=0; l<k; l++){ fscanf(inp, "%d %d %d\n", &tam_mem_fis, &tam_pagina, &n_acessos); num_paginas = tam_mem_fis / tam_pagina; // Num de páginas é a razão do tam da memória com o tamanho de cada página TipoLista memoria_fifo, memoria_lru, memoria_lfu; Cria(&memoria_fifo); Cria(&memoria_lru); Cria(&memoria_lfu); memoria_fifo.paginas_livres = num_paginas; memoria_lru.paginas_livres = num_paginas; memoria_lfu.paginas_livres = num_paginas; for (int a=0; a<n_acessos; a++){ fscanf(inp, "%d", &posicao_acessada); pagina_atual.pagina = posicao_acessada / tam_pagina; pagina_atual.num_acessos = 1; FIFO(&memoria_fifo, pagina_atual); LRU(&memoria_lru, pagina_atual); LFU(&memoria_lfu, pagina_atual); } fprintf(out,"%d ",memoria_fifo.misses); fprintf(out,"%d ",memoria_lru.misses); fprintf(out,"%d\n",memoria_lfu.misses); LiberaLista(&memoria_fifo); LiberaLista(&memoria_lru); LiberaLista(&memoria_lfu); } fechaArquivo(inp); fechaArquivo(out); } }