#include <stdio.h>

#define NUMBER 20                                         

#define OPTION 6 

void main ()
{

    int optionList[NUMBER]= 
        {4,4,5,2,1,3,1,0,4,3,3,1,2,5,4,2,3,4,3,1}; 

    int count[OPTION] = { 0 } ;

    for (int i = 0; i <= NUMBER-1; i++) 
        ++count[optionList[i]]; 
} 

मुझे समझ में नहीं आता ++गिनती[विकल्प सूची[i]]। क्या यह सरणी 'गिनती' और 'विकल्प सूची' दोनों के लिए लूप वृद्धि है? यह कैसे काम करता है?

0
Wea 44 24 पद 2020, 08:17

2 जवाब

सबसे बढ़िया उत्तर

optionList - 20 तत्वों की एक सरणी है
count - ६ तत्वों की एक सरणी है

for लूप i = 0 से लेकर i = 20 - 1 = 19 तक पुनरावृति करता है।
प्रत्येक पुनरावृत्ति चरण में यह ++count[optionList[i]]; निष्पादित करता है

आइए चरण दर चरण i=3 के लिए ++count[optionList[i]]; की गणना करें: सबसे पहले हम optionList[i] को देखते हैं, इसलिए हम optionList से i-वें तत्व लेते हैं। optionList से तीसरा तत्व (0 से गिनना शुरू करना) 2 है। तो ++count[optionList[i]] का मूल्यांकन ++count[2] होता है। ++value का अर्थ है value के पीछे के मान को एक-एक करके बढ़ाना। ++count[2] का अर्थ है कि count से दूसरा तत्व एक से बढ़ गया है। तो ++count[optionList[i]]; सरणी count को क्रियान्वित करने के बाद अब ऐसा दिखता है: {0, 0, 1, 0, 0, 0} (यदि यह पहले {0, 0, 0, 0, 0, 0} जैसा दिखता था)

निष्कर्ष

optionList को सूचकांकों की एक सरणी के रूप में देखें। लूप प्रत्येक इंडेक्स पर optionList से count बढ़ाता है।

2
Natrix 24 पद 2020, 08:34

आप इस बारे में "अंदर से बाहर" तरीके से सोचते हैं, optionList[i] का मूल्यांकन पहले किया जाता है। यह optionList[i] पर मान लौटाता है

उदा) यदि i = 0, optionList[i] = 4

फिर count[{value}] का मूल्यांकन किया जाता है।

पूर्व) यदि i = 0, optionList[i] = 4। इस मामले में count[optionList[i]] count[4] के समान है।

तो count सरणी में चौथा स्थान फिर उपसर्ग ++ से बढ़ जाता है। लूप अनिवार्य रूप से जाता है और count सरणी के मान को optionList[i] द्वारा निर्दिष्ट प्रत्येक स्थान पर बढ़ाता है।

1
user14880435 24 पद 2020, 08:32