Como esqueço o tempo todo como fazer essas conversões, decidi escrever aqui um resumo do processo.
Tomando-se as seguintes 3 variáveis:
CHARACTER(100) :: TEXTO
REAL*8 :: VALOR_REAL
INTEGER :: VALOR_INTEIRO
Se um "número" é armazenado no TEXTO, por exemplo:
TEXTO = '5.6987'
a conversão pode ser feita utilizando o READ() de forma bem simples.
READ(TEXTO,*) VALOR_REAL
READ(TEXTO,*) VALOR_INTEIRO.
Converter variáveis FORTRAN, conversão de variáveis, texto para número, caracter para real, caracter para inteiro.
quinta-feira, 29 de outubro de 2009
Assinar:
Postar comentários (Atom)
Eu queria conseguir armazenar uma variável do tipo inteira em uma variável do tipo character, tem como?
ResponderExcluirEx.
integer :: x, y
character :: concatena
x=1
y=2
concatena=x//y
Já tentei fazer com o read() como sugere acima, mas imprime em branco.
Tentei assim:
integer :: x, y
character :: concatena
character(2):: x2, y2
x=1
y=2
read(x,*)x2
read(y,*)y2
concatena=x2//y2
Alguma sugestão?
Consegui resolver o meu problema usando o WRITE.
ResponderExcluirPreciso abrir um arquivo de nome "output_[numero].csv" a medida que o loop vai acontecendo. Minha primeira tentativa foi:
ResponderExcluir*****************************************************************
integer :: i
character*2 :: nome
do i = 1, 20
nome = char(i)
open(20, file='output_'//trim(nome)//'.csv', status='replace')
.
.
.
*****************************************************************
Já tentei converter com o "char", o "read" como explicado acima, o "white" como o Mélory fez... e nada. Já compilei com o ifort e com o gfortran e nunhum dos dois encontra o arquivo por não reconhecer o "nome".
Alguma sugestão?
A conversão deve ser feita com o write. No meu caso, foi o seguinte:
ResponderExcluirCHARACTER(2) :: VALOR_I
WRITE(VALOR_I,'(I2)') I
TEXTO = 'X' // TRIM(ADJUSTL(VALOR_I)) // '.TXT'
OPEN(11,FILE=TRIM(ADJUSTL(TEXTO)))
Isso foi para Arquivo?? ou em um programa simples de conversão isso funciona?
ExcluirEntão, escrevi um programa, mas aparece o erro que diz que a expressão deve ser do tipo inteira, e eu não consigo corrigir, como faço?
ResponderExcluirnão resolveu só trocar o real*8 para o integer. Desculpe, mas sou realmente iniciante nisso.
Prezados boa noite!
ResponderExcluirEstou tentando implementar um código em Fortran para interpretar funções escritas em arquivo de texto.
Por exemplo:
g = x(1)-x(2) (função escrita em um arquivo .txt)
O Fortran deve abrir o arquivo, ler a função e substituir essa função em uma subroutine. Onde g, x(1)..., x(n) são variáveis Reais nessa subroutine.
Alguém poderia safar o amigo?
Att.,