From 2a1d6cfac319b64b5846b25d2778787f0fd3e17a Mon Sep 17 00:00:00 2001 From: nanometer5088 Date: Fri, 14 Apr 2023 20:04:53 -0300 Subject: [PATCH] Added ... all files? --- .gitignore | 3 ++ Arquivo-Guia - Pergunta.pdf | Bin 0 -> 42141 bytes Makefile | 22 ++++++++++++ README.md | 44 +++++++++++++++++++++++- bin/.gitkeep | 0 include/dicionario.c | 37 ++++++++++++++++++++ include/dicionario.h | 8 +++++ main.c | 65 ++++++++++++++++++++++++++++++++++++ texto.txt | 6 ++++ 9 files changed, 184 insertions(+), 1 deletion(-) create mode 100644 Arquivo-Guia - Pergunta.pdf create mode 100644 Makefile create mode 100644 bin/.gitkeep create mode 100644 include/dicionario.c create mode 100644 include/dicionario.h create mode 100644 main.c create mode 100644 texto.txt diff --git a/.gitignore b/.gitignore index cd531cf..f335526 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,6 @@ Module.symvers Mkfile.old dkms.conf +# Project-generated files +dicionario.txt +bin/main \ No newline at end of file diff --git a/Arquivo-Guia - Pergunta.pdf b/Arquivo-Guia - Pergunta.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bee1c76945bfe33d0963ea700eb09fbac117ae7b GIT binary patch literal 42141 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

C;yrjGFe>duwwSZpy?U|Q8t7{ZYNJsskuAOf*i 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 literal 0 HcmV?d00001 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..fb71ea1 --- /dev/null +++ b/Makefile @@ -0,0 +1,22 @@ +BIN_DIR = bin + +all: $(BIN_DIR)/main + +$(BIN_DIR)/main: main.c include/dicionario.c + @echo "Compiling main.c" + @gcc -c main.c -I include/ -o main.o + + @echo "Compiling dicionario.c" + @gcc -c include/dicionario.c -o dicionario.o + + @echo "Linking main.o and dicionario.o" + @gcc main.o dicionario.o -o bin/main + + @echo "Cleaning up" + @rm -f main.o + @rm -f dicionario.o + +clean: + @echo "Cleaning up" + @rm -f bin/main + @rm -f dicionario.txt diff --git a/README.md b/README.md index ef1f88f..d431d1a 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,44 @@ -# Trabalho_Bimestral_C +# Primeiro Dicionário do Samuel +Este projeto é um programa simples de linha de comando que lê um arquivo de texto, cria um dicionário de palavras únicas e escreve o dicionário em um arquivo de saída em ordem decrescente. O programa é escrito em C e consiste em três arquivos: `main.c`, `dicionario.c` e `dicionario.h`. O arquivo `main.c` contém a função principal que executa o programa, enquanto `dicionario.c` e `dicionario.h` contêm funções auxiliares para trabalhar com o dicionário. + +## Como usar + +Para usar este programa, siga estes passos: + +1. Clone o repositório ou baixe os arquivos para o seu computador. +2. Abra um terminal e navegue até o diretório que contém os arquivos. +3. Execute o comando `make` para compilar o programa. +4. Execute o programa digitando `./bin/main` no terminal. +5. O programa lerá o arquivo de entrada `texto.txt`, criará um dicionário de palavras únicas e escreverá o dicionário no arquivo de saída `dicionario.txt`. + +## Arquivos + +### main.c + +O arquivo `main.c` contém a função principal que executa o programa. Ele abre o arquivo de entrada, cria um dicionário de palavras únicas, escreve o dicionário no arquivo de saída e, em seguida, libera a memória usada pelo dicionário. O arquivo inclui o arquivo de cabeçalho `dicionario.h` e usa as funções definidas em `dicionario.c`. + +### dicionario.c + +O arquivo `dicionario.c` contém funções auxiliares para trabalhar com o dicionário. Ele inclui o arquivo de cabeçalho `dicionario.h`, que define as funções usadas em `main.c`. O arquivo contém três funções: + +- `insert_word`: Insere uma nova palavra no dicionário em ordem alfabética. +- `binary_search`: Procura no dicionário por uma palavra específica usando busca binária. +- `to_lowercase`: Converte uma palavra em minúsculas. + +### dicionario.h + +O arquivo `dicionario.h` contém protótipos de função para as funções auxiliares definidas em `dicionario.c`. Ele é incluído tanto em `main.c` quanto em `dicionario.c`. + +### Makefile + +O `Makefile` é usado para compilar o programa. Ele inclui regras para compilar `main.c` e `dicionario.c` e vinculá-los em um arquivo executável `main`. Ele também inclui uma regra `clean` para remover o arquivo executável e o arquivo de saída. + +## Conclusão + +Este projeto demonstra como ler e escrever arquivos em C, bem como como usar funções auxiliares para manipular dados. Ele fornece um exemplo simples de como criar um dicionário de palavras únicas a partir de um arquivo de texto. + +## Pendente + +- Inserir testes alternativos em uma pasta +- Comentar melhor o código diff --git a/bin/.gitkeep b/bin/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/include/dicionario.c b/include/dicionario.c new file mode 100644 index 0000000..e66b671 --- /dev/null +++ b/include/dicionario.c @@ -0,0 +1,37 @@ +#include +#include +#include "dicionario.h" + +// Insere uma nova palavra no dicionário de palavras +void insert_word(char **dict, int *size, char *word) { + int i; + for (i = *size-1; i >= 0 && strcmp(dict[i], word) < 0; i--) { + strcpy(dict[i+1], dict[i]); + } + strcpy(dict[i+1], word); + (*size)++; +} + +// Faz busca binária no dicionário de palavras +int binary_search(char **dict, int left, int right, char *word) { + if (right >= left) { + int mid = left + (right - left) / 2; + if (strcmp(dict[mid], word) == 0) { + return mid; + } + if (strcmp(dict[mid], word) > 0) { + return binary_search(dict, mid+1, right, word); + } + return binary_search(dict, left, mid-1, word); + } + return -1; +} + +// Converte a palavra para letras minúsculas +void to_lowercase(char *word) { + int i = 0; + while (word[i] != '\0') { + word[i] = tolower(word[i]); + i++; + } +} diff --git a/include/dicionario.h b/include/dicionario.h new file mode 100644 index 0000000..ec92ddb --- /dev/null +++ b/include/dicionario.h @@ -0,0 +1,8 @@ +#ifndef DICIONARIO_H +#define DICIONARIO_H + +void insert_word(char **dict, int *size, char *word); +int binary_search(char **dict, int left, int right, char *word); +void to_lowercase(char *word); + +#endif \ No newline at end of file diff --git a/main.c b/main.c new file mode 100644 index 0000000..50743fe --- /dev/null +++ b/main.c @@ -0,0 +1,65 @@ +#include +#include +#include +#include "dicionario.h" + +const int MAX_WORDS = 100; +const int MAX_WORD_SIZE = 50; + +int main() { + FILE *input_file, *output_file; + char word[MAX_WORD_SIZE]; + char **dict; + int dict_size = 0; + + // Abre o arquivo de entrada + input_file = fopen("texto.txt", "r"); + if (input_file == NULL) { + printf("Erro ao abrir arquivo de entrada\n"); + exit(1); + } + + // Aloca memória para o dicionário de palavras + dict = (char**) malloc(MAX_WORDS * sizeof(char*)); + for (int i = 0; i < MAX_WORDS; i++) { + dict[i] = (char*) malloc(MAX_WORD_SIZE * sizeof(char)); + } + + // Lê as palavras do arquivo de entrada e insere no dicionário + while (fscanf(input_file, "%s", word) != EOF) { + to_lowercase(word); + if (strcmp(word, ".") == 0) { + break; + } + if (binary_search(dict, 0, dict_size-1, word) == -1) { + insert_word(dict, &dict_size, word); + } + } + + // Fecha o arquivo de entrada + fclose(input_file); + + // Abre o arquivo de saída + output_file = fopen("dicionario.txt", "w"); + if (output_file == NULL) { + printf("Erro ao abrir arquivo de saída\n"); + exit(1); + } + + // Escreve as palavras do dicionário no arquivo de saída + for (int i = 0; i < dict_size; i++) { + fprintf(output_file, "%s\n", dict[i]); + } + fprintf(output_file, "\nTotal de palavras diferentes no dicionario: %d", dict_size); + + // Fecha o arquivo de saída + fclose(output_file); + + // Libera a memória alocada para o dicionário de palavras + for (int i = 0; i < MAX_WORDS; i++) { + free(dict[i]); + } + free(dict); + + return 0; +} diff --git a/texto.txt b/texto.txt new file mode 100644 index 0000000..98440cb --- /dev/null +++ b/texto.txt @@ -0,0 +1,6 @@ +texT +Adventures in Disneyland +Two blondes were going to Disneyland when they came to a fork in the +road The sign read disneyland LEFT +So they went home +. \ No newline at end of file