2013-04-24 2 views
5

क्या उद्देश्य सी में स्ट्रिंग चर के साथ गणितीय ऑपरेटरों का उपयोग करने का अपेक्षाकृत आसान तरीका है?चर के साथ उद्देश्य सी संचालन

उदाहरण के लिए:

स्ट्रिंग "एक्स * x" लौटना चाहिए "x^2"

स्ट्रिंग "एक्स/एक्स" "1" लौटना चाहिए

मैं तलाश कर रहा हूँ ऐसा कुछ जो वास्तव में एक निर्दिष्ट संख्यात्मक मान के बिना परिवर्तनीय नाम "x" का उपयोग करेगा और "x" के संदर्भ में एक उत्तर लौटाएगा।

+1

आप एक गणित पार्सर ढांचे की जरूरत है, [DDMathParser] पर एक नज़र डालें (https://github.com/davedelong/DDMathParser) या [GCMathParser] (http://apptree.net/parser.htm) ... – aleroot

+0

यहां तक ​​कि यह आवश्यकता नहीं है –

+0

यह कितना जटिल होना चाहिए? क्या इसे वास्तविक सह-प्रभावकारियों के साथ बहुपदों को संभालने की आवश्यकता है? यदि ऐसा है, तो कुछ मूलभूत रूप से दस्तक देने में बहुत लंबा समय नहीं लगेगा। – occulus

उत्तर

1

आप 'एक्स' स्ट्रिंग के रूप में मूल्य डाल देता है तो आपके लिए यह मूल्यांकन कर सकते हैं के रूप में:

NSString *[email protected]"3*3"; 
NSExpression *expression = [NSExpression expressionWithFormat:string]; 
float result = [[expression expressionValueWithObject:nil context:nil] floatValue]; 
NSLog(@"%f", result); 
इसके अलावा

, आपकी आवश्यकता

अनुसार int आदि के लिए किसी भी डेटाप्रकार float को

NSString *[email protected]"34*(2.56+1.79)-42/1.5"; 
NSNumber *result=[NSExpression expressionWithFormat:string]; 
NSLog(@"%@", result); 

बदलें

+0

यह केवल तब होगा जब x = मेरे उदाहरण में एक संख्या, मैं ऐसा कुछ ढूंढ रहा हूं जो वास्तव में एक निर्दिष्ट संख्यात्मक मान के बिना चर नाम "x" का उपयोग करे और "x" – Amendale

+0

के संदर्भ में उत्तर लौटाए। यह अच्छा है और मैं यह नहीं पता था कि यह अस्तित्व में है लेकिन मुझे लगता है कि ओपी चर का उपयोग करने का इरादा रखता है (जैसे 'x "')। क्या यह समर्थन उदाहरण के लिए 'x + x + y" '' 2 * x + y "में बदल रहा है? –

+1

@ डेविड रोन्न्क्विस्ट: फिर निश्चित रूप से डेवडेलोंग का एक व्यक्ति उत्तर देने का सबसे अच्छा है। ओपी: आप डीडीमैथपार्सर से जांच सकते हैं, लेकिन मुझे नहीं लगता कि इससे आपकी मदद मिलेगी। –

1

मैंने ऑब्जेक्टिव सी लिब को बीजगणित हेरफेर करने के लिए एक नज़र डाली है और अभी तक बहुत कुछ नहीं मिला है।

तो आपकी सबसे अच्छी शर्त सी पुस्तकालय का उपयोग करने के लिए हो सकती है (उद्देश्य सी एएनएसआई सी का एक सुपरसेट है, और आप दोनों को मिश्रण कर सकते हैं)। सी गणित libs की यह सूची

की जांच:

http://www.mathtools.net/C_C__/Mathematics/

कि सूची से, ऐसा लगता है कि Mathomatic काम का हो सकता। अपने उद्देश्य सी में एक सी पुस्तकालय का उपयोग कर के लिए

दो रणनीतियों:

  1. बस अपने उद्देश्य सी कोड से सी कार्यों फोन

  2. सी पुस्तकालय के लिए एक उद्देश्य सी आवरण बना सकते हैं और का उपयोग करें कि (और शायद इसे जारी दूसरों का उपयोग करने के लिए :)

0

आप GiNaC पुस्तकालय (www.ginac.de) देख सकते हैं। यह opensource गणित पुस्तकालय है। आप इस पुस्तकालय के साथ बीजगणितीय अभिव्यक्ति को सरल बना सकते हैं। और आप इसे ओएसएक्स पर संकलित कर सकते हैं और इसे अपने एक्सकोड प्रोजेक्ट में एक स्थिर सी ++ लाइब्रेरी से जोड़ सकते हैं। 1. आपको गिनाक, सीएलएन और पीकेजी-कॉन्फ़िगर (http://www.freedesktop.org/wiki/Software/pkg-config/) डाउनलोड करने की आवश्यकता है। 2. अनपैक करने और अपने/usr/स्थानीय निर्देशिका 3. अनपैक में pkg-config संकलन और संकलन CLN 4. अनपैक और संकलन Ginac

फिर अपने लक्ष्य चुना Xcode में परियोजना सेटिंग्स आप पर जाएं और अपनी हेडर फ़ाइलें डाल बिल्ड सेटिंग्स में शीर्षलेख खोज पथ का मार्ग। फिर बिल्ड चरण पर जाएं - पुस्तकालयों के साथ लिंक बाइनरी "+" पर क्लिक करें और अन्य जोड़ें चुनें, फिर अपनी संकलित लाइब्रेरी फ़ाइल libginac.a चुनें जो मुझे लगता है। अपनी कक्षा शीर्ष लेख फ़ाइल में अपनी ginac.h फ़ाइल को शामिल करना न भूलें।

#include <ginac.h> 
संबंधित मुद्दे