Olá, Pedro! Parece que você está se esforçando bastante nesse projeto, parabéns!
A "Falha de Segmentação" geralmente ocorre quando um programa tenta acessar uma área de memória que não lhe foi alocada. Isso pode acontecer por diversos motivos, como tentar acessar um array além de seu tamanho, desreferenciar um ponteiro nulo, entre outros.
Vou deixar algumas sugestões gerais para tentar te ajudar:
Use uma ferramenta de depuração: Uma ferramenta de depuração (debugger) pode te ajudar a identificar a linha exata onde a falha de segmentação está ocorcendo. No Linux, por exemplo, você pode usar o gdb.
Verifique os ponteiros: Assegure-se de que todos os ponteiros que você está usando foram inicializados corretamente e que não estão apontando para locais de memória que não foram alocados para o seu programa.
Verifique os limites do array: Se você está usando arrays, certifique-se de que não está tentando acessar um índice além do tamanho do array.
Verifique a alocação de memória: Se você está usando alocação dinâmica de memória, certifique-se de que a memória foi alocada corretamente antes de tentar acessá-la.
Espero ter ajudado e bons estudos!