खोज…


टिप्पणियों

उपलब्ध आंतरिक प्रक्रियाओं में से कई में तर्क प्रकार आम हैं। उदाहरण के लिए:

  • एक तार्किक तर्क MASK जो संसाधित किए जाने वाले इनपुट सरणियों के तत्वों का चयन करता है
  • पूर्णांक स्केलर तर्क KIND जो फ़ंक्शन परिणाम के प्रकार को निर्धारित करता है
  • कमी वाले फ़ंक्शन के लिए पूर्णांक तर्क DIM , जो उस आयाम को नियंत्रित करता है जिस पर कटौती की जाती है

एक शर्त को पूरा करने वाले तत्वों का चयन करने के लिए पैक का उपयोग करना

आंतरिक pack फ़ंक्शन एक सरणी को वेक्टर में pack करता है, किसी दिए गए मास्क के आधार पर तत्वों का चयन करता है। फ़ंक्शन के दो रूप हैं

PACK(array, mask)
PACK(array, mask, vector)

(अर्थात, vector तर्क वैकल्पिक है)।

दोनों ही मामलों में array एक सरणी है, और तार्किक प्रकार का mask और array अनुरूप (या तो एक अदिश या समान आकृति का एक सरणी)।

पहले मामले में परिणाम के प्रकार और प्रकार पैरामीटर की रैंक -1 सरणी है array तत्वों नकाब में सच तत्वों की संख्या जा रहा है की संख्या के साथ।

integer, allocatable :: positive_values(:)
integer :: values(5) = [2, -1, 3, -2, 5]
positive_values = PACK(values, values>0)

में परिणाम positive_values सरणी जा रहा है [2, 3, 5]

vector रैंक -1 तर्क प्रस्तुत करने के साथ परिणाम अब vector का आकार है (जो कि कम से कम कई तत्वों के रूप में होना चाहिए क्योंकि mask में सच्चे मूल्य mask

साथ प्रभाव vector कि सरणी के नकाबपोश तत्वों द्वारा ओवरराइट की प्रारंभिक तत्वों के साथ कि सरणी वापस जाने के लिए है array । उदाहरण के लिए

integer, allocatable :: positive_values(:)
integer :: values(5) = [2, -1, 3, -2, 5]
positive_values = PACK(values, values>0, [10,20,30,40,50])

positive_values परिणाम में परिणाम सरणी [2,3,5,40,50]

यह ध्यान दिया जाना चाहिए कि तर्क array के आकार की परवाह किए बिना परिणाम हमेशा रैंक -1 सरणी होता है।


सरणी की बैठक की स्थिति के तत्वों का चयन करने के अलावा, यह अक्सर सूचकांकों को निर्धारित करने के लिए उपयोगी होता है, जिसके लिए मास्किंग स्थिति पूरी होती है। इस सामान्य मुहावरे को व्यक्त किया जा सकता है

integer, allocatable :: indices(:)
integer i
indices = PACK([(i, i=1,5)], [2, -1, 3, -2, 5]>0)

indices परिणामस्वरूप सरणी [1,3,5]



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow