program countCharacters integer ,parameter :: sizeArray=7 character, dimension(sizeArray) :: charArray = (/'a','b','c','a','a','b','f'/) character, dimension(sizearray) :: list ! array con los caracteres nuevos q' voy hallando character :: element ! character que recorre a charArray integer , dimension(sizeArray) :: ocurrences ! array con las ocurrencias de list integer :: ultimo,pos,posFinded ! ultimo marca la posicion siguiente al ultimo character en list ! inicialmente es 1, posFinded es la posicion donde encuentro un ! caracter en charArray, antes de c/busqueda es cero ultimo = 1 pos = 1 do while (pos <= sizeArray) element = charArray(pos) call findElementInList(element,list,ultimo,posFinded) if (posFinded /= 0) then ocurrences(posFinded) = ocurrences(posFinded) + 1 else list(ultimo) = element ocurrences(ultimo) = 1 ultimo = ultimo + 1 end if pos = pos + 1 end do !------------ Imprimo los resultados ---------------------- pos = 1 do while (pos < ultimo) print*,"El elemento ",list(pos)," figura: ",ocurrences(pos)," veces" pos = pos + 1 end do !----------- Subs ---------------------------------------- contains subroutine findElementInList(element,list,ultimo,posFinded) integer ,intent(in) :: ultimo integer ,intent(out) :: posFinded character,intent(in) :: element character, dimension(:),intent(in) :: list integer :: position posFinded = 0 position = 1 !--- posFinded es 0 inicialmente, y si no se encuentra en el loop sigue en cero do while ((position < ultimo).and.(posFinded == 0)) if (element == list(position)) then posFinded = position else position = position + 1 end if end do end subroutine findElementInList end program countCharacters