program capicua integer,parameter :: N=5 integer,dimension(N) :: cadena integer :: encontrado,maximoRecorrido cadena(1:N) = (/1,2,3,2,1/) encontrado = 1 ! Inicialmente planteo que encontrado es distinto de 0 ! o sea qu es cierto de momento que es capicua maximoRecorrido = N/2 ! Debo recorrer hasta la mitad (si es par N)o la mitad-1 ! si es impar do i =1,maximoREcorrido if (cadena(i)/=cadena(N-i+1)) then encontrado=encontrado*0 ! Si algun elemento no es igual a su simetrico ! encontrado es cero y queda asi, o sea ya no es capicua end if end do if (encontrado /= 0) then ! en ningun momento cambio a 0 entonces es capicua write(*,*) "es capicua" end if end program capicua