Fortran - como operar con caracteres (como elaborar uno muy largo a vase de otros) FORTRAN

 
Vista:

como operar con caracteres (como elaborar uno muy largo a vase de otros) FORTRAN

Publicado por Hodei (1 intervención) el 23/05/2014 21:06:06
Hola!

Por si acaso, hablo de hacerlo en fortran (a ser posible f90)

A ver si me podéis ayudar, pues ando desde hace un tiempo con este problema y no se resolverlo. He leido varios manuales de fortran, pero aun entendiendo la idea general, no consigo hacer lo que pretendo.

Imaginemos que tengo un character de anchura 1000 y otro que es un vector (character también, de anchura 1) y quiero que el character de 1000 sea todos los del vector.

Por ejemplo cuando hacemos asi:

1
2
3
4
character(len=*),parameter :: primer_nombre="San",segundo_nombre=" Juan"
character(len=20) :: nombre_completo
 
nombre_completo = primer_nombre// " " // segundo_nombre

En este caso, "sumamos" los componentes de dos character que hemos definido, en uno mas largo (nombre_completo), pero como hacer esto para "n" nombres (que esten en un vector) ?

Por si os sirve de algo he hecho esto, pero no me sale nada normal
1
2
3
4
5
6
7
8
9
10
11
character(len=1),dimension(4) :: x
character(len=100) :: y
integer :: i
 
x(1)='a'
x(2)='b'
x(3)='c'
x(4)='d'
do i=1,4
 a=a // x(i) !? ya se que esta mal
enddo

Pues a ver si me podeis ayudar... Gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

como operar con caracteres (como elaborar uno muy largo a vase de otros) FORTRAN

Publicado por Sebastian (10 intervenciones) el 09/06/2014 06:35:29
Que tal. Prueba con esto...

1
2
3
4
5
6
7
8
9
10
11
12
character(len=1),dimension(4) :: x
character(len=100) :: y
integer :: i
 
x(1)='a'
x(2)='b'
x(3)='c'
x(4)='d'
y=x(1)
do i=2,4
 y=TRIM(y) // x(i) 
enddo

La funciòn "TRIM" elimina todos los campos vacíos de una variable tipo caracter. En este caso como y=a+99 espacios, TRIM(y) = a, sin espacios, así puedes concatenar de forma correcta.

Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar