سی شارپ (ڈاٹ نیٹ) ونڈوز فارم اپلی کیشن کے تعلق سے مدد

شکیب

محفلین
تمام پروگرامرز کو کوڈنگ بھرا سلام۔
بندہ عاجز سی شارپ میں نیا ہے، اوبجیکٹ اوری اینٹڈ کے سارے کنسیپٹس (سی پی پی) کلیئر ہیں۔ منی پروجیکٹ پر کام کرنے کے دوران میں نے سی شارپ ہی کو چنا کیونکہ بے حد آسان معلوم ہوئی۔
اس دوران جو بھی پریشانیاں آئیں گی ان شاء اللہ میں انہیں پوسٹ کرتا رہوں گا۔ میں چاہتا ہوں کہ رئیلی یہ پروجیکٹ خود سے سمجھ سمجھ کر کروں۔
پس منظر:
تھوڑا پس منظر یہ ہے کہ پروجیکٹ Natural Language Processing پر ہے، جس میں مقصد یہ ہے کہ یوزر اگر ایک جملہ لکھے، تو اسے آؤٹ پٹ میں اس جملہ کا مثبت یا منفی ہونا معلوم ہو۔(یہ بیسک کام ہے۔۔۔ اسے بعد میں Extend کیا جاسکتا ہے مثلا Positive , Negative, Average وغیرہ)
مثال:
Input:Shakeeb is a good boy.
Output: Positive
Input :It's bad.
Output: Negative
اس میں آؤٹ پٹ کے لیے میسج باکس شو کر رہا ہوں۔۔۔ اور بہتر کی تجویز آپ دے دیں تو نوازش۔
فی الوقت کام کتنا ہوا ہے؟
  • RichTextBox1 میں موجود ٹیکسٹ میں اگر لفظ Good, awesome, nice وغیرہ ہیں تو
    کوڈ:
    messagebox.show("Positive");
  • بصورتِ دیگر اگر Bad وغیرہ الفاظ ہیں تو میسج باکس میں Negative شو کرنا
  • تقریبا 1200 Reviews کی ایک فائل ہے جس میں یہ جملے لکھے گئے ہیں، اس ٹیکسٹ فائل کو رچ ٹیکسٹ باکس میں اوپن کرنا
  • لائن بائی لائن ریڈ کرنا
  • رزلٹ شو کرنا
پریشانیاں:
چونکہ ڈاٹ نیٹ میں یہ بالکل شروعات ہے میری، اس لیے اگر پریشانیاں بچکانہ بھی لگیں تو امید ہے برا نہیں مانیں گے۔
پریشانی نمبر 1:
اچھے تاثرات ظاہر کرنے والے الفاظ Good, awesome وغیرہ کی موجودگی چیک کرنے کے لیے میں نے .contains میتھڈ استعمال کیا ہے۔ اس میں پریشانی یہ ہے کہ فی الحال تو صرف تین چار الفاظ لکھے ہیں، البتہ سافٹ ویئر کی اچھی کارکردگی کے لیے ایک ڈکشنری اچھے الفاظ کی ہے انہیں بار بار .contains یوز کرکے استعمال کرنا بڑا احمقانہ سا لگتا ہے۔ کام تو نکل جائے گا، لیکن ایک تو محنت مفت کی، اور دوسرے میں سمجھتا ہوں اس کے لیے کوئی اچھا حل(مثلا اس اچھے الفاظ کی ڈکشنری فائل کو ڈاریکٹ استعمال کرنا) نکل سکتا ہے۔
کوڈ:
if (input.contains("good") || input.contains("awesome")) {
//جو بھی ایگزیکیوٹ کرنا ہے
}
اس کا حل بقول stackoverflow یہ ہے کہ ایک Array استعمال کیا جائے۔ لیکن ہر لفظ کو "" کے اندر لکھنا اس صورت میں پریشان کن ہوگا۔
دوسرے حل تھوڑا ٹھیک لگا۔
کوڈ:
Pattern pattern = Pattern.compile("good|awesome");
if (pattern.matcher(input).find()) {
    execute();
}
لیکن میرے خیال میں اگر ایک .txt فائل بطور ڈکشنری استعمال ہوسکتی تو بہت اچھا ہوتا۔

توجہ: رانا hackerspk نبیل سید ذیشان ابرار حسین
 

hackerspk

محفلین
کوڈ:
        'open list of sentences to check
        Dim lines() As String = IO.File.ReadAllLines("C:\lines_one_review_per_line.txt", System.Text.Encoding.UTF8)
        'open file of positive words like good,nice. One word per line in lower case.
        Dim positive() As String = IO.File.ReadAllLines("C:\one_poitive_word_per_line.txt", System.Text.Encoding.UTF8)
        For Each line In lines
            For Each pos In positive
                If LCase(line).Contains(pos) Then
                    RichTextBox1.AppendText(line & ": Positive" & vbNewLine)
                    Exit For
                End If
            Next
        Next
 

شکیب

محفلین
کوڈ:
        'open list of sentences to check
        Dim lines() As String = IO.File.ReadAllLines("C:\lines_one_review_per_line.txt", System.Text.Encoding.UTF8)
        'open file of positive words like good,nice. One word per line in lower case.
        Dim positive() As String = IO.File.ReadAllLines("C:\one_poitive_word_per_line.txt", System.Text.Encoding.UTF8)
        For Each line In lines
            For Each pos In positive
                If LCase(line).Contains(pos) Then
                    RichTextBox1.AppendText(line & ": Positive" & vbNewLine)
                    Exit For
                End If
            Next
        Next
جزاک اللہ بھائی۔(آپ کا نام بھول گیا کہیں پڑھا ضرور تھا) اسے دیکھ کر کل بتاتا ہوں، امید ہے کام ہو جائے گا۔ نہیں ہوا تو پھر پوچھوں گا۔
البتہ اگر Lower case میں نہیں ہیں، یعنی case کو اگنور کرنا ہے تو اس کے لیے کیا کرنا ہوگا؟
 

hackerspk

محفلین
جزاک اللہ بھائی۔(آپ کا نام بھول گیا کہیں پڑھا ضرور تھا) اسے دیکھ کر کل بتاتا ہوں، امید ہے کام ہو جائے گا۔ نہیں ہوا تو پھر پوچھوں گا۔
البتہ اگر Lower case میں نہیں ہیں، یعنی case کو اگنور کرنا ہے تو اس کے لیے کیا کرنا ہوگا؟
کوڈ:
 If LCase(line).Contains(LCase(pos)) Then
 
آخری تدوین:

شکیب

محفلین
hackerspk میں نے آپ کے بتائے ہوئے طریقے کے مطابق امپلی مینٹ کرنے کی کوشش کی،بس For لوپ کی جگہ do while استعمال کیا ہے۔۔۔ لیکن پتہ نہیں کیا گڑبڑ ہے، ذرا اس میں غلطی چیک کریں، مجھے تو سمجھ میں نہیں آرہی کہاں غلطی کر رہا ہوں۔
کوڈ:
string praise_word = "";
            System.IO.StreamReader objReader;
            objReader = new System.IO.StreamReader(@"D:\shakes.ahmad\Personals\School\Programs\Mini Project 6th sem\Praise Word List.txt");
            do
            {
                praise_word = objReader.ReadLine() + "\r\n";
                //MessageBox.Show(praise_word);
               
                    if (richTextBox1.Text.Contains(praise_word))
                    {
                        MessageBox.Show("POISTIVE");
                    }
               
            } while (objReader.Peek() != -1);
            objReader.Close();
        }
IF کی کنڈیشن میں سرخ الفاظ کو دیکھیں۔ مذکورہ بالا کوڈ کچھ کام نہیں کر رہا ہے۔ جب میں نے بطور ٹیسٹ praise_word کو بدل کے
کوڈ:
if (richTextBox1.Text.Contains("good"))
کیا تو میسج باکس پازیٹیو شو کر رہا تھا۔
میں نے یہ دیکھنے کے لیے کہ آیا praise_word ویری ایبل میں لفظ good وغیرہ آرہے ہیں یا نہیں، ایک میسج باکس لگا کر دیکھا (اس Statement کو میں نے اوپر کمنٹ کر دیا ہے سبز رنگ میں) تو یکے بعد دیگرے میسج باکس میں میری ڈکشنری میں موجود الفاظ good, nice وغیرہ دکھائی دیتے گئے۔۔۔ یعنی praise_word میں وہ الفاظ موجود ہیں۔
اس کے بعد بھی
کوڈ:
                    if (richTextBox1.Text.Contains(praise_word))
                    {
                        MessageBox.Show("POISTIVE");
                    }
کام نہیں کر رہا ہے۔۔۔ ایسا کیوں؟
نبیل رانا ابرار حسین
 

hackerspk

محفلین
کوڈ:
     'for single line in richtextbox
        If RichTextBox1.Text.ToLower.Contains(praise_word.ToLower) Then
            MessageBox.Show("POISTIVE")
        End If
        'for multiple lines in richtextbox
        For Each line In RichTextBox1.Lines
            If line.ToLower.Contains(praise_word.ToLower) Then
                MessageBox.Show("POISTIVE")
            End If
        Next
 

شکیب

محفلین
کوڈ:
 'for single line in richtextbox
'for multiple lines in richtextbox
اس کے لیے کیا میتھڈ ہے؟ کوئی خصوصی میتھڈ ہے یا لوپ ہی سے کرنا ہے؟
 

hackerspk

محفلین
طریقہ واردات تو ایک سے زائد ہیں۔ منحصر اس پر ہوتا ہے کہ استعمال کس جگہ کیا جائے۔ عام طور پر بار بار کنٹرول کو استعمال نہیں جاتا اس سے آپ کا عمل بہت سست رفتار ہو جاتا ہے۔ ایک ہی دفعہ کنٹرول سے معلومات اٹھا کر کسی ویری ایبل میں جمع کر دی جاتی ہیں ۔ اور اگلی دفعہ ضرورت پڑنے پر اس ویری ایبل سے معلومات لے لی جاتی ہیں۔ لیکن اس کے ساتھ ساتھ ریم پر موجود جگہ کا دھیان بھی ضروری ہے۔ مثلا:

اگر کسی خاص سطر کو جانچنا ہو تو
کوڈ:
RichTextBox1.Lines(1)
 

شکیب

محفلین
طریقہ واردات تو ایک سے زائد ہیں۔ منحصر اس پر ہوتا ہے کہ استعمال کس جگہ کیا جائے۔ عام طور پر بار بار کنٹرول کو استعمال نہیں جاتا اس سے آپ کا عمل بہت سست رفتار ہو جاتا ہے۔ ایک ہی دفعہ کنٹرول سے معلومات اٹھا کر کسی ویری ایبل میں جمع کر دی جاتی ہیں ۔ اور اگلی دفعہ ضرورت پڑنے پر اس ویری ایبل سے معلومات لے لی جاتی ہیں۔ لیکن اس کے ساتھ ساتھ ریم پر موجود جگہ کا دھیان بھی ضروری ہے۔ مثلا:

اگر کسی خاص سطر کو جانچنا ہو تو
کوڈ:
RichTextBox1.Lines(1)
ہاں یہ تو ہے۔
میں اسے چیک کر کے کل آگاہ کروں گا۔
ویسے ایک بات سمجھ میں نہیں آئی، کہ میں نے صرف Case سے متعلق کمانڈ نہیں دی تھی (جو آپ نے اپنے کوڈ میں لکھی ہے) تو کیا اسی وجہ سے میرا کوڈ کام نہیں کر رہا تھا؟
جبکہ ایسا ہونا تو نہیں چاہیے، کیونکہ میں نے Praising_word_list.txtمیں بھی good ہی لکھا تھا اور پھر چیک کرنے کے لیے rich text box میں بھی lower case میں ہی good لکھا تھا، پھر بھی کوڈ رن نہیں ہوا تھا۔ کیوں بھلا؟
 

hackerspk

محفلین
ہاں یہ تو ہے۔
میں اسے چیک کر کے کل آگاہ کروں گا۔
ویسے ایک بات سمجھ میں نہیں آئی، کہ میں نے صرف Case سے متعلق کمانڈ نہیں دی تھی (جو آپ نے اپنے کوڈ میں لکھی ہے) تو کیا اسی وجہ سے میرا کوڈ کام نہیں کر رہا تھا؟
جبکہ ایسا ہونا تو نہیں چاہیے، کیونکہ میں نے Praising_word_list.txtمیں بھی good ہی لکھا تھا اور پھر چیک کرنے کے لیے rich text box میں بھی lower case میں ہی good لکھا تھا، پھر بھی کوڈ رن نہیں ہوا تھا۔ کیوں بھلا؟
جواب نمبر ایک
جادو، کیمرے کا کمال وغیرہ وغیرہ
جواب نمبر دو
اگر اس سے معاملہ ہوا ہے تو کیس کا ہی فرق تھا۔
 

فرخ

محفلین
ڈاٹ نیٹ میں "List" یا "Dictionary" میں منفی اور مثبت الفاظ کی ڈکشنری لوڈ کر لیں۔ اور الفاظ کو ان میں سے تلاش کر لیں۔ خاص طور پر "List" ڈیٹا سٹرکچر تلاش کرنے کے مختلف "Algorithms" کو سپورٹ کرتا ہے۔
یہ دونوں ڈیٹا سٹرکچرز بہت اچھی پرفارمنس کے حامل ہیں ۔ زیادہ تر کام "List" بہت استعمال کیا جاتا ہے۔۔۔ نیچے دئے ہوئے لنک سے آپ کو اسکے استعمال کی اچھی معلومات مل جائیں گی۔
http://www.dotnetperls.com/list
 

شکیب

محفلین
جواب نمبر ایک
جادو، کیمرے کا کمال وغیرہ وغیرہ
جواب نمبر دو
اگر اس سے معاملہ ہوا ہے تو کیس کا ہی فرق تھا۔
اس سے معاملہ حل نہیں ہواتھا۔ فرخ بھائی کا مراسلہ دیکھا کہ لسٹ کا استعمال اس سلسلے میں بہتر ہوگا، تو یونہی انگلیاں کی بورڈ کا سفر کرنے پھر روانہ ہوگئیں اور الحمد للہ کام ہوگیا۔
ڈاٹ نیٹ میں "List" یا "Dictionary" میں منفی اور مثبت الفاظ کی ڈکشنری لوڈ کر لیں۔ اور الفاظ کو ان میں سے تلاش کر لیں۔ خاص طور پر "List" ڈیٹا سٹرکچر تلاش کرنے کے مختلف "Algorithms" کو سپورٹ کرتا ہے۔
یہ دونوں ڈیٹا سٹرکچرز بہت اچھی پرفارمنس کے حامل ہیں ۔ زیادہ تر کام "List" بہت استعمال کیا جاتا ہے۔۔۔ نیچے دئے ہوئے لنک سے آپ کو اسکے استعمال کی اچھی معلومات مل جائیں گی۔
http://www.dotnetperls.com/list

میں نے یہ کیا کہ یوزر کی فراہم کردہ فائل کو listbox1 میں ایک لائن میں ایک جملہ کے طور پر لوڈ کرادیا، پھر اچھے الفاظ کی ڈکشنری کو دوسرے listbox2 میں لوڈ کرایا۔۔۔ foreach کا استعمال کرکے چیک کیا تو کارکردگی (اب تک) درست آئی۔
کوڈ:
foreach (string line in listBox1.Items)
            {
                int count = 0;
                foreach (string line2 in listBox2.Items)
                {
                    if (line.ToLower().Contains(line2.ToLower()))
                    {
                        count++;
                        MessageBox.Show("\"" + line.ToString() + "\"" + " which is on line number " + listBox1.Items.IndexOf(line).ToString() + " is POISTIVE SCENTENCE.");
                        if (count >= 2)
                            MessageBox.Show(count.ToString());
                    }
                   
                }
پریشانی نمبر 2:
سرخ الفاظ مسئلہ کر رہے ہیں، خصوصا دوسرا میسج باکس جواب تو درست دیتا ہے، مثلا اگر ایک جملہ میں دو لفظ positive والے ہیں تو count کی قیمت 2 دکھاتا ہے، لیکن صرف ایک بار نہیں، بلکہ good_words کی ڈکشنری میں جتنی اینٹریز موجود ہیں، اتنی بار میسج باکس دکھاتا ہے ۔۔۔ جسے پھر فورس کویٹ کرنا پڑتا ہے۔(یہ شاید لوپ کی کوئی غلطی ہے)


پریشانی نمبر 3:
اصل پریشانی یہی ہے۔ کہ ابھی صرف positive words کی ڈکشنری کو لسٹ باکس میں لوڈ کرکے positiveness چیک کی ہے، جبکہ دوسری negative wordsکی ڈکشنری بھی ہے اور average کی بھی، میں نے اس میں سوچا تھا کہ ڈکشنری کو جس لسٹ باکس میں لوڈ کر رہا ہوں اسے visible=false کر دوں گا، لیکن اب تین تین ڈکشنری کے لیے تین لسٹ باکس رکھنا اور انہیں invisible کرنا بالکل ٹھیک نہیں ہوگا۔
----اس کا دوسرا متبادل کیا اختیار کروں(یعنی تین ”ڈکشنری“ کے لیے تین لسٹ باکس کے علاوہ کچھ
----کیا ایک ہی لسٹ باکس میں یکے بعد دیگرے تینوں ڈکشنریوں کو لوڈ کرکے کام کیا جائے؟ اور یہ کیسے ہوگا؟(یہ شاید آسان ہو، لیکن آپ لوگوں کے ذہن میں کچھ اور اچھا آئیڈیا آئے تو ضرور بتائیں امپلی مینٹیشن کے طریقے کے ساتھ)
hackerspk رانا نبیل ابرار حسین
 

hackerspk

محفلین
اس سے معاملہ حل نہیں ہواتھا۔ فرخ بھائی کا مراسلہ دیکھا کہ لسٹ کا استعمال اس سلسلے میں بہتر ہوگا، تو یونہی انگلیاں کی بورڈ کا سفر کرنے پھر روانہ ہوگئیں اور الحمد للہ کام ہوگیا۔


میں نے یہ کیا کہ یوزر کی فراہم کردہ فائل کو listbox1 میں ایک لائن میں ایک جملہ کے طور پر لوڈ کرادیا، پھر اچھے الفاظ کی ڈکشنری کو دوسرے listbox2 میں لوڈ کرایا۔۔۔ foreach کا استعمال کرکے چیک کیا تو کارکردگی (اب تک) درست آئی۔
کوڈ:
foreach (string line in listBox1.Items)
            {
                int count = 0;
                foreach (string line2 in listBox2.Items)
                {
                    if (line.ToLower().Contains(line2.ToLower()))
                    {
                        count++;
                        MessageBox.Show("\"" + line.ToString() + "\"" + " which is on line number " + listBox1.Items.IndexOf(line).ToString() + " is POISTIVE SCENTENCE.");
                        if (count >= 2)
                            MessageBox.Show(count.ToString());
                    }
                  
                }
پریشانی نمبر 2:
سرخ الفاظ مسئلہ کر رہے ہیں، خصوصا دوسرا میسج باکس جواب تو درست دیتا ہے، مثلا اگر ایک جملہ میں دو لفظ positive والے ہیں تو count کی قیمت 2 دکھاتا ہے، لیکن صرف ایک بار نہیں، بلکہ good_words کی ڈکشنری میں جتنی اینٹریز موجود ہیں، اتنی بار میسج باکس دکھاتا ہے ۔۔۔ جسے پھر فورس کویٹ کرنا پڑتا ہے۔(یہ شاید لوپ کی کوئی غلطی ہے)


پریشانی نمبر 3:
اصل پریشانی یہی ہے۔ کہ ابھی صرف positive words کی ڈکشنری کو لسٹ باکس میں لوڈ کرکے positiveness چیک کی ہے، جبکہ دوسری negative wordsکی ڈکشنری بھی ہے اور average کی بھی، میں نے اس میں سوچا تھا کہ ڈکشنری کو جس لسٹ باکس میں لوڈ کر رہا ہوں اسے visible=false کر دوں گا، لیکن اب تین تین ڈکشنری کے لیے تین لسٹ باکس رکھنا اور انہیں invisible کرنا بالکل ٹھیک نہیں ہوگا۔
----اس کا دوسرا متبادل کیا اختیار کروں(یعنی تین ”ڈکشنری“ کے لیے تین لسٹ باکس کے علاوہ کچھ
----کیا ایک ہی لسٹ باکس میں یکے بعد دیگرے تینوں ڈکشنریوں کو لوڈ کرکے کام کیا جائے؟ اور یہ کیسے ہوگا؟(یہ شاید آسان ہو، لیکن آپ لوگوں کے ذہن میں کچھ اور اچھا آئیڈیا آئے تو ضرور بتائیں امپلی مینٹیشن کے طریقے کے ساتھ)
hackerspk رانا نبیل ابرار حسین
فرخ کی مراد لسٹ باکس سے نہیں لسٹ سے تھی۔
کوڈ:
 Dim mList As New List(Of String)
میں نے پہلے مراسلے میں لسٹ ہی کی ایک شکل کو استعمال کیا تھا۔ یہ نہایت برق رفتار طریقہ ہوتا ہے جس سے آپ نہایت تیزی سے اپنے کام کی تکمیل کر لیتے ہیں۔
باقی جتنا میں سمجھ پایا ہوں اس کے مطابق درج ذیل کوڈ آپ کے مسئلے کو حل کر دے گا۔
کوڈ:
 Dim positive() As String = IO.File.ReadAllLines(Application.StartupPath & "\pos.txt")
        Dim negative() As String = IO.File.ReadAllLines(Application.StartupPath & "\neg.txt")
        For Each line In RichTextBox1.Lines
            If line.Trim.Length > 0 Then
                Dim countP As Integer
                Dim countN As Integer
                For Each pos In positive
                    If pos.Trim.Length > 0 Then
                        If LCase(line).Contains(LCase(pos.Trim)) Then
                            countP += 1
                        End If
                    End If

                Next
                For Each neg In negative
                    If neg.Trim.Length > 0 Then
                        If LCase(line).Contains(LCase(neg.Trim)) Then
                            countN += 1
                        End If
                    End If
                Next
                Dim finalS As String = line
                If countP > 0 Then
                    finalS += " contains " & countP & " positive values"
                End If
                If countN > 0 Then
                    If countP > 0 Then
                        finalS += " and " & countN & " negative values"
                    Else
                        finalS += " contains " & countN & " negative values"
                    End If
                End If
            End If
        Next

کافی انگریزی لکھوا دی، چلو اللہ تو دیکھ رہا ہے نا۔
 

شکیب

محفلین
فرخ کی مراد لسٹ باکس سے نہیں لسٹ سے تھی۔
کوڈ:
 Dim mList As New List(Of String)
میں نے پہلے مراسلے میں لسٹ ہی کی ایک شکل کو استعمال کیا تھا۔ یہ نہایت برق رفتار طریقہ ہوتا ہے جس سے آپ نہایت تیزی سے اپنے کام کی تکمیل کر لیتے ہیں۔
باقی جتنا میں سمجھ پایا ہوں اس کے مطابق درج ذیل کوڈ آپ کے مسئلے کو حل کر دے گا۔
کوڈ:
Dim positive() As String = IO.File.ReadAllLines(Application.StartupPath & "\pos.txt")
        Dim negative() As String = IO.File.ReadAllLines(Application.StartupPath & "\neg.txt")
        For Each line In RichTextBox1.Lines
            If line.Trim.Length > 0 Then
                Dim countP As Integer
                Dim countN As Integer
                For Each pos In positive
                    If pos.Trim.Length > 0 Then
                        If LCase(line).Contains(LCase(pos.Trim)) Then
                            countP += 1
                        End If
                    End If

                Next
                For Each neg In negative
                    If neg.Trim.Length > 0 Then
                        If LCase(line).Contains(LCase(neg.Trim)) Then
                            countN += 1
                        End If
                    End If
                Next
                Dim finalS As String = line
                If countP > 0 Then
                    finalS += " contains " & countP & " positive values"
                End If
                If countN > 0 Then
                    If countP > 0 Then
                        finalS += " and " & countN & " negative values"
                    Else
                        finalS += " contains " & countN & " negative values"
                    End If
                End If
            End If
        Next

کافی انگریزی لکھوا دی، چلو اللہ تو دیکھ رہا ہے نا۔
اللہ آپ کو بہترین بدلہ دے۔ آپ کا فراہم کردہ کوڈ دیکھ رہا ہوں۔ کیا آپ یہ کہنا چاہتے ہیں کہ میں لسٹ باکس کا استعمال نہ کروں۔ اگر اس کے بغیر کام نکل رہا ہے تو بہت اچھی بات ہوگی۔
 

شکیب

محفلین
اصل میں یہ Dim وغیرہ کیا ہیں میں سمجھ نہیں پایا تھا، ٹائپ کرنے پر وژول اسٹوڈیو اس کے نیچے سرخ لکیر کھینچ دیتا ہے۔
 

hackerspk

محفلین
اصل میں یہ Dim وغیرہ کیا ہیں میں سمجھ نہیں پایا تھا، ٹائپ کرنے پر وژول اسٹوڈیو اس کے نیچے سرخ لکیر کھینچ دیتا ہے۔

یہ کوڈ ویژول بیسک میں لکھا ہوا ہے۔ سی شارپ میں نہیں اس لیے ایسا ہو رہا ہے۔ میرا خیال تھا کہ آپ ویژول بیسک جانتے ہوں گے جیسے میں س شارپ کا کوڈ سمجھ لیتا ہوں لیکن آج تک سی شارپ میں کوئی اپلیکیشن نہیں بنائی۔ دونوں زبانیں ایک دوسرے کے بہت قریب ہیں۔ درج ذیل لنک سے کوڈ کو ٹرانسلیٹ کیا جا سکتا ہے۔

http://converter.telerik.com/

کوڈ:
string[] positive = IO.File.ReadAllLines(Application.StartupPath + "\\pos.txt");
string[] negative = IO.File.ReadAllLines(Application.StartupPath + "\\neg.txt");
foreach (void line_loopVariable in RichTextBox1.Lines) {
	line = line_loopVariable;
	if (line.Trim.Length > 0) {
		int countP = 0;
		int countN = 0;
		foreach (void pos_loopVariable in positive) {
			pos = pos_loopVariable;
			if (pos.Trim.Length > 0) {
				if (Strings.LCase(line).Contains(Strings.LCase(pos.Trim))) {
					countP += 1;
				}
			}

		}
		foreach (void neg_loopVariable in negative) {
			neg = neg_loopVariable;
			if (neg.Trim.Length > 0) {
				if (Strings.LCase(line).Contains(Strings.LCase(neg.Trim))) {
					countN += 1;
				}
			}
		}
		string finalS = line;
		if (countP > 0) {
			finalS += " contains " + countP + " positive values";
		}
		if (countN > 0) {
			if (countP > 0) {
				finalS += " and " + countN + " negative values";
			} else {
				finalS += " contains " + countN + " negative values";
			}
		}
	}
}
 

شکیب

محفلین
اف! میں آپ کے کوڈ کو کوڈ نہیں بلکہ الگورتھم سمجھ رہا تھا، اور اسے امپلی منٹ کر رہا تھا سمجھ سمجھ کے۔
خیر! اچھا ہوا یہ بات سامنے آگئی، ورنہ غلط فہمیاں مزید نقصان کو جنم دےسکتی ہیں۔
 

hackerspk

محفلین
اف! میں آپ کے کوڈ کو کوڈ نہیں بلکہ الگورتھم سمجھ رہا تھا، اور اسے امپلی منٹ کر رہا تھا سمجھ سمجھ کے۔
خیر! اچھا ہوا یہ بات سامنے آگئی، ورنہ غلط فہمیاں مزید نقصان کو جنم دےسکتی ہیں۔

صنف کرخت اور صنف نازک کے درمیان غلط فہمیاں جنم دیتی ہیں اور پروگرامنگ میں غلط فہمیاں فہمیاں دیتی ہیں۔ ویسے خیال اپنا اپنا۔
 

شکیب

محفلین
پریشانی نمبر 3:
hackerspk بھائی کا سجیشن(لسٹ کو استعمال کرنے کا) اور فراہم کیا گیا کوڈ استعمال کرکے مطلوب رزلٹ حاصل ہوگیا الحمد للہ۔
آگے عرض یہ ہے کہ ڈکشنری میں موجود الفاظ کے ساتھ دوسرا ایک کالم اٹیچ کرنا ہے، وہ ہے ریٹنگ کا۔ مثلا پہلے ڈکشنری اس طرح کی تھی
good
nice
excellent
awesome
اور ان الفاظ کا استعمال کرکے آؤٹ پٹ آرہا تھا۔۔۔مثلا مثال یہ ہے
yes, it's an excellent software
output: +1
لیکن اب شدت کو بھی محسوس کرنا ہے، یعنی اصل میں آؤٹ پٹ آنا چاہیے تھا۔۔۔
output: +3
یہ اس لیے کہ جملہ میں لفظ excellent کا استعمال ہے۔ وہی اگر good ہوتا تو آؤٹ پٹ آنا چاہیے : +1
اس کے لیے ہماری ڈکشنری میں ہر لفظ کے آگے اس طرح کا اضافہ کرنا ہوگا۔
good /1
nice /1
excellent /3
اور نیگیٹیو ڈکشنری میں
bad /-1
worst /-3
وغیرہ
اب اس سلیش / کے بعد کی ریٹنگ کو کس طرح لیا جائے؟ اور اسے کس طرح آؤٹ پٹ میں ایڈ کیا جائے، مثلا
it was excellent, really nice!
output: 3+1=4
ڈکشنری فائلز میں کالم کی طرز اختیار کرنے کے لیے / میں نے یہی محفل پر کسی پروگرام میں استعمال ہوتے ہوئے دیکھا ہے۔ کیا اس کا استعمال درست ہوگا، یا پھر ڈیٹا بیس بنا لیا جائے؟ ایکسل یا ایکسس کا(اس کا مجھے بالکل تجربہ نہیں ایکسس یا ایکسل کا)
hackerspk رانا نبیل ابرار حسین
 
Top