तो निकटतम वापस लौटने के लिए फ़ंक्शन कैसे बनाएं, 9 9 + 1 के नजदीक के करीब, 2 int से विभाजित होने पर कोई शेष नहीं छोड़ा जाए?दिए गए int के लिए निकटतम संख्या भी कैसे खोजें? (11 रिटर्न दिया गया 12)
उत्तर
"निकटतम" एक पूर्णांक दिया गया जब अस्पष्ट है। लो, कहो, 9: 8 और 10 दोनों भी हैं, और इसके बराबर हैं। आप हमेशा ऊपर जाना चाहते हैं, तो कुछ की तरह ...
int nearestEvenInt(int to)
{
return (to % 2 == 0) ? to : (to + 1);
}
number % 2 == 0?number:number+1
एक और तरीका है (number>>1)<<1
है, लेकिन मैं नकारात्मक/छोटे/बड़े endians के बारे में यकीन नहीं है।
'(संख्या >> 1) << 1' में ऋणात्मक मूल्यों के लिए यूबी है। ('>> 'केवल कार्यान्वयन-परिभाषित है, लेकिन' << 'अपरिभाषित है; यह एक हस्ताक्षरित अंकगणित ओवरफ़्लो है) –
if (x %2 == 0) return x; else return x+1;
हैं?
दौर ऊपर और नीचे भी
x & ~1
दौर के लिए
भी(x + 1) & ~1
तरह से मैं सामान्य रूप से पसंद करेंगे (number+1) & ~1
है, लेकिन हर कोई मुहावरे को पहचानता नहीं है, इसलिए आपको अपने ऑडी पर विचार करना पड़ सकता है खिलाडि़यों।
विशेष रूप से, यदि इसे नकारात्मक पूर्णांक के लिए काम करना है तो सी और सी ++ के गैर-दो-पूरक कार्यान्वयन मुहावरे को नहीं पहचानते हैं (यह ऋणात्मक चिह्न + परिमाण संख्याओं के बजाय विषम नकारात्मक संख्याओं को नीचे ले जाएगा , और ऋणात्मक संख्याओं को भी 'पूरक' पर विषमता से बदल दें), इसलिए यह उस मामले में पूरी तरह से पोर्टेबल नहीं है जहां नकारात्मक इनपुट की अनुमति है।
पोर्टेबल उत्तर (number % 2 == 0) ? number : number+1;
है, और संकलक को अनुकूलन के बारे में चिंता करने दें।
यह भी ध्यान रखें कि आपने यह परिभाषित नहीं किया है कि परिणाम INT_MAX
के लिए क्या होना चाहिए, जो विषम है लेकिन जिसके लिए int
मान भी बड़ा नहीं है।
number += (int)((unsigned)number & 1)
unsigned
के मामले सुनिश्चित करता है कि बिटवाइज़-और उम्मीद के रूप में परिभाषित किया जाता है, और कलाकारों:
एक और "पोर्टेबल" संभावना 'संख्या + (संख्या% 2)' है, जो सी 99 में सकारात्मक अनंतता और नकारात्मक अनंतता की ओर सकारात्मक होगा। – caf
यदि आप 0 से दूर भागना चाहते हैं, तो कैफ का जवाब सबसे अच्छा है। लेकिन अगर आप गोल करना चाहते हैं, तो आपको '&' या कुछ बुरा सशर्त उपयोग करने की आवश्यकता होगी। –
के बाद से जवाब यहां के सबसे या तो nonportable या अतिरिक्त सशर्त, कर रहे हैं, यहां तेजी से और पोर्टेबल जवाब है वापस करने के लिए int
(जो अच्छी तरह से परिभाषित किया गया है, क्योंकि दोनों बिटवाइज़ और आपरेशन, शून्य या एक, int
में फिट की संभावित मान) number
unsigned
के लिए प्रोत्साहित किया जा रहा से रोकता है, जो तब कार्यान्वयन से परिभाषित व्यवहार में परिणाम होगा जब यह int
वापस करने के लिए बदला न गया हो परिणाम number
पर असाइन करने के लिए।
मैं ओपी पूर्णांक के लिए कहा है, लेकिन यहाँ तैरता के लिए एक ही जवाब भी है:
number = Math.round(number * 0.5f) * 2; //Closest (up for middle)
number = Math.ceil(number * 0.5f) * 2; //Always Up
number = Math.floor(number * 0.5f) * 2; //Always Down
पार्टी के लिए देर से एक छोटी सी, लेकिन यह एक स्वच्छ समाधान
n += (n % 2);
- 1. दिए गए नंबर के लिए लगातार चार संख्याएं खोजें
- 2. किसी दिए गए बिंदु पर निकटतम बिंदु
- 3. किसी दिए गए प्रतिबद्धता के लिए टैग जानकारी खोजें
- 4. किसी दिए गए पते पर सबसे नज़दीकी स्थान खोजें
- 5. किसी दिए गए नंबर
- 6. {0,1,2}^12 में निकटतम वेक्टर कैसे ढूंढें,
- 7. "निकटतम स्थान खोजें"?
- 8. किसी दिए गए रेंज में सभी संख्याओं का एक्सओआर खोजें
- 9. किसी दिए गए स्ट्रिंग
- 10. निकटतम संख्या (ओं)
- 11. सूची में सबसे अधिक संख्या संख्या खोजें <int>
- 12. सी ++ 11 constexpr समारोह के तर्क टेम्पलेट दिया गया तर्क
- 13. फ़्लोटिंग पॉइंट नंबर - निकटतम संख्या 1.7
- 14. ढूँढना एक श्रेणी में निकटतम संख्या
- 15. पायथन में 2 संख्या के बीच दिए गए दशमलव बिंदु की यादृच्छिक संख्या कैसे उत्पन्न करें?
- 16. किसी दिए गए प्रक्रिया आईडी के सभी थ्रेड खोजें
- 17. किसी दिए गए हैशटैग
- 18. jQuery - किसी दिए गए वर्ग के साथ कोई भी इनपुट खोजें जिसका कोई मूल्य नहीं है
- 19. Google मानचित्र निकटतम उपयोगिताएं खोजें
- 20. कैसे किसी दिए गए प्रारूप
- 21. मॉडल ऑब्जेक्ट दिया गया, NSTreeController में अनुक्रमणिका पथ कैसे खोजें?
- 22. लिनक्स खोल पर किसी दिए गए पथ के लिए खाली डिस्क स्थान कैसे खोजें?
- 23. पायथन: दिए गए इनपुट कुंजी
- 24. निकटतम अच्छी संख्या
- 25. किसी दिए गए बिंदु
- 26. बाइनरी खोज पेड़ में किसी दिए गए कुंजी मान के निकटतम तत्व को कैसे ढूंढें?
- 27. पावरहेल - निकटतम पूर्ण संख्या
- 28. armv7s के लिए संकलित लाइब्रेरी - cputype (12) और cpusubtype (11)
- 29. किसी दिए गए लाइन नंबर
- 30. क्यों अहस्ताक्षरित int नकारात्मक संख्या
है यह समस्या नहीं है विशिष्ट रूप से निर्दिष्ट। 10 11 के करीब 11 है। आप कौन सा चाहते है?और नकारात्मक संख्याओं के बारे में क्या? और इनपुट अभिन्न या फ़्लोटिंग बिंदु है? –
@ डेविड: इनपुट स्पष्ट रूप से अभिन्न है, लेकिन आपकी बाकी की टिप्पणी के लिए +1 – Cameron
मुझे विश्वास नहीं है कि ऐसे सभी प्रश्नों के उत्तर दिए गए हैं जिनके पास कोई जवाब नहीं है! –