الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعده فى قراءة الجمل والكلمات من الملفات

بدأه إنسانه مسلمة في 13 أبريل 2011 · 5 رد · 463 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اريد المساعده فى هذا الكود وهو بياخد من richtextbox بيقرأ سطر سطر فالمفروض انه بيقارن الكلام ده بملفين نصوص ملف بة كل الجمل وملف بة كل الكلمات فيقارن الكلام الموجود عنده بهذة الجمل والكلمات لو كانت جمله يضعها فى ملف نص اخر ويضعها قبلها # لو لو يجدها يضعها بين |||| ام لو وجدها كلمة فانه يضعها كما هى وان كانت غير موجوده يضعها ايضا بين |||| الكود بيكرر اى بيخرج الجمله او الكلمة مرتين ممكن اجد من يساعدنى وجزاكم الله خيرا

string readingsent = File.ReadAllText(@"C:\hayam\dictionaries\gumal.txt");
            string[] reading_sentences = readingsent.Split(new char[] { ',', '.', '?', '!', '|', ':', ';' });
            Stream outputtencesSen = new FileStream(@"C:\hayam\temp\temp01.txt", FileMode.Append, FileAccess.Write, FileShare.None);
            StreamWriter sentencewriter = new StreamWriter(outputtencesSen);
            string[] readinwords = File.ReadAllLines(@"C:\hayam\dictionaries\kalimat.txt");
            foreach (string lin in File.ReadAllLines(@"C:\hayam\transinput\ToTranslateFile01.txt"))
            {
                string[] sentences = lin.Split(new char[] { ',', '.', '?', '!', '|', ':', ';' });

                foreach (string sentence in sentences)
                {
                    Regex reg = new Regex(sentence);
                    foreach (string gumla in reading_sentences)
                    {
                        int lenrth = gumla.Length;
                        //if (sentence.Length == lenrth)
                        //{
                            if (reg.IsMatch(gumla))
                            {
                                sentencewriter.AutoFlush = true;
                                sentencewriter.Write("#" + Environment.NewLine + sentence.Trim().ToString() + Environment.NewLine);
                            }
                            else
                            {
                                sentencewriter.Write("||" + sentence.ToString() + "||");
                            }



                    foreach (string word in readinwords)
                    {
                        string[] ww = Regex.Split(word, @"\W+");
                        foreach (string w in ww)
                        {
                            int lenword = w.Length;
                            //if (sentence.Length <= lenword)
                            //{
                                if (reg.IsMatch(w.Trim()))
                                {
                                    sentencewriter.AutoFlush = true;
                                    sentencewriter.Write(Environment.NewLine + sentence.Trim().ToString() + Environment.NewLine);

                                }
                                //else if (!reg.IsMatch(w.Trim()))
                                //{
                                //    MessageBox.Show(sentence);
                                //    sentencewriter.AutoFlush = true;
                                //    sentencewriter.Write("||" + sentence.Trim().ToString() + "||");
                                //}
                            //}
                        //}



                        }
                    }

                    }                        

                    }
            }
#2

أختي , توصيف البرنامج مو واضح من خلال يللي كتبتيه , مو عارف الهدف هل هو قاموس ؟ , لكن في عملية مقارنة , لماذا استخدمتي جمل و من ثم كلمات ؟

سوف أضع بعض الأفكار التي لربما تساعدك , متل مو شايف مشتغلة 40 سطر بداية للبرنامج , و للصراحة صعب إني حل الوظيفة , بس بساعدك في حال فهمت شو المطلوب

اقترح عليكي أن :

1- تساوي كلاس linesplit يقسم في البدء عند كل سطر جديد /n , يضعهم في array أو hashtable ثم عند الرموز فاصلة , نقطة .. ثم كلمة كلمة

2- تضعي ملف الكلمات في هاش تيبل لكي تكون المقارنة سريعة

3- حاولي أن تعملي بشكل Object Oriented يريح لك العمل في المراحل القادمة

أستطيع إذا حددتي سؤالك أن أرفق لك أمثلة على حسب طلبك , لكن أريد أن أرى شيء غير file streaming

#3

جزاك الله كل خير اخى

فعلا هو قاموس لكن بياخد من ملفات للنصوص ولكن المفروض النص المراد ترجمته يتكون من جمل وكلمات والمفروض ايضا ان القاموس يفصل كلمات الجمل عن الكلمات ولذلك عملت ملف نص للجمل وملف نص للكلمات وبحاول اقارن بين النص المراد ترجمته وهذين الملفين لكى اعرف ما به من جمل ام كلمات عذرا اخى ان كنت غير موضحه الغرض واتمنى انى اكون وضحت

#4

طيب ماشي فإذاً , نحن أمام العديد من الخوارزميات لتنفيذ هذا البرنامج

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.IO;

namespace arabteam2000_words
{
    class Dictionary_1
    {
        private static string word;
        private static string sentence;
        public static string[] arrayOfwords;
//        public static string[] arrayOfsent;


        public static Hashtable ApplyDictionary_1()
        {
            arrayOfwords = new string[256];
            FileStream fs = new FileStream("textFile.txr", FileMode.Open);
            StreamReader sr = new StreamReader(fs);
            string line;
            Hashtable words_list = new Hashtable();
            int counter = 1;
            try
            {
                line = sr.ReadLine();
                while (line != null)
                {
                    readLine(line);
                    //here the program goes
                }
            }
            catch (IOException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                /* sr.Close;
                 fs.Close;*/
            }

            return words_list;
        }

        public static void readLine(string line)
        {
            string[] words= line.Split(" ".ToCharArray());
            //or any other line splitting states
        }


    }
}

في هذه المرحلة أنا لم أفعل شيء , سوى بنيت قالباً , لأضع إطار العمل بداخله , و لازلت احتاج إلى كلاس اخر سأسميه Dictionary_2

لكن دعيني أضع لك النقاط الرئيسية التي سأعتمد عليها :

1- أصنع مصفوفة للكلمات و كذلك هاش تايبل , أضع فيها الكلمات

2- أصنع مصفوفة للجمل , و أيضاً هاش تايبل , لم أصنعه في المثال فوق

3-نقرأ الملف -- نقسم عند كل نهاية سطر , و من ثم ندخل السطر و نقسم عند الفواصل و النقاط و علامات التعجب , إلى جمل , اصنعي listbox لتطبعي فيه الجمل و اصنعي list box اخر لتطبعي فيه الكلمات

اختي الكريمة أنا لا أريد أن أحل لك الواجب , لكن أريد أن أرى منك أفكاراً و عملاً , رجاء دعيني أرى أنك قسمتي النص

وضعتي الجمل في list box في الواجهة , و الكلمات في listbox و بعدها تستطيعين الدخول إلى الكلاس الآخر لمقارنة الكلمات و الجمل , لكن تأكدي أن المرحلة الأولى صحيحة معك

#5

اخى لما جربت استخدم hashtable بيخرج لى اول جمله وترجمتها فقط

Hashtable sentencetable = new Hashtable();

sentencetable.Clear();

foreach (string ss in reading_sentences)

{

foreach (string mm in reading_meaning)

{

if (!sentencetable.ContainsKey(ss))

{

sentencetable.Add(txtSourceText.Text,mm);

}

//}

}

}

foreach (DictionaryEntry de in sentencetable)

{

txtSourceText.Text = de.Key.ToString();

txtTranslatedText.Text = de.Value.ToString();

}

#6

لم أنظر إلى الكود طالما ترجم لك جملة , لكن نظرت إلى نهايته

أظن أن الطباعة في txtSource و txtTranslated عم تنطبع فوق بعضها و لذلك أظنه يطبع اخر جملو و ليس الأولى

لذلك

لو كان richtextbox اطبعي مع الإنتقال إلى السطر اللي تحته بعد النهاية من طباعة كل جملة

لو كان listbox اعمل txtSource.Items.Add

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…