Ir ao conteúdo
  • Cadastre-se

Lendo jogadas em um arquivo texto


Posts recomendados

Olá pessoal, estou com um probleminha aqui...

Seguinte, meu professor passou um trabalho pra eu fazer: um jogo pedra-papel-tesoura-lagarto-spock (uma variante do famoso Jan Ken Po). Porém, esse jogo será dividido em duas partes: a online e a offline, a primeira já fiz já que basta os usuarios entrarem com as jogadas e eu analisar... O problema está no modo offline: ele quer que o usuário chame um arquivo texto no terminal onde estão todas as jogadas no seguinte formato:

 

papel/tesoura

lagarto/pedra

tesoura/spock

...{daí em diante...}

 

como ler o arquivo eu sei, uso um WHILE NOT EOF e tal, mas agora, como fazer o compilador analisar o texto somente até antes da barra e armazenar a jogada em uma variável? Depois continuar analisando o texto até  fim da linha?

É posível usar um FOR com um LENGHT? Estava pensando em fazer algo do tipo:

if (ParamCount = 1) then  Begin    Assign(Entrada,ParamStr(1));    Reset(Entrada);    while not eof(Entrada) do    Begin      readln(Entrada,j1);      for x := 1 to Lenght(j1) do      Begin        if j1[x] = '/' then        Begin          for y := 1 to Lenght(x-1) do          {condiçoes das jogadas}        End;      End;    End;  End;

Desde já agradeço futuras respostas :);)

Link para o comentário
Compartilhar em outros sites

@Victor.main

 

 

Ou se o professor não permitir usar funções prontas sugeridas pelo @Simon Viegas, você teria algumas formas de fazer isso manualmente. Você poderia implementar dois laços while: um para concatenar a primeira parte da string (antes do '/') e o outro  para concatenar a segunda parte. A condição para primeiro laço é que o índice (x) esteja dentro do limite do tamanho da string e que o caractere lido seja diferente de '/'. Enquanto isso for verdadeiro, você concatena a string A: (A := A + j1[x]). No segundo laço, você apenas testa pelo final da string e concatena a string B.

 

Dá pra fazer com apenas um laço também, você só precisaria definir quando estaria lendo a primeira parte ou a segunda. Enfim, tem várias maneiras...

 

 

Se não houver problemas em usar funções padrões, é só fazer o que o Viegas sugeriu...

 

 

 

Abs.

 

LNW

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

  • Membro VIP

Olá.

Ele permitiu uso de funções sim ainda bem... Muito obRigado pela ajuda eu achei que estava fazendo tudo errado hehe
valeu ;)

Tem como postar o seu novo código para servir de base para outros, possíveis, usuários ?
Caso deseje, poderiamos analisá-los também.

Por favor, nos informe se poderá postar o código ou não, para podermos fechar o chamado.

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

Postado Hoje, 15h41min
Claro que sim, talvez so poderei a noite ja que ainda estou na faculdade..

UPDATE
Olá de novo! Surgiram mais dúvidas hehe... Nunca usei nada com arquivo texto e meu professor não explicou nada disso (queria que a gente pesquisasse e aprendesse cada um por si). Então estou meio perdido até mesmo quanto à declaração das variáveis. Bom, aí está parte do meu código:

Program read_arq;var  arq : text; j, j1, j2 : String;  x, y: integer;  v : array[1..2,1..2] of integer;function Copy(S: string; Ind: integer; Cont: integer);  Begin  if (ParamCount = 1) then    Begin    Assign(Entrada,ParamStr(1));    Reset(Entrada);    while not eof(Entrada) do      Begin      readln(Entrada,j);      for x := 1 to Lenght(j) do        Begin        if j[x] = '/' then          Begin          for y := 1 to Lenght(x-1) do            jog1 := Copy(j, y);          for y := Lenght(x+1) to Lenght(j) do            jog2 := Copy(j, y);          End;        End; {Comandos para testar as entradas}      End;    End;  End;

Não consegui "formatar" o outro texto (internet aqui está horrível)

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.
 

 

Então, o Pos() e o Copy(), assim como o Lenght() são comando predefinidos, ou seja, já existem no Pascal!!! Basta usá-los!!

 

 

Pesquise sobre esses termos (em nível de Pascal) que creio você vai entender porque citei eles!!! :)

 

PS: tente entender como cada um desses 3 comandos funcionam... basicamente você pode usar o Pos() e Lenght() como auxiliares para usar o Copy().

 

No aguardo

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