Exercícios de C/C++ para iniciantes

Verificar palíndromo em C e C++

Nesta lição, você vai verificar se uma palavra se lê igual de frente para trás e de trás para frente comparando os caracteres simétricos.

Introdução

Um palíndromo (palindrome) é uma string que não muda quando invertemos a ordem dos caracteres, como "level" ou "radar". Para verificar, comparamos o primeiro caractere com o último, o segundo com o penúltimo, e assim por diante até o meio.

Pontos importantes

  • Ative os avisos do compilador (compiler warnings) e corrija todos eles.
  • Entenda o tipo de dado e o tempo de vida (lifetime) de cada valor.
  • Sempre valide os dados de entrada e os limites dos índices de arrays.

Exemplos de código C e C++

C
Executar →
main.c
#include <stdio.h>
#include <string.h>
int main(void) {
    const char *text = "level"; size_t length = strlen(text); int palindrome = 1;
    // Compare characters mirrored around the center.
    for (size_t i = 0; i < length / 2; ++i)
        if (text[i] != text[length - 1 - i]) { palindrome = 0; break; }
    printf("%s is %sa palindrome\n", text, palindrome ? "" : "not ");
}
Resultado da execução
level is a palindrome
C++
Executar →
main.cpp
#include <algorithm>
#include <iostream>
#include <string>
int main() {
    std::string text = "level";
    // equal compares the first half with a reversed view.
    bool palindrome = std::equal(text.begin(), text.begin() + text.size() / 2, text.rbegin());
    std::cout << text << " is " << (palindrome ? "" : "not ") << "a palindrome\n";
}
Resultado da execução
level is a palindrome

Comparação entre C e C++

O laço só precisa ir até o meio da string (length / 2), porque cada par de caracteres simétricos só precisa ser testado uma vez. O caractere text[i] é comparado com text[length - 1 - i]. Assim que encontra um par diferente, o programa conclui que não é palíndromo e sai do laço com break.

C

C usa funções procedurais pequenas e deixa à vista como os dados ficam na memória.

C++

C++ continua permitindo trabalhar em baixo nível, mas acrescenta tipos da biblioteca e abstrações mais seguras.

Exercícios práticos

Execute as duas versões e depois mude o código para observar a diferença de segurança que cada linguagem oferece.

  • Teste entradas inválidas e valores nos limites.
  • Compile com as flags -Wall -Wextra -Wpedantic para ativar mais avisos.
  • Separe as declarações compartilhadas em um arquivo de cabeçalho e a implementação em outro arquivo.

Pratique com um desafio

Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.

Todos os desafios