5
I’m implementing the function decodificar
, which aims to call auxiliary functions to reverse all non-vowel sequences. For example, if the word is "cool monsters," it will go 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 the inversions are not being made. My program is ending with status 0, according to Codeblocks, even after calling the function decodificar
. Complete code: https://repl.it/KrQg/3
Thank you very much for your help, Marcos. However, it was not possible to reverse the non-vowels. Here is the code for further details: https://repl.it/Kdko/21
– Kfcaio