извлекать значения из нескольких столбцов, используя условие if в Fortran - PullRequest
0 голосов
/ 17 мая 2019

У меня есть файл содержит несколько столбцов. Я хочу извлечь значения, когда оба col # 1 и col # 2 не равны нулю, используя fortran. Я знаю, что это очень основное сомнение, которое у меня есть, но я немного запутался в этом. Я использовал следующую идею, но не работал. Он должен удалить те строки, где и col # 1, и col # 2 равны нулю, и он должен печатать там, где он получит 1.

Заранее спасибо.


  if(col1(ii).ne.0.and.col2(ii).ne.0)then
      print*,col1,col2,col3
  end if

Введите:
0,00 0,00
1,00 0,00
1,00 1,00
0,00 1,00
0,00 0,00
1,00 0,00
1,00 1,00

Ожидаемый результат:
1,00 0,00
1,00 1,00
0,00 1,00
1,00 0,00
1,00 1,00

Вывод из кода:

1,00 1,00
1,00 1,00

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Я верю, что ваша логика ошибочна. Если я вас правильно понимаю; Вы хотите удалить строки, где либо col # 1, либо col # 2 не равны нулю. Попробуйте это: -

if (col1 (ii) .NE. 0 .OR. Col2 (ii) .NE. 0), то печать *, col1, col2 конец если

В качестве альтернативы (тот же вывод):

if (.NOT. (Col1 (ii) .EQ. 0 .AND. Col2 (ii) .EQ. 0)) тогда печать *, col1, col2 конец если

0 голосов
/ 17 мая 2019

У логики есть недостаток, и вам не хватает индекса в операторе печати:

  if(col1(ii).ne.0.or.col2(ii).ne.0)then
      print*,col1(ii),col2(ii),col3(ii)
  end if

при условии, что у вас есть цикл вокруг общего.

Также взгляните на строку операторов where и any

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...