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

Matrix Direct Indexing Using String

مغلق
بدأه Final Heaven في 14 مايو 2007 · 3 رد · 870 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أقوم بكتابة Algorithm في مادة Natural Language Processing

لذا عندي سؤال جوابه سيريحني كثيرا في عمل المشروع

أود فكرة أو شئ يتعلق بإمكانية عمل شئ يشبه هذا:

myMatrix["i"]["want"]++;

أي أن تكون لدي القدرة على دخول أي مكان في Matrix بإستخدام Direct Indexing للString بإستخدام Library موجودة

داخل CSharp إن أمكن بدلا من قيامي بكتابة كود لها

أو شئ من هذا القبيل:

myMatrix.getIntValue("i","want");

أهمية سؤالي هو في إيجاد الفراغ عن طريق Direct Indexing بإستخدام String

حاولت إستخدام HashTable و لكنها تأخذ فقد Object و Key لو أمكن تعديلها لتأخذ إثنان من Key و Object

فستكون حلت بإذن الله

فأتمنى ممن يملك المعلومة ألا يبخل علينا بها

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#2

السلام عليكم

لا أعلم ما إن كانت إجابتي هذه ستفيدك أم لا ربما أكون صائبا أو على الأقل تساعك قليلا :rolleyes:

private void Form1_Load(object sender, EventArgs e)
 {   Array names = Array.CreateInstance(typeof(String), 2, 4);
	 names.SetValue("Amir", 0, 0);
	 names.SetValue("Sami", 0, 1);
	 names.SetValue("Ali", 0, 2);
	 names.SetValue("Fatma", 0, 3);
	 names.SetValue("Mohamed", 1, 0);
	 names.SetValue("Karim", 1, 1);
	 names.SetValue("Imen", 1, 2);
	 names.SetValue("Salah", 1, 3);
	 int items1 = names.GetLength(0);
	 int items2 = names.GetLength(1);
	 for (int i = 0; i < items1; i++)
		for (int j = 0; j < items2; j++)
			MessageBox.Show(i.ToString() + "," + j.ToString() + ": " + names.GetValue(i, j));
}

private void Form1_Load(object sender, EventArgs e)
			// Creates and initializes a new Array of type Int32.
	 Array oddArray = Array.CreateInstance(Type.GetType("System.String"), 5);
	 oddArray.SetValue("Amir", 0);
	 oddArray.SetValue("Sami", 1);
	 oddArray.SetValue("Ali", 2);
	 oddArray.SetValue("Fatma", 3);
	 oddArray.SetValue("Hammadi", 4);

	// Creates and initializes a new Array of type Object.
	 Array objArray = Array.CreateInstance(Type.GetType("System.Object"), 5);
	 Array.Copy(oddArray, oddArray.GetLowerBound(0), objArray, objArray.GetLowerBound(0), 4);
	 int items2 = objArray.GetUpperBound(0);
	 for (int i = 0; i < items2; i++)
	   MessageBox.Show(objArray.GetValue(i).ToString());

 }

والله أعلم

#3

شكرا لك أخي العزيز و الحمد لله تمكنت من حلها بأن أجعل Object الذي في Hashtable هو Hashtable أخرى

أي Hashtable ل Hashtable و لكن الملف المطلوب عمل Corpora منه كبير جدا

فكانت الذاكرة عندي تصل إلى صفر عند تشغيلي للبرنامج و يحصل له Freezing

فكانت Hashtable تأخذ مساحة كبيرة فقمت بتعديل ذلك و الحمد لله إلى Hashtable أعطيها الكلمة المرجوة و تأتيني

Index الخاص بها أي مكانها في Integer Matrix لأقوم عليها بالعمليات الحسابية

و لك الشكر الجزيل

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#4

هذا كلاس يوضح بناء كلاس مثل الـ Hashtable وقد صممتة للتحكم اكثر في الفهرسة واضافات اخري.

ارجو ان يكون فية الافادة.

using System;
using System.Collections;
using System.Threading;

public class PIDCollection : ICollection
{
	#region PIDCollection

	ArrayList list = new ArrayList();

	public PIDCollection() { }
	public PIDCollection(ushort pid) { this.Add(pid); }
	public PIDCollection(ushort[] pids) { this.Add(pids); }
	public PIDCollection(ushort pid, long size) { this.Add(pid, size); }

	public void Add(PID pid) { this.list.Add(pid); }
	public void Add(ushort pid) { this.Add(new PID(pid, 0)); }
	public void Add(ushort[] pids) { foreach(ushort pid in pids) this.Add(pid); }
	public void Add(ushort pid, long size) { this.Add(new PID(pid, size)); }
	public void AddRange(PID[] pid) { this.list.AddRange(pid); }

	public bool Contains(ushort pid)
	{
		for(int i = 0; i < list.Count; ++i) {
			if(((PID)list).Pid == pid) return true;
		} return false;
	}

	public int IndexOf(ushort pid)
	{
		for(int i = 0; i < list.Count; ++i) {
			if(((PID)list).Pid == pid) return i;
		} return -1;
	}

	public PID Find(ushort pid)
	{
		for(int i = 0; i < list.Count; ++i) {
			if(((PID)list).Pid == pid) return ((PID)list);
		} return null;
	}

	public void Remove(ushort pid)
	{
		PID p = Find(pid);
		if(p != null) list.Remove(p);
	}

	public void RemoveAt(int index)
	{
		if(IsOutIndex(index)) return;
		list.RemoveAt(index);
	}

	public void RemoveRange(int index, int count)
	{
		if(IsOutIndex(index)) return;
		list.RemoveRange(index, count);
	}

	public void CopyTo(Array array)
	{
		list.CopyTo(array);
	}

	public bool IsOutIndex(int index)
	{
		if((index > list.Count) || (index > 0))
			return true;
		return false;
	}

	public void Increment(ushort pid, long size)
	{
		if(Contains(pid)) {
			this[pid].Increment(size);
		}
	}

	public int Count
	{
		get { return this.list.Count; }
	}

	public PID this[ushort pid]
	{
		get { return Find(pid); }
		set
		{
			if(IsOutIndex(IndexOf(pid)) || !(value is PID)) return;
			list[IndexOf(pid)] = value;
		}
	}

	public PID this[int index]
	{
		get
		{
			if(IsOutIndex(index)) return null;
			return (PID)list[index];
		}
		set
		{
			if(IsOutIndex(index) || !(value is PID)) return;
			list[index] = value;
		}
	}

	public override string ToString()
	{
		return ToString(" - ");
	}

	string toString = string.Empty;

	public string ToString(string separator)
	{
		toString = string.Empty;
		for(int i = 0; i < list.Count; ++i) {
			toString += ((PID)list).ToString(separator) + "\r\n";
		}
		return toString;
	}

	#region Implement Members

	void ICollection.CopyTo(Array array, int index)
	{
		this.list.CopyTo(array, index);
	}

	int ICollection.Count
	{
		get { return this.list.Count; }
	}

	bool ICollection.IsSynchronized
	{
		get { return this.list.IsSynchronized; }
	}

	object ICollection.SyncRoot
	{
		get { return this.list.SyncRoot; }
	}

	IEnumerator IEnumerable.GetEnumerator()
	{
		return this.list.GetEnumerator();
	}

	#endregion

	#endregion

	#region PID Class

	public class PID
	{
		Timer timerSpeed;
		ushort pid = 0;
		long size = 0;
		string speed = null;
		long lastSize;

		protected void Define(ushort pid, long size)
		{
			this.pid = pid;
			this.size = size;
			timerSpeed = new Timer(delegate(object state) { Refreash(); }, null, 1000, 1000);
		}

		public PID(ushort pid)
		{
			Define(pid, 0);
		}

		public PID(ushort pid, long size)
		{
			Define(pid, size);
		}

		public void Increment(long val)
		{
			this.size += val;
		}

		public void Refreash()
		{
			speed = string.Format("{0:#,0} KB/S", (size - lastSize));
			lastSize = size;
		}

		public override string ToString()
		{
			return ToString(" - ");
		}

		public string ToString(string separator)
		{
			return ("PID : "+ pid + separator + " Size : " + string.Format("{0:#,0} KB", (size / 1024)) + separator + " Speed : " + speed);
		}

		public ushort Pid
		{
			get { return pid; }
		}

		public long Size
		{
			get { return size; }
			set { size = value; }
		}

		public string Speed
		{
			get { return speed; }
		}
	}
	#endregion
}

مواضيع متنوعة

هذا الموضوع مغلق.

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