I'm implementing the decodificar
function, which aims to call auxiliary functions to invert all non-vowel sequences. For example, if the word is "legal monsters", it will continue to "mortsnol segais".
void inverterNvs(NO* elemento, NO* anteriorAoElemento) {
if (elemento->prox != NULL) {
inverterNvs(elemento->prox, elemento);
}
elemento->prox = anteriorAoElemento;
}
bool verificaSequencia(NO* dado) {
if (dado->letra != 'a' || dado->letra != 'e' || dado->letra != 'i' || dado->letra != 'o' || dado->letra != 'u'){
return true;
}
else{
return false;
}
}
void decodificar(LISTA* resp) {
NO* pNv = NULL; // Primeira não-vogal encontrada.
NO* ultNv = NULL; // Última não-vogal encontrada.
NO* atual = resp->inicio; // Ponteiro para percorrer a lista.
/* Laço para percorrer toda lista. */
while (atual->prox != NULL) {
/* Enquanto atual apontar para uma não-vogal. */
if (verificaSequencia(atual)) {
/* Salva o primeiro caso encontrado de não-vogal. */
pNv = atual;
/* Procura na lista o último caso de não-vogal. */
while (verificaSequencia(atual->prox)) {
atual = atual->prox;
}
/* Quando a próxima letra for uma vogal, então foi atingido o fim da sequência de não-vogais. */
ultNv = atual;
/* Se existir uma sequência de não-vogais, ou seja, pNv e ultNv não apontarem para o mesmo elemento, então a troca de posições deve ser efetuada. */
if (pNv != ultNv) {
/* Chama uma função recursiva para efetuar a troca de posições sem precisar criar uma nova lista. */
inverterNvs(pNv->prox, pNv);
}
}
/* Move para o próximo elemento. */
atual = atual->prox;
}
}
I wonder if my code solves the problem and how to complete it so that it works because inversions are not being made. My program is ending with status 0, according to CodeBlocks, even after calling the decodificar
function. Full Code: link