2010-12-28 20 views
7

मैं फोर्टन में कुछ सरल आउटपुट लिख रहा हूं, लेकिन मुझे व्हाइटस्पेस डिलीमीटर चाहिए। निम्नलिखित बयान, फिर भी उपयोग करते हैं:मैं फोर्टन में संख्यात्मक आउटपुट को कैसे छोड़ सकता हूं?

format(A20,ES18.8,A12,ES18.8) 

मैं इस तरह उत्पादन मिलता है:

p001t0000    3.49141273E+01obsgp_oden  1.00000000E+00 

मैं इस पसंद करेंगे:

p001t0000   3.49141273E+01 obsgp_oden 1.00000000E+00 

मैं में तरह चौड़ाई के मान ऋणात्मक का उपयोग कर (करने की कोशिश की पायथन) लेकिन कोई पासा नहीं। तो, क्या संख्याओं को बाधित करने का कोई तरीका है?

अग्रिम में बहुत धन्यवाद!

उत्तर

7

कोई विशेष रूप से सुंदर तरीका नहीं है। हालांकि, संख्या को एक टेक्स्ट स्ट्रिंग में परिवर्तित करने के लिए एक आंतरिक WRITE कथन का उपयोग करना (पूर्व में ENCODE कथन के साथ किया गया), और उसके बाद पाठ को जोड़ना आपको आवश्यकतानुसार कर सकता है।

का हवाला देते हुए http://rsusu1.rnd.runnet.ru/develop/fortran/prof77/node168.html

एक आंतरिक फ़ाइल लिखने आम तौर पर उदाहरण के लिए, एक उपयुक्त प्रारूप विनिर्देश का उपयोग करके एक चरित्र स्ट्रिंग एक अंकीय मान परिवर्तित करने के लिए प्रयोग किया जाता है:

CHARACTER*8 CVAL 
    RVALUE = 98.6 
    WRITE(CVAL, '(SP, F7.2)') RVALUE 

लिखें कथन चरित्र परिवर्तनीय सीवीएएल वर्णों '+98.60' के साथ भर देगा (ध्यान दें कि संख्या के प्रत्येक छोर पर एक खाली है, पहला क्योंकि संख्या वर्णों के क्षेत्र में सही-सही है, दूसरा रिकॉर्ड घोषित 8 वर्णों की लंबाई के लिए गद्देदार है)।

एक बार एक नंबर एक चरित्र स्ट्रिंग यह विभिन्न तरीकों से आगे संसाधित किया जा सकता में बदल दिया गया अनुभाग 7 में वर्णित यह यह संभव, उदाहरण के लिए, संख्या एक में बाएँ उचित लिखने के लिए बनाता है फ़ील्ड, ...

+0

मैंने कुछ और अधिक सुरुचिपूर्ण उम्मीद की थी, लेकिन एक समान समाधान पर बसने लग रहा था। उत्तर @ubuntourist के लिए धन्यवाद – mishaF

3

यह फोरट्रान 95 के साथ आसान है, लेकिन अभी भी तुच्छ नहीं है। एक लेखन कथन (पहले जवाब में) के साथ एक स्ट्रिंग में संख्या या अन्य आइटम लिखें। फिर स्ट्रिंग के गैर-रिक्त वर्ण समायोजित करने के लिए फोरट्रान 95 आंतरिक "ADJUSTL" का उपयोग करें।

1

यदि आप वास्तव में चाहते हैं कि व्हाइटस्पेस छोड़ने के लिए बाएं-उचित संख्याओं के बजाय आउटपुट फ़ील्ड के बीच व्हाइटस्पेस है तो आप आसानी से X डिस्क्रिप्टर संपादित कर सकते हैं। उदाहरण के लिए

format(A20,4X,ES18.8,4X,A12,4X,ES18.8) 

प्रत्येक फ़ील्ड और अगले के बीच 4 रिक्त स्थान डालेगा। ध्यान दें कि मानक को एक स्थान के लिए 1X की आवश्यकता है, कुछ मौजूदा कंपाइलर गैर मानक X भी स्वीकार करते हैं।

2

और साधारण फोर्ट्रान लेखन प्रारूप (जो एलजे नहीं है) लिखने के बाद, वास्तव में अनौपचारिक है (मैं एक गुफा महिला की तरह प्रोग्राम), मैं एक्सेल (सीएसवी) और अल्ट्राएडिट के संयोजन का उपयोग रिक्त स्थान को हटाने के लिए करता हूं वांछित एलजे को प्रभावी ढंग से कॉमा द्वारा पीछा किया जा रहा है (जिसे मुझे अपने विशिष्ट आयात प्रारूप के लिए किसी अन्य सॉफ़्टवेयर की आवश्यकता है)। बीएफ

संबंधित मुद्दे