Skip to content
jotavsevlaPublic

About

Exercícios independentes em C/C++ sobre algoritmos, ponteiros e memória; README distingue exemplos válidos de rascunhos com falhas.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Exercícios de C e C++

Repositório de estudo com pequenos programas independentes sobre algoritmos, estruturas de dados, ponteiros, alocação dinâmica e entrada/saída. O diretório também reúne rascunhos que ainda precisam de correções; portanto, o nome testes não representa uma suíte de testes automatizados.

Conteúdo

Arquivo Tema Estado atual
c/conversaoromanos.c Conversão gulosa de um inteiro para algarismos romanos Compila e converte entradas positivas; não valida o intervalo nem informa erro para zero ou negativos
c/exercicioCredit.c Soma de verificação semelhante ao algoritmo de Luhn e identificação inicial de bandeira Compila com avisos, mas possui alocação insuficiente para a string e não deve ser considerado um validador de cartões pronto
c/exercicioLista.c Lista simplesmente encadeada, inserção no início e remoção de duplicatas Compila com aviso; as condições usadas para percorrer a lista podem desreferenciar um ponteiro nulo
c/exercicioSopa.c Simulação aleatória de consumo de duas sopas em porções de 25 ml Compila, mas a leitura interativa é sensível a espaços/quebras de linha e algumas quantidades podem deixar a simulação sem progresso
c/exercicioTarget.c Busca de dois valores que somam um alvo (Two Sum) Compila e o exemplo fixo retorna os índices 0 e 1; usa busca quadrática
c/frequenciadeX_v1.c Geração de valores aleatórios e tentativa de encontrar o mais frequente Rascunho: atualmente não compila por identificadores inexistentes, declaração duplicada e chaves inconsistentes
c/mergesort.c Divisão recursiva e intercalação do Merge Sort Compila, porém o vetor auxiliar é alocado com tamanho incorreto e a execução acessa memória fora do limite
c/hellowworldem.cpp Primeiros passos com saída em C/C++ e std::sort Rascunho: atualmente não compila porque std::sort recebe valores em vez de iteradores

Conceitos praticados

  • decomposição recursiva e intercalação no Merge Sort;
  • busca por força bruta com dois laços, de complexidade O(n²), no Two Sum;
  • lista encadeada com struct, ponteiro para o próximo nó e ponteiro para ponteiro nas operações que alteram o início da lista;
  • alocação dinâmica com malloc, liberação pontual com free e passagem de vetores por ponteiro;
  • manipulação de strings, entrada pelo terminal e geração pseudoaleatória;
  • uso inicial da biblioteca padrão do C++.

Esses exemplos são úteis para estudo e depuração. Há alocações que não são liberadas, caminhos sem tratamento de erro e acessos inválidos descritos na tabela acima; eles também são oportunidades para praticar gerenciamento de memória.

Estrutura

.
├── README.md
└── c/
    ├── conversaoromanos.c
    ├── exercicioCredit.c
    ├── exercicioLista.c
    ├── exercicioSopa.c
    ├── exercicioTarget.c
    ├── frequenciadeX_v1.c
    ├── hellowworldem.cpp
    └── mergesort.c

Cada arquivo possui sua própria função main e deve ser compilado separadamente. Apesar do nome do diretório, hellowworldem.cpp é C++.

Requisitos

  • um compilador compatível com C11, como Clang ou GCC;
  • um compilador compatível com C++17 para o exemplo .cpp;
  • terminal compatível com os comandos abaixo.

Compilação e execução

Execute os comandos a partir da raiz do repositório:

mkdir -p build

cc -std=c11 -Wall -Wextra -pedantic \
  c/conversaoromanos.c -o build/conversaoromanos

cc -std=c11 -Wall -Wextra -pedantic \
  c/exercicioTarget.c -o build/exercicioTarget

Exemplos:

printf '1994\n' | ./build/conversaoromanos
# saída: MCMXCIV

./build/exercicioTarget
# saída: Os indices dos numeros que somados resultam no alvo são: 0 e 1

Os outros arquivos C que compilam podem ser verificados individualmente trocando o nome da entrada e do executável:

cc -std=c11 -Wall -Wextra -pedantic \
  c/exercicioLista.c -o build/exercicioLista

Compilar não garante uma execução segura neste repositório. Antes de executar exercicioCredit, exercicioLista, exercicioSopa ou mergesort, consulte os problemas conhecidos na tabela de conteúdo. frequenciadeX_v1.c e hellowworldem.cpp precisam ser corrigidos antes de gerar executáveis.

Testes e qualidade

Não há framework de testes, casos automatizados, sistema de build (Makefile/CMake) ou integração contínua configurados. O estado documentado acima foi conferido compilando cada arquivo de forma isolada com avisos habilitados. Também foi usada instrumentação de memória no Merge Sort, que detectou escrita fora do vetor auxiliar.

Próximos passos naturais para evoluir o repositório:

  1. corrigir primeiro os erros de compilação e de acesso à memória;
  2. separar lógica de negócio de entrada/saída para facilitar testes;
  3. adicionar casos para entradas válidas, limites e ausência de resultado;
  4. criar um Makefile e uma suíte de testes reproduzível;
  5. executar os exemplos com sanitizadores de memória durante o desenvolvimento.

Limitações

  • Os programas foram escritos como exercícios independentes e não formam uma biblioteca ou aplicação única.
  • As entradas, os limites e as falhas de alocação ainda não são tratados de maneira uniforme.
  • A identificação de bandeira em exercicioCredit.c usa apenas o primeiro dígito, sem validar os intervalos e comprimentos completos de cada emissor.
  • O repositório não contém arquivo de licença; consulte o autor antes de reutilizar o código fora do contexto permitido pelo GitHub.

Repositórios relacionados

Este repositório funciona como laboratório de exercícios e rascunhos, não como suíte automatizada. Para coleções mais estruturadas, consulte:

About

Exercícios independentes em C/C++ sobre algoritmos, ponteiros e memória; README distingue exemplos válidos de rascunhos com falhas.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages