Ir ao conteúdo

problema string


Mauro Del Gaudio

Posts recomendados

Postado

fala galera tudo bom?

estou com dificuldade em string, o exercicio é esse:

 

Fazer uma função que receba uma string e um caracter qualquer e retire todas as ocorrências desse caracter na string.
Exemplo: Seja a string "barraca" e o caracter 'r',então a string ficará "baaca".

 

fiz esse codigo

#include<iostream>
#include<string>
using namespace std;
string retira(string &palavra,char letra);
int main()
{
    string palavra;
    char letra;
    getline(cin,palavra);
    cin>>letra;
    cout<<retira(palavra,letra);
    return 0;
}
string retira(string &palavra,char letra)
{
    int i;
    int k = palavra.size();
    for(i=0;palavra!='\0';i++)
    {
        if(palavra==letra)
            continue;
        else
            for(int m=i; m<k; m++){
                palavra[m]=palavra[m+1];
            }
    }
return palavra;
}
 

 

quando digito "palavra" e "r" era pra retornar "palava" mas esta retornando "aar".

Postado

Ok!
Você subscreveu o string.

 

Eu entendi sua lógica o erro na função é o  2- retorno FOR, do else;
repense o algoritmo simples sem ele (O FOR int m), caso queira postaremos uma das solução. 

Postado

Você pode atribuir a string a um ponteiro e ir trocando a letra pela próxima letra da string. Veja,

    char palavra[] = "barraca";        char c = 'r', *p = palavra;    while(*p){        if(*p == c){            char *tmp = p;            while(*p++ = *(p + 1));                           p = --tmp;        }                  p++;    }    printf("%s\n", palavra);
Postado

Ok
Caso tenha desistido segue abaixo:
 

/* Remove o char c de string[n-ocorrências]*/char * retira(char STRING[],char c){    char c_tmp;        int i;        int t; //Toda a sacada neste algoritmo, vem desta variável.        for(i=0, t = 0;(c_tmp = STRING[i])!='\0'; i++)        {            if(c_tmp == c);//Faz nada;            else STRING[t++] = c_tmp;        } STRING[t] = '\0';    return STRING;}

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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!