Ir ao conteúdo
  • Cadastre-se

Manipulação de strings. Pascal


Posts recomendados

Olá pessoal, estou com um problema:

Concatenei um texto e o separei com //, para saber onde terminava cada frase. Por exemplo, eu digitava o texto na tela assim:

O Yahoo

respostas está

em

manutenção

No caso, o texto final ficou assim:

Ex: O Yahoo//respostas está//em//manutenção

Só que agora, preciso fazer com que o texto fique da forma como digitei inicialmente. Alguém pode me ajudar? PS: não pode usar vetores, =S

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

da pra fazer se você souber o tamanho exato do texto, nesse caso ai 4 "partes". Primeiro acha o tamanho desse texto td, cria o laco de sua preferência (for, while, repeat) e coloca uma variavel com comando copia da posicao 1 ate o tamanho (se encontrar "/" interrompe), e vai concatenando esses valores.

ai você acha o tamanho dessa primera parte, e comeca de novo outro laco do tamnovo+3(2 pra pular as "//" e +1 pra pular pra proxima palavra) ate o tam total de novo...e assim por diante.

acho q sem vetor esse é um jeito, se pensar em algo mais simples ate mais tarde posto de novo oO

espero que ajude

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

faz um "for" de 0 ate tamanho da frase

usa "copy" pra pegar letra por letra, e vai concatenando isso em uma variavel

"if" se achar '/'

ai você manda ele escrever uq achou e zerar a variavel q estava concatendo....

no final fora do laco manda escrever de novo essa variavel pra ele escrever a ultima palavra ja qu nao vai ter '/' no fim

+- isso

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

Talvez seja assim que voce quer:


var
i: integer; //variavel de apoio pra varrer todos os caracteres da string
str: string; //variavel de apoio pra string resultante
begin
//inicializa variaveis de apoio
str:= '';
i:= 1;
//faz um looping pra varrer todos os caracteres da string original
while i <= Length(string_original) do
begin
//se encontrar dois '/' seguidos...
if(string_original[i] = '/')and(string_original[i+1] = '/')then
begin
str:= str + #13 + #10; //coloca 'enter' e 'carrie return'
inc(i,2); //pula os dois caracteres '//' da string_original
end
else
begin
//nao encontrou '//' então apenas captura o caracter verificado
str:= str + string_original[i];
inc(i);
end;
end;
Memo1.Text:= str; //apenas coloquei um memo pra mostrar o resultado
end;

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

  • Membro VIP

Olá,

Baseado no código de rockzilla2109, fiz uma function.

Abaixo um código, já com um testador...

uses
CRT; //carrega comandos extras como ClrScr, ReadKey, TextColor() etc
(*
FUNÇÃO QUE EXTRAI O TEXTO DA LINHA DO ARQUIVO. PARA CADA "//" ENCONTRADO, SUBS-
TITUI POR UMA "QUEBRA DE LINHA".
*)
function separaTexto(linha:string):string;
var
i :byte; //variavel de apoio pra varrer todos os caracteres da string
begin
separaTexto:=''; //limpa o texto final;
i:=1; //inicializa o contador
while i <= Length(linha) do //enquanto não chegar ao final da linha
begin
//se encontrar dois '/' seguidos...
if (linha[i]='/') and (linha[i+1]='/')then
begin
separaTexto:=separaTexto+#13+#10; //coloca 'enter' e 'carrie return'
inc(i,2); //pula os dois caracteres '//' da "linha"
end
else
begin
//nao encontrou '//', então apenas captura o caracter verificado
separaTexto:=separaTexto+linha[i];
inc(i); //pula para o próximo caractere
end;
end;
end;

{### Variáveis globais ###}
var
str :string; //variavel de apoio pra string resultante

BEGIN
ClrScr; //limpa a tela;
str:='O Yahoo//respostas está//em//manutenção';
writeln('TEXTO ORIGINAL: ',str);
writeln;
writeln('TEXTO EXTRAIDO:');
writeln;
writeln(separaTexto(str));
ReadKey; {pause antes de finalizar - (qualquer tecla para continua)}
END.

Qualquer coisa é só postar.

No aguardo.

Abraços

Simon Viegas

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

  • 4 semanas depois...
  • 4 anos depois...

Boa noite será que algum de vocês poderia me ajudar com essa questão

 

Faça um programa em Pascal que leia strings do teclado até que uma string vazia seja lida. Em seguida, o programa deverá:   
(a) Escrever na tela a quantidade de strings lidas; (b) Escrever na tela a quantidade de strings palíndromes (considere a definição a seguir); (c) Escrever na tela a quantidade e a soma de todos os dígitos lidos (0,1,2,...,9); (d) Escrever na tela a quantidade de vogais lidas;  
Definição: Uma string é dita palíndrome se ela possui pelo menos um caracter e o primeiro caracter é igual ao último caracter, o segundo caracter, caso exista, é igual ao penúltimo caracter, e assim sucessivamente.   

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

Visitante
Este tópico está impedido de receber 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...