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

لدي مشكلة في تطبيق هذه الخوارزمية

بدأه برق ورعد في 14 مايو 2008 · 1 رد · 893 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي خوارزمية لبرنامج يحسب نقاط لمجموعة سلاسل من الكلمات (عدد الكلمات مجهول)لما اطبقها فيه خلل لم استطع معرفته!!

اتمنى مساعدتكم لي في ايجاد مكان الخلل

في حال تشابه الاحرف وهذه الاحرف لاتساوي الرمز _ فاننا نزيد1 لعدد النقاط

في حالة اختلاف الحروف ولاتساوي الرمز _فاننا نطرح 1

في حالةاختلاف الاحرف او تساويهما مع وجود الرمز _فان عدد النقاط ينقص ب2

اليكم الخوارزمية::

function score=calculatescore(w,match,mismatch,gappenality)
[numofstr lengthofstr]=size(w);
score=0;
for i=1:lengthofstr
	for j=1:numofstr-1
		for k=j+1:numofstr
			if w(j,i)==w(k,i)
				if w(j,i)~='_'
					score=score+match;
				else
					score=score+gappenality;
				end
			end
			if w(j,i)~=w(k,i)
			  if w(j,i)=='_'||w(k,i)=='_'
				score=score+gappenality;
			  else
				score=score+mismatch;
			  end
			end
		end
	end
end
end

تم تعديل هذه المشاركة بواسطة عماد حمدي احمد في 11 يونيو 2008 في 16:45

#2

السلام عليكم ورحمة الله

أخى الفاضل برق ورعد

قرات البرنامج , ولم اجد به اخطاء علمية (على حد فهمى) , ولكن ربما يكون به خطأ ضمنى بسيط (يحدث معى كثيرا) وهو خاص بالمقارنه بين الحروف او ال strings عامة. فانا انصحك اخى الفاضل باستخدام الدالة strcmp , وهى خاصة بالمقارنة بين النصوص , ونتائجها 1 او صفر. بمعنى انه بدلا من استخدام الشرط

if w(j,i)=='_'

استخدم هذه الصيغة

if strcmp(w(j,i),'_')==1

وهكذا فى جميع الشروط على النصوص فى برنامجك.

كما اننى ارى انه يمكن تخفيض عدد العمليات الحسابية وتقليل الزمن بشئ بسيط من التعديل فى البرنامج مثلا بدل

for i=1:lengthofstr
	for j=1:numofstr-1
		for k=j+1:numofstr
		...

يمكن وضع هذه الشكل

for i=1:lengthofstr
	for j=1:numofstr-1
		if strcmp(w(j,i),'_')==1
		   score=score+numofstr*gappenality;
		else
		   for k=j+1:numofstr
		   ...
		end

هذا والله اعلى واعلم ,,,

تم تعديل هذه المشاركة بواسطة عماد حمدي احمد في 11 يونيو 2008 في 17:22

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

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