2012-10-31 2 views
0

나는이 "9999"가이 fortran write 성명의 레이블에서 e20.8 앞에서 무엇을하고 있는지를 알 수 없다.포트란 작성 문 : "9999"는 무엇을하고 있습니까?

is는 코드의 다른 줄을 참조하지 않습니다. 즉, 프로그램에서 다른 곳에서 언급되는 9999라는 줄이 없습니다.

write(11,'(9999e20.8)') (9999.0, i=1,2*(numant+numunique)) 

은 내가 boggled 해요 - 내가 쓰기 문 구문 및 형식에 대한 일반 사진을 얻을 생각하지만 나는, 구글 웹 검색에서 답을 발견하지 않았습니다.

의미있는 정보가 충분합니까?

답변

3

반복 횟수입니다. 형식 코드의 일반적인 형식은 (카운트) (형식) (형식)입니다 (예 : this tutorial here에서 설명).

C 기반 언어와 달리 사용되지 않는 서식 지정 코드는 단순히 무시되므로이 줄은 기본적으로 "다음 출력 목록에있는 것과 같이 과학 형식 (소수점 이하 8 자리 숫자)으로 많은 실제 숫자 쓰기"라고 설명합니다. (하드 코드 된 "충분히 큰"숫자로 이렇게하는 것이 싫다면 "올바른"반복 코드를 갖도록 프로그래밍 방식으로 형식 문자열을 생성해야합니다.

출력 목록은 implied-do loop입니다. , 숫자 9999.0 2*(numant+numuniqe) 번을 생성합니다.

+0

고마워요. @ Jonathan. 귀하의 회신을 이해할 것 같지만 지금은 반복 수를 갖는 지점을 이해하지 못합니다. 출력이 이미 i 인덱스에 의해 반복되므로 "(9999.0, i = 1,2 * (numant + num numique)") 왜이 형식을 반복해야합니까? e20.8, nine nine nine and nine nine times? 이미 대답 했으므로, 이 후속 작업을 할 시간이 있지만 여전히 많은 감사합니다. - Shana – yes

+0

출력 항목 당 하나의 형식 코드가 필요합니다. eds는 적어도'2 * (numant + numunique)'가되어야합니다. 하지만 그 값은 컴파일 타임에 알려지지 않으므로 위의 줄은 9999 개를 만들고 신뢰만으로도 충분합니다. 다른 방법은 런타임에 형식 문자열을 생성하는 것입니다. 실제로는 그렇게 어렵지 않습니다. –

+0

아, 흥미 롭습니다. 정말 고맙습니다. 나는 당신의 대안을 살펴볼 것입니다. 많은 감사와 좋은 소원. – yes

관련 문제