Nano Hash - криптовалюты, майнинг, программирование

Двумерный массив ввода/вывода файлов Fortran

Файл, который будет прочитан в программе, представляет собой .txt, назовите его numbers.txt, в форме

75694
13265
98654

и я хочу прочитать каждую отдельную цифру в массив ранга 2 (поэтому форма массива [3 5]). Проблема с моими методами, похоже, продвигается к новой записи, и я плохо понимаю подразумеваемые DO:

program f3
  implicit none
  integer, dimension(3,5) :: arr
  integer :: i, j
  open(unit=15,file="numbers.txt")

  ! Only attempting one method at a time, so one will be commented.                                                                              

  !----- Method 1 - how to advance to next record? -----                                                                                         
  do i=1,3
     do j=1,5
        read(unit=15, fmt='(I1)', advance="no") arr(i,j)
     enddo
  enddo


  !----- Method 2 - get "end of file" error -----                                                                                                
  do i=1,3
     read(unit=15, fmt='(I1)', advance="no") (arr(i,j), j=1,5)
  enddo

  close(15)

  ! Best way to display 2D array?                                                                                                                 
  write(6,'(5I1)') ((arr(i,j), j=1,5), i=1,3)

end program f3

Я хотел бы иметь возможность использовать циклы do, подразумеваемые циклы do или их комбинацию, чтобы лучше понять их операции, но если есть один «стандартный» метод для этого, я хотел бы знать. Спасибо!

21.08.2014

Ответы:


1

Попробуйте заменить это

  do i=1,3
     do j=1,5
        read(unit=15, fmt='(I1)', advance="no") arr(i,j)
     enddo
  enddo

с этим

  do i=1,3
        read(unit=15, fmt='(5I1)') arr(i,:)
  enddo

Это должно вас завести.

И для письма:

  do ix = 1,3
     write(*,'(5(i1,1x))') arr(ix,:)
  end do

это подход, который я мог бы принять.

21.08.2014
  • Полностью личное и не по теме, но я обычно использую, например, 5(1x,i1) потому что я ненавижу конечные пробелы. 22.08.2014
  • @steabert Или 5(I1,:,1X). 22.08.2014
  • @francescalus что делает ':'? 22.08.2014
  • @KyleG Это дескриптор редактирования двоеточия. Короче говоря, он завершает вывод, когда больше нет элементов для вывода (до конечного 1X в этом примере). Однако сложность слишком велика для этого ответа. 22.08.2014
  • или даже просто 5I2 для такого простого случая, как этот 22.08.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..