Ir ao conteúdo
  • Cadastre-se

C++ c/c++ String entender a razão lógica


Ninenome
Ir à solução Resolvido por JorgeGus,

Posts recomendados

ola, me deparei com um exemplo de inversão de string de forma manual, ate ai ok, mas na linha 12 no ponto de parada do laço for o tamanho da string e dividido por 2! Bom isso não iria ler a string pela metade? Exemplo sabonete contém 8 caracteres  dividido por 2 ficaria 4 caracteres "sabo", isso não ocorre, ele imprime a palavra completa. MAS PORQUE?

#include <iostream>
#include <cstring>

using namespace std;
//inversao de palavras de forma manual
int main()
{
    string s;
    cin>>s;
    int p=s.size()-1;//o -1 é para não capturar o terminador, ok entendo
    cout<<" Tamanho "<<s.size()<<endl;
    for(int i=0; i<s.size()/2;i++) //porque dividir o tamanho por 2?
    {
        char t=s[i];
        s[i]=s[p];
        s[p]=t;
        p--;
    }
    cout<<"\n\n"<<s<<endl;
    return 0;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

@Ninenome Isso é simples, na primeira iteração do for, ele coloca o último char no lugar do primeiro e o primeiro no lugar do último, na segunda iteração ele coloca o penúltimo char no lugar do segundo e o segundo o lugar do penúltimo, e assim por diante; por isso está sendo usada a variável temporária t, então ao chegar à metade, a outra metade também já foi trocada. Se você continuasse a troca até o final do vetor, cada char mudaria de posição novamente então a string voltaria à sequência original.

 

Para entender melhor isso basta fazer o tal teste de mesa, pegue um papel e lápis, desenhe um vetor de caracteres e repita cada operação dentro do for até o número de vezes que foi definido no programa, reescrevendo a nova string a cada iteração. Assim fica mais fácil visualizar o funcionamento do algoritmo.

  • Curtir 1
  • Obrigado 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!