Você está aqui: C++ ::: Dicas & Truques ::: Recursão (Recursividade)

Como inverter uma string em C++ usando uma função recursiva

Quantidade de visualizações: 661 vezes
Nesta dica vamos novamente falar de recursão e recursividade em C++, ou seja, funções que chamam a si mesmas. Dessa vez vamos escrever uma função recursiva que inverte a ordem dos caracteres de uma palavra, frase ou texto.

Veja o código C++ completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <iostream>

using namespace std;
 
// função recursiva para inverter uma string 
void inverter_string(string& str, int n, int i){
  // caso base? 
  if (n <= i){
    return;
  }
  
  // troca os dois caracteres de lugar
  swap(str[i], str[n]);
  
  // e chama a função mais uma vez
  inverter_string(str, n - 1, i + 1);
}
 
// função principal do programa 
int main(int argc, char *argv[]){
  // vamos criar uma nova string
  string frase = "Gosto de programar em C++";
  cout << "String original: " << frase << endl;
  
  // agora vamos inverter a string
  inverter_string(frase, frase.length() - 1, 0);
  
  // e mostramos o resultado
  cout << "String invertida: " << frase << endl;
   
  cout << "\n" << endl;
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executar este código C++ nós teremos o seguinte resultado:

String original: Gosto de programar em C++
String invertida: ++C me ramargorp ed otsoG

Link para compartilhar na Internet ou com seus amigos:

C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Strings e Caracteres

Exercícios Resolvidos de C++ - Como retornar o código ASCII associado a um caractere em C++ - Ler um caractere e retornar o código ASCII correspondente

Quantidade de visualizações: 555 vezes
Pergunta/Tarefa:

Escreva um programa C++ que pede para o usuário informar um caractere (letra ou número) e mostre o código ASCII correspondente.

Sua saída deverá ser parecida com:

Informe um caractere: A
Você informou o caractere: A
O código ASCII correspondente é: 65
Resposta/Solução:

Veja a resolução comentada deste exercício em C++:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <iostream>

using namespace std;

// função principal do programa
int main(int argc, char *argv[]){
  // variáveis usadas na resolução do problema
  char caractere;
  int codigo;
  
  // vamos pedir para o usuário informar uma letra, símbolo ou pontuação
  cout << "Informe um caractere: ";
    
  // vamos ler o caractere informado
  cin >> caractere;
    
  // agora vamos obter o código ASCII correspondente
  codigo = (int)caractere;
    
  // e mostramos o resultado
  cout << "Você informou o caractere: " << caractere << endl;
  cout << "O código ASCII correspondente é: " << codigo << endl;
  
  cout << "\n" << endl;
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

O Código Padrão Americano para o Intercâmbio de Informação (do inglês American Standard Code for Information Interchange - ASCII, pronunciado [áski]) é um sistema de representação de letras, algarismos e sinais de pontuação e de controle, através de um sinal codificado em forma de código binário (cadeias de bits formada por vários 0 e 1), desenvolvido a partir de 1960, que representa um conjunto de 128 sinais: 95 sinais gráficos (letras do alfabeto latino, algarismos arábicos, sinais de pontuação e sinais matemáticos) e 33 sinais de controle, utilizando 7 bits para representar todos os seus símbolos.


C++ ::: Dicas & Truques ::: Arquivos e Diretórios

Como renomear um diretório em C++ usando a função rename()

Quantidade de visualizações: 8231 vezes
Em algumas situações nossos códigos C++ precisam renomear diretórios. Isso pode ser feito com o auxílio da função rename() ou _rename(), disponível no header io.h or stdio.h (trazido da linguagem C). Veja a assinatura desta função:

int rename(const char *oldname, const char *newname);


Se o diretório for renomeado com sucesso a função retornará o valor 0. O retorno será -1 se um erro ocorrer. Neste caso a variável global errno será definido como um dos seguintes valores:

a) EINVAL - Invalid argument - Os nomes dos diretórios contém caracteres inválidos;

b) ENOENT - No such file or directory - O caminho do diretório é inválido;

c) EACCESS - Acesso negado - Algum outro programa está usando este diretório e mantém controle sobre o mesmo.

Veja um trecho de código no qual renomeamos um diretório:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // vamos renomear este diretório
  char dir_antigo[] = "C:\\Dev-Cpp\\estudos";
  char dir_novo[] = "C:\\Dev-Cpp\\estudos2";

  // vamos testar se o diretório for renomeado com sucesso
  if(rename(dir_antigo, dir_novo) != 0){
    cout << "Erro: " << strerror(errno) << endl;
  }
  else{
    cout << "Diretório renomeado com sucesso" << endl;
  }

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

É possível usar a versão Unicode de rename() ou _rename(). O método _wrename, também presente em io.h or stdio.h é útil quando precisamos internacionalizar nossas aplicações. Veja o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // vamos renomear este diretório
  wchar_t dir_antigo[] = L"C:\\Dev-Cpp\\estudos";
  wchar_t dir_novo[] = L"C:\\Dev-Cpp\\estudos2";

  // vamos testar se o diretório for renomeado com sucesso
  if(_wrename(dir_antigo, dir_novo) != 0){
    cout << "Erro: " << strerror(errno) << endl;
  }
  else{
    cout << "Diretório renomeado com sucesso" << endl;
  }

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executar este código C++ nós teremos o seguinte resultado:

Diretório renomeado com sucesso


C++ ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como criar um laço for infinito em C++ - C++ do básico ao profissional

Quantidade de visualizações: 9571 vezes
É possível criar um laço for infinito em C++ simplesmente omitindo as partes início, condição e incremento/decremento. Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <string>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
  // um laço for infinito (cuidado! se você não
  // fornecer uma forma de parar o negócio vai
  // travar
  int valor = 0;

  for(;;){
    cout << valor << "\n";
    valor++;

    // vamos parar o laço aqui
    if(valor > 20)
      break;
  }

  cout << "\n\n";

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}



Desafios, Exercícios e Algoritmos Resolvidos de C++

Veja mais Dicas e truques de C++

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 69 usuários muito felizes estudando em nosso site.