Ir ao conteúdo

Posts recomendados

Postado

a função replace da linguagem c++ serve para substituir caracteres dentro de uma string ,  e não  existe nenhuma função que faça isso no visualG ,  então uma que se possa usar seria assim  no visualG:

Algoritmo "replace teste_23"
// Data atual  : 28/10/2024
funcao replace( st1, ch : caractere ) : caractere
var
   f     : inteiro
   st, c : caractere
inicio
   para  f de 1 ate t faca
      c <- copia( st1, f, 1 )
      se c  = "." então
         c <- ch
      fimse
      st <- st + c
   fimpara
   retorne st
fimfuncao
Var
   rl       : real
   t        : inteiro
   str,char : caractere
Inicio
   rl   <- 2.84
   char <- ","
   str  <- numpcarac( rl )
   t    <- compr( str )
   str  <- replace( str, char )
   escreval("Número Real", rl , "     Real   usando ponto '.'" )
   escreval("Convertido Para Texto ", str, "  usando vírgula " )
   escreval("A String Modsificada  ", str, "  usando vírgula " )
   escreval("Os Dígitos Com Vírgula convertido para Real", caracpnum( str ) )
Fimalgoritmo

 

  • Curtir 1
  • Membro VIP
Postado

Acho essa ideia de criar uma "biblioteca com funções extras" bem interessante. Começamos a fazer uma por aqui no Fórum para o Pascal, mas acho que sumiu!!! (não achei 😞). Era algo como "Unit de utilidades"... uma versão mais rica do CRT ou WinCRT... em fim..

 

Pelo que vi, existem diferentes sobrecargas (recurso esse não disponível para VisualG) para o método replace no C++, mas meio que o mecanismo seria um pouco diferente da sua proposta. Se puder citar qual versão se refere, agradeceria.

 

Sugeria tentar seguir os mesmos padrões dos eventuais métodos originais... Achei um mais simples no ttps://www.educba.com/c-plus-plus-replace/ e vou usar como referência...

 

Uma tradução pelo Google Translator:

Citação

Ela ajuda a substituir uma parte da string que começará com uma certa posição que atuará como um início e se estenderá até um certo número de caracteres. Esta string será substituída pela string especificada. A string a ser substituída com as posições inicial e final deve ser dada à função replace() como parâmetros que nos ajudam a substituir a string.

 

Exemplo de chamada do método:

Citação
string1.replace(start,length,string2);

 

Como o VisualG não é OO, ficaria algo como:

string1 <- replace(string1, start, length, string2);

 

Ou seja: basicamente essa versão de função (pois tem várias) teria 4 parâmetros. Como o VisualG utiliza Portugol, seria coerente traduzir para português. Algo como:

 

substitue(caractere1, inicio, tamanho, caractere2);

 

A descrição de cada parâmetro seria algo como:

Citação

caractere1: Cadeia de caracteres do qual se deseja substituir algo.

inicio: Especifica a posição da qual a substituição se inicia.

comprimento: Define o número de caracteres que serão substituídos na cadeia de caracteres original.

caractere2: Cadeia de caracteres que deseja substituir na cadeia original.

 

Um exemplo de implementação que pensei:

funcao substitue(c1:caractere; posI, tam:inteiro; c2:caractere) : caractere
var
   i : inteiro
   temp : caractere
inicio
   temp <- copia(c1, 1, posI-1)
   temp <- temp + c2
   temp <- temp + copia(caractere1, posI+tam, compr(c1))
   retorne temp
fimFuncao

 

Testando:

algoritmo "Implementando uma versão do replace do C++ no VisualG"
var
   caractere1, caractere2 : caractere

funcao substitue(c1:caractere; posI, tam:inteiro; c2:caractere) : caractere
var
   i : inteiro
   temp : caractere
inicio
   temp <- copia(c1, 1, posI-1)
   temp <- temp + c2
   temp <- temp + copia(caractere1, posI+tam, compr(c1))
   retorne temp
fimFuncao

inicio
   caractere1 <- "Vamos aprender a linguagem C++ no FCdH";
   caractere2 <- "VisualG";
   escrevaL("Antes : ", caractere1) //Vamos aprender a linguagem C++ no FCdH
   caractere1 <- substitue(caractere1, 28, 3, caractere2)
   escrevaL("Depois: ", caractere1) //Vamos aprender a linguagem VisualG no FCdH
fimAlgoritmo

 

Ou seja: a partir da linha 28, substitua os próximos 3 caracteres pela cadeia de caracteres informada. Saiu 3 letras ("C++") e entrou "VisualG" no lugar. Esse seria um conceito de "substituir" (replace).

 

 

ADENDO:

Caso queria, por exemplo, substituir o separador das casas decimais de "," para ".", poderia utilizar algo assim:

inicio
   caractere1 <- "R$ 148324,06"
   escrevaL("Antes : ", caractere1) //R$ 148324,06
   caractere1 <- substitue(caractere1, pos(",", caractere1), 1, ".")
   escrevaL("Depois: ", caractere1) //R$ 148324.06
fimAlgoritmo

 

Ou implementar uma função específica para isso.. mas acho que replace em si funciona de forma diferente, ou seja, teria um outro nome. (Não tenho experiência em programação C++.)

 

Ai, se o objetivo for "substituir todas as ocorrências", algo como "todos as vírgulas por pontos", bastaria criar uma lógica fazendo um loop. Analogamente, a função teria outro nome diferente de "substitue" (replace).

  • Obrigado 1

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!