SlideShare a Scribd company logo
2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 
* جاهعة دهشق 
* كلية الهنذسة الوعلوهاتية 
* السنة الثانية 
 Algorithms and Data Structure 
Student: 
Kinan keshkeh 
Eng : 
Eng.Maher Al Sarem
2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 
خوارزمية نظام الي لاكتشاف الاخطاء وتصحيحيها في محرر 
نصوص: 
بنى المعطيات : 
)1 مصفوفة مؤشرات على سلاسل من نوع word : 
Dictionary=array*‘a’..’z’+ of pword 
)2 مؤشر على العقدة : 
Pword=*word 
)3 العقدة word : 
Word=Record 
{ 
X:ineger; // عدد دٌل على عدد احرف الكلمة 
Next:pword; مؤشر على الكلمة التال ةٌ // 
Str:string; 
} 
1( بما اننا نحتاج لعمل ةٌ بحث عن الكلمة المدخلة)للتاكد منها ( ف كامل مفردات اللغة , 
فللسهولة نضع المفردات ببن هٌ بح ثٌ تفرز تلك المفردات باوائل الحروف , وكل حرف أجنب مفروز ف هٌ مفرداته )تصاعد اٌ( لسهولة البحث )حتى لا نبحث عن كلمات اللغة حتى ال 
NULL , و نتوقف عندما نجد الكلمة الاكبر من الكلمة المرادة وذلك عند عمل ةٌ البحث 
والتاكد ( . 
- و لان كلمات اللغة الانكل زٌ ةٌ مثلا.. قابلة لاضافة المرادفات والتعد لٌات المستمرة .. 
فتكون البن ةٌ الد نٌام كٌ ةٌ ه الملاءمة اكثر.. Linked List 
2( اما من اجل العقدة Word ف اخترنا ان تكون السلسلة مؤلفة من تسج لٌة تحوي 
)المؤشر( على الكلمة التال ةٌ بالقاموس و)الكلمة( و ) عدد احرف الكلمة ( 
وعدد احرف الكلمة فٌ دٌ من اجل طباعة البدائل ...
2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 
جداول التحليل الأولي لخوارزمية التاكد والتصحيح بالقاموس : 
اسن التابع 
Search الوهوة رٌى الكلمة المدخلة و رٌد اما موجودة او غ رٌ موجودة 
)تابع مساعد للاجرائ ةٌ Bring _same ) 
يستخذم في اجرائ ةٌ طباعة البدائل 
Bring_same التوصيف هذا التابع بٌحث عن الكلمة المدخلة بالسلسلة ذات الحرف الت تبدا به الكلمة 
اسن الاجرائية 
Bring_same الوهوة طباعة الكلمة اذا كانت موجودة 
طباعة البدائل اذا كانت غ رٌ موجودة ثم اعادة الادخال .. 
يستخذم في التابع الرئ سٌ main التوصيف جٌلب الكلمات ذات نفس طول الكلمة والمختلفة ببعض الاحرف ) مسح لاخر السلسلة(.... 
جٌلب الكلمات الت تطابق الكلمة وتز دٌ عنها بالاحرف المختلفة)حرف او حرف نٌ ل سٌ اكثر( 
)مسح اخر لاخر السلسلة(..
2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 
جداول التحليل المفصلة لخوارزمية البحث والتاكد من وجود الكلمة بالقاموس : 
اسن التابع 
Search الوهوة رٌى الكلمة المدخلة و رٌد اما موجودة او غ رٌ موجودة 
)تابع مساعد للاجرائ ةٌ Bring _same ) 
يستخذم في اجرائ ةٌ طباعة البدائل 
Bring_same التوصيف 
)الخوارزهية 
بالعربي( 
هذا التابع بٌحث عن الكلمة المدخلة بالسلسلة ذات الحرف الت تبدا به الكلمة c من اول السلسة dic[c] حتى ال NULL ان خرج ووجد الكلمة --- < اعادة موجود 
والا ---- < اعادة غ رٌ موجود 
شرط الاستذعاء وجود القاموس 
مرتب تصاعد اٌ)ادخلت من الانترنت جم عٌ الكلمات للاحرف الخ a,b,s,.. 
عندما قمت بالتنف ذٌ(. 
واستدعاء الكلمة وان تبدا الكلمة المدخلة بحرف ابجدي انكل زٌي لا رمز.. 
رأس التابع Search(Dic :Dictionary, Inputedword :string, var b:Boolean) 
توصيف 
الوتحولات 
Dic من نوع القاموس 
Inputedword الكلمة المدخلة 
تع دٌ الاجرائ ةٌ متحول منطق b ان وجدت الكلمة ام لم توجد.. 
الخوارزهية 
Search(Dic :Dictionary, Inputedword :string):Boolean begin L:pword; C: char; C:=inputedword[1]; L:=Dic[c]; (الدخول لسلسلة حرف البدا ةٌ ) While(L<>NuLL)and(L^.str<Inputedword) do )التفحص عن الكلمة( 
Search:=p^.next; If(L<>Null)and(L^.str= Inputedword) then Search:=true; else Search:=false; End;
2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 
اسن الاجرائية 
Bring_same الوهوة طباعة الكلمة اذا كانت موجودة 
طباعة البدائل ) 6 او اكثر قل لٌا( اذا كانت غ رٌ موجودة ثم اعادة الادخال .. 
يستخذم في التابع الرئ سٌ main التوصيف 
)الخوارزهية 
بالعربي( 
-1 التابع وجد الكلمة طباعتها 
-2 لم جٌدها: 
** مسح اول للسلسلة )الكلمات ذات نفس الطول(: //قمت بمسح نٌ للاولو ةٌ فقط..والا بمسح وح دٌ 
* اذا وجد نفس طول الكلمة : 
اختبر تساوي)تطابق( الحروف: 
اذا كان الاختلاف)بحرف واحد( او)حرف نٌ( )اوثلاثة(: 
اطبع الكلمة الت وجدناها 
**مسح ثان للسلسلة )الكلمات الاكبر والت تز دٌ ببعض الاحرف(: 
* طباعة الكلمات)ار دٌ ل سٌ اكثر من 6 كلمات اقتراحات ( – - 
الاكبر ف السلسلة من الكلمةالمدخلة والت لاتز دٌ بعدد احرفها عن الكلمة الاصل ةٌ 
باكثر من )حرف او حرف نٌ او ثلاث ل سٌ اكثر( .. 
**اعد ادخال الكلمة. 
ملاحظة: اجر تٌ مسح نٌ للسلسسة.. لاجراء الاولو ةٌ.. ح ثٌ ان الكلمة ذات نفس عدد الاحرف 
)رغم انها اخ رٌة ابجد اٌ( ابدى من الكلمات الاطول. 
طرق اخرى 
لو لم حٌدد بنص المسألة ان العمل ةٌ ))اتمام(( للكمات المدخلة وتصح حٌها.. 
** اذا كانت الكلمة المدخلة مز دٌة بحرف او حرف نٌ زٌ دٌ الشرط التال : 
احذف حرف واسنده لمتحول string .. 
اذا وجدت الكلمة --- - < اطبعها كخ اٌر اول ثم اتمم الاقتراحات.. 
والا 
احذف حرف اخر واجري نفس العمل ةٌ .. 
مثلا: ادخال booki ----- < قٌترح book 
او: ادخال bookia ----- < قٌترح book شرط الاستذعاء 
وجود القاموس مرتب تصاعد اٌ)ادخلت من الانترنت جم عٌ الكلمات للاحرف الخ a,b,s,.. عندما قمت بالتنف ذٌ(. 
واستدعاء الكلمة وان تبدا الكلمة المدخلة بحرف ابجدي انكل زٌي لا رمز.. 
رأس التابع 
Bring_same(Dic :Dictionary, Inputedword :string)
2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 
توصيف 
الوتحولات 
Dic من نوع القاموس 
Inputedword الكلمة المدخلة 
اجرائ ةٌ print(string) طباعة المحارف 
اجرائ ةٌ length(string) تقوم بحساب طول السلسلة المحرف ةٌ 
الخوارزهية 
Bring_same(Dic :Dictionary, Inputedword :string) 
F:Boolean; 
L:pword; 
Ch: char; 
K:int ; (تعد عدد الاحرف المختلفة ) 
W:string; (اضع بها الكلمات الت امر عل هٌا بالسلسة ) 
f:=search(Dic,InputedWord); (التاكد من الوجود ) 
if( f) then )موجودة( 
print(‘Correct word!!’,InputedWord); 
else 
begin 
print(‘~~ Here you are some suggestion’); 
ch:= InputedWord[1]; 
L:=Dic[ch]; ( امساك راس سلسلة حرف الكلمة الاول ) 
While(L<>Null) do 
Begin 
W:=L^.str; 
K:=0; 
If length(w(=length(InputedWord) then تساوي 
الطول 
begin 
For(i:=1 to (length(InputedWord)) do 
اختبارتطابق الحروف 
If(w[i] <> InputedWord[i]) then 
K:=k+1; 
If(k=1) or(k=2)or(k=3) then 
Print(w) 
end;
2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 
l:=l^.next; 
End;( المرور الاول ) 
L:=Dic[ch];( امساك راس سلسلة حرف الكلمة الاول ) 
Space:=0; 
While(L<>Null) do 
Begin 
W:=L^.str; 
If ( W> Inputedword)and(length(w)- 
length(Inputedword) <=3 ) and(space<4) 
then 
begin 
space:=space+1 الكلمات الت تز دٌ ب ثلاث 
احرف 
Print(w); 
End; 
L:=l^.next; 
End;( المرور الثان ) 
end;
2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 
نتائج التنفيذ: 
قراءة كلمات القاموس من ال NoteBad
2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 
كلمة موجودة بالقاموس 
اما طباعة البدائل : 
لاحظ ان الكلمات ذات نفس الطول)رغم انها اخ رٌة ابجد اٌ( تطبع بالاول !
2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 
انتهى التقرير
Ad

More Related Content

What's hot (6)

ARRAYS
ARRAYSARRAYS
ARRAYS
jdbc371632
 
الفعل المجرد والمزيد
الفعل المجرد والمزيدالفعل المجرد والمزيد
الفعل المجرد والمزيد
Eman bkry
 
3- Functions
3-  Functions3-  Functions
3- Functions
Ghadeer AlHasan
 
عرض البرمجة بلغة فيجول بيسك 01
عرض البرمجة بلغة فيجول بيسك 01عرض البرمجة بلغة فيجول بيسك 01
عرض البرمجة بلغة فيجول بيسك 01
نوافذ حاسوبية
 
Java Generics
Java GenericsJava Generics
Java Generics
Hamid Ghorbani
 
هاء الكناية .
هاء الكناية .هاء الكناية .
هاء الكناية .
arawdah
 
الفعل المجرد والمزيد
الفعل المجرد والمزيدالفعل المجرد والمزيد
الفعل المجرد والمزيد
Eman bkry
 
عرض البرمجة بلغة فيجول بيسك 01
عرض البرمجة بلغة فيجول بيسك 01عرض البرمجة بلغة فيجول بيسك 01
عرض البرمجة بلغة فيجول بيسك 01
نوافذ حاسوبية
 
هاء الكناية .
هاء الكناية .هاء الكناية .
هاء الكناية .
arawdah
 

Viewers also liked (11)

Encryption - التشفير
Encryption - التشفيرEncryption - التشفير
Encryption - التشفير
abdullah_al-shehri
 
study Domain Transform for Edge-Aware Image and Video Processing
study Domain Transform for Edge-Aware Image and Video Processingstudy Domain Transform for Edge-Aware Image and Video Processing
study Domain Transform for Edge-Aware Image and Video Processing
Chiamin Hsu
 
Watermarking & Encryption
Watermarking & EncryptionWatermarking & Encryption
Watermarking & Encryption
Hossam Halapi
 
Wavelet video processing tecnology
Wavelet video processing tecnologyWavelet video processing tecnology
Wavelet video processing tecnology
Prashant Madnavat
 
مشاركة الفيديو
مشاركة الفيديومشاركة الفيديو
مشاركة الفيديو
ETEC331
 
التشفير
التشفيرالتشفير
التشفير
اصفر احمر
 
4 أنواع خوارزميات التشفير
4  أنواع خوارزميات التشفير4  أنواع خوارزميات التشفير
4 أنواع خوارزميات التشفير
رياض خليفة
 
Image enhancement techniques
Image enhancement techniquesImage enhancement techniques
Image enhancement techniques
sakshij91
 
تقرير مشروع التخرج Graduation Project Report
تقرير مشروع التخرجGraduation Project Reportتقرير مشروع التخرجGraduation Project Report
تقرير مشروع التخرج Graduation Project Report
notme_20n
 
Image enhancement techniques
Image enhancement techniquesImage enhancement techniques
Image enhancement techniques
Saideep
 
Tele conferencing and video conferencing
Tele conferencing and video conferencingTele conferencing and video conferencing
Tele conferencing and video conferencing
Bhuwanesh Rajbhandari
 
study Domain Transform for Edge-Aware Image and Video Processing
study Domain Transform for Edge-Aware Image and Video Processingstudy Domain Transform for Edge-Aware Image and Video Processing
study Domain Transform for Edge-Aware Image and Video Processing
Chiamin Hsu
 
Watermarking & Encryption
Watermarking & EncryptionWatermarking & Encryption
Watermarking & Encryption
Hossam Halapi
 
Wavelet video processing tecnology
Wavelet video processing tecnologyWavelet video processing tecnology
Wavelet video processing tecnology
Prashant Madnavat
 
مشاركة الفيديو
مشاركة الفيديومشاركة الفيديو
مشاركة الفيديو
ETEC331
 
4 أنواع خوارزميات التشفير
4  أنواع خوارزميات التشفير4  أنواع خوارزميات التشفير
4 أنواع خوارزميات التشفير
رياض خليفة
 
Image enhancement techniques
Image enhancement techniquesImage enhancement techniques
Image enhancement techniques
sakshij91
 
تقرير مشروع التخرج Graduation Project Report
تقرير مشروع التخرجGraduation Project Reportتقرير مشروع التخرجGraduation Project Report
تقرير مشروع التخرج Graduation Project Report
notme_20n
 
Image enhancement techniques
Image enhancement techniquesImage enhancement techniques
Image enhancement techniques
Saideep
 
Tele conferencing and video conferencing
Tele conferencing and video conferencingTele conferencing and video conferencing
Tele conferencing and video conferencing
Bhuwanesh Rajbhandari
 
Ad

Similar to Algorithm in discovering and correcting words errors in a dictionary or any word editor . (10)

نصائح للبحث في مجموعة أدوات Rda / ترجمة محمد عبدالحميد معوض
نصائح للبحث في مجموعة أدوات Rda / ترجمة محمد عبدالحميد معوضنصائح للبحث في مجموعة أدوات Rda / ترجمة محمد عبدالحميد معوض
نصائح للبحث في مجموعة أدوات Rda / ترجمة محمد عبدالحميد معوض
Muhammad Muawwad
 
OOP in JAVA.ppt
OOP in JAVA.pptOOP in JAVA.ppt
OOP in JAVA.ppt
iloveiraq
 
6 arrays
6 arrays6 arrays
6 arrays
Bint EL-maghrabi
 
نظرية ذات الحدين.docx
نظرية ذات الحدين.docxنظرية ذات الحدين.docx
نظرية ذات الحدين.docx
عمر أبوستة
 
4.ppt
4.ppt4.ppt
4.ppt
AshrafDabbas1
 
INTRODUCTION to database entity relation diagram
INTRODUCTION to database entity relation diagramINTRODUCTION to database entity relation diagram
INTRODUCTION to database entity relation diagram
amat38
 
4.ppt
4.ppt4.ppt
4.ppt
AshrafDabbas1
 
مصفوفه
مصفوفهمصفوفه
مصفوفه
ميثاق المعموري
 
نصائح للبحث في مجموعة أدوات Rda / ترجمة محمد عبدالحميد معوض
نصائح للبحث في مجموعة أدوات Rda / ترجمة محمد عبدالحميد معوضنصائح للبحث في مجموعة أدوات Rda / ترجمة محمد عبدالحميد معوض
نصائح للبحث في مجموعة أدوات Rda / ترجمة محمد عبدالحميد معوض
Muhammad Muawwad
 
OOP in JAVA.ppt
OOP in JAVA.pptOOP in JAVA.ppt
OOP in JAVA.ppt
iloveiraq
 
نظرية ذات الحدين.docx
نظرية ذات الحدين.docxنظرية ذات الحدين.docx
نظرية ذات الحدين.docx
عمر أبوستة
 
INTRODUCTION to database entity relation diagram
INTRODUCTION to database entity relation diagramINTRODUCTION to database entity relation diagram
INTRODUCTION to database entity relation diagram
amat38
 
Ad

More from kinan keshkeh (20)

10 Little Tricks to Get Your Class’s Attention (and Hold It)
10 Little Tricks to Get Your  Class’s Attention (and Hold It)10 Little Tricks to Get Your  Class’s Attention (and Hold It)
10 Little Tricks to Get Your Class’s Attention (and Hold It)
kinan keshkeh
 
Simpson and lagranje dalambair math methods
Simpson and lagranje dalambair math methods Simpson and lagranje dalambair math methods
Simpson and lagranje dalambair math methods
kinan keshkeh
 
Shapes and calculate (area and contour) / C++ oop concept
Shapes and calculate (area and contour) / C++ oop conceptShapes and calculate (area and contour) / C++ oop concept
Shapes and calculate (area and contour) / C++ oop concept
kinan keshkeh
 
Shapes and calculate (area and contour) / C++ oop concept
Shapes and calculate (area and contour) / C++ oop conceptShapes and calculate (area and contour) / C++ oop concept
Shapes and calculate (area and contour) / C++ oop concept
kinan keshkeh
 
GeneticAlgorithms_AND_CuttingWoodAlgorithm
GeneticAlgorithms_AND_CuttingWoodAlgorithm  GeneticAlgorithms_AND_CuttingWoodAlgorithm
GeneticAlgorithms_AND_CuttingWoodAlgorithm
kinan keshkeh
 
2Bytesprog2 course_2014_c9_graph
2Bytesprog2 course_2014_c9_graph2Bytesprog2 course_2014_c9_graph
2Bytesprog2 course_2014_c9_graph
kinan keshkeh
 
2Bytesprog2 course_2014_c8_units
2Bytesprog2 course_2014_c8_units2Bytesprog2 course_2014_c8_units
2Bytesprog2 course_2014_c8_units
kinan keshkeh
 
2Bytesprog2 course_2014_c7_double_lists
2Bytesprog2 course_2014_c7_double_lists2Bytesprog2 course_2014_c7_double_lists
2Bytesprog2 course_2014_c7_double_lists
kinan keshkeh
 
2Bytesprog2 course_2014_c6_single linked list
2Bytesprog2 course_2014_c6_single linked list2Bytesprog2 course_2014_c6_single linked list
2Bytesprog2 course_2014_c6_single linked list
kinan keshkeh
 
2Bytesprog2 course_2014_c5_pointers
2Bytesprog2 course_2014_c5_pointers2Bytesprog2 course_2014_c5_pointers
2Bytesprog2 course_2014_c5_pointers
kinan keshkeh
 
2Bytesprog2 course_2014_c4_binaryfiles
2Bytesprog2 course_2014_c4_binaryfiles2Bytesprog2 course_2014_c4_binaryfiles
2Bytesprog2 course_2014_c4_binaryfiles
kinan keshkeh
 
2Bytesprog2 course_2014_c3_txtfiles
2Bytesprog2 course_2014_c3_txtfiles2Bytesprog2 course_2014_c3_txtfiles
2Bytesprog2 course_2014_c3_txtfiles
kinan keshkeh
 
2Bytesprog2 course_2014_c2_records
2Bytesprog2 course_2014_c2_records2Bytesprog2 course_2014_c2_records
2Bytesprog2 course_2014_c2_records
kinan keshkeh
 
2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets
kinan keshkeh
 
2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets
kinan keshkeh
 
2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets
kinan keshkeh
 
2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets
kinan keshkeh
 
2 BytesC++ course_2014_c13_ templates
2 BytesC++ course_2014_c13_ templates2 BytesC++ course_2014_c13_ templates
2 BytesC++ course_2014_c13_ templates
kinan keshkeh
 
2 BytesC++ course_2014_c12_ polymorphism
2 BytesC++ course_2014_c12_ polymorphism2 BytesC++ course_2014_c12_ polymorphism
2 BytesC++ course_2014_c12_ polymorphism
kinan keshkeh
 
2 BytesC++ course_2014_c11_ inheritance
2 BytesC++ course_2014_c11_ inheritance2 BytesC++ course_2014_c11_ inheritance
2 BytesC++ course_2014_c11_ inheritance
kinan keshkeh
 
10 Little Tricks to Get Your Class’s Attention (and Hold It)
10 Little Tricks to Get Your  Class’s Attention (and Hold It)10 Little Tricks to Get Your  Class’s Attention (and Hold It)
10 Little Tricks to Get Your Class’s Attention (and Hold It)
kinan keshkeh
 
Simpson and lagranje dalambair math methods
Simpson and lagranje dalambair math methods Simpson and lagranje dalambair math methods
Simpson and lagranje dalambair math methods
kinan keshkeh
 
Shapes and calculate (area and contour) / C++ oop concept
Shapes and calculate (area and contour) / C++ oop conceptShapes and calculate (area and contour) / C++ oop concept
Shapes and calculate (area and contour) / C++ oop concept
kinan keshkeh
 
Shapes and calculate (area and contour) / C++ oop concept
Shapes and calculate (area and contour) / C++ oop conceptShapes and calculate (area and contour) / C++ oop concept
Shapes and calculate (area and contour) / C++ oop concept
kinan keshkeh
 
GeneticAlgorithms_AND_CuttingWoodAlgorithm
GeneticAlgorithms_AND_CuttingWoodAlgorithm  GeneticAlgorithms_AND_CuttingWoodAlgorithm
GeneticAlgorithms_AND_CuttingWoodAlgorithm
kinan keshkeh
 
2Bytesprog2 course_2014_c9_graph
2Bytesprog2 course_2014_c9_graph2Bytesprog2 course_2014_c9_graph
2Bytesprog2 course_2014_c9_graph
kinan keshkeh
 
2Bytesprog2 course_2014_c8_units
2Bytesprog2 course_2014_c8_units2Bytesprog2 course_2014_c8_units
2Bytesprog2 course_2014_c8_units
kinan keshkeh
 
2Bytesprog2 course_2014_c7_double_lists
2Bytesprog2 course_2014_c7_double_lists2Bytesprog2 course_2014_c7_double_lists
2Bytesprog2 course_2014_c7_double_lists
kinan keshkeh
 
2Bytesprog2 course_2014_c6_single linked list
2Bytesprog2 course_2014_c6_single linked list2Bytesprog2 course_2014_c6_single linked list
2Bytesprog2 course_2014_c6_single linked list
kinan keshkeh
 
2Bytesprog2 course_2014_c5_pointers
2Bytesprog2 course_2014_c5_pointers2Bytesprog2 course_2014_c5_pointers
2Bytesprog2 course_2014_c5_pointers
kinan keshkeh
 
2Bytesprog2 course_2014_c4_binaryfiles
2Bytesprog2 course_2014_c4_binaryfiles2Bytesprog2 course_2014_c4_binaryfiles
2Bytesprog2 course_2014_c4_binaryfiles
kinan keshkeh
 
2Bytesprog2 course_2014_c3_txtfiles
2Bytesprog2 course_2014_c3_txtfiles2Bytesprog2 course_2014_c3_txtfiles
2Bytesprog2 course_2014_c3_txtfiles
kinan keshkeh
 
2Bytesprog2 course_2014_c2_records
2Bytesprog2 course_2014_c2_records2Bytesprog2 course_2014_c2_records
2Bytesprog2 course_2014_c2_records
kinan keshkeh
 
2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets
kinan keshkeh
 
2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets
kinan keshkeh
 
2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets
kinan keshkeh
 
2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets
kinan keshkeh
 
2 BytesC++ course_2014_c13_ templates
2 BytesC++ course_2014_c13_ templates2 BytesC++ course_2014_c13_ templates
2 BytesC++ course_2014_c13_ templates
kinan keshkeh
 
2 BytesC++ course_2014_c12_ polymorphism
2 BytesC++ course_2014_c12_ polymorphism2 BytesC++ course_2014_c12_ polymorphism
2 BytesC++ course_2014_c12_ polymorphism
kinan keshkeh
 
2 BytesC++ course_2014_c11_ inheritance
2 BytesC++ course_2014_c11_ inheritance2 BytesC++ course_2014_c11_ inheritance
2 BytesC++ course_2014_c11_ inheritance
kinan keshkeh
 

Algorithm in discovering and correcting words errors in a dictionary or any word editor .

  • 1. 2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 * جاهعة دهشق * كلية الهنذسة الوعلوهاتية * السنة الثانية  Algorithms and Data Structure Student: Kinan keshkeh Eng : Eng.Maher Al Sarem
  • 2. 2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 خوارزمية نظام الي لاكتشاف الاخطاء وتصحيحيها في محرر نصوص: بنى المعطيات : )1 مصفوفة مؤشرات على سلاسل من نوع word : Dictionary=array*‘a’..’z’+ of pword )2 مؤشر على العقدة : Pword=*word )3 العقدة word : Word=Record { X:ineger; // عدد دٌل على عدد احرف الكلمة Next:pword; مؤشر على الكلمة التال ةٌ // Str:string; } 1( بما اننا نحتاج لعمل ةٌ بحث عن الكلمة المدخلة)للتاكد منها ( ف كامل مفردات اللغة , فللسهولة نضع المفردات ببن هٌ بح ثٌ تفرز تلك المفردات باوائل الحروف , وكل حرف أجنب مفروز ف هٌ مفرداته )تصاعد اٌ( لسهولة البحث )حتى لا نبحث عن كلمات اللغة حتى ال NULL , و نتوقف عندما نجد الكلمة الاكبر من الكلمة المرادة وذلك عند عمل ةٌ البحث والتاكد ( . - و لان كلمات اللغة الانكل زٌ ةٌ مثلا.. قابلة لاضافة المرادفات والتعد لٌات المستمرة .. فتكون البن ةٌ الد نٌام كٌ ةٌ ه الملاءمة اكثر.. Linked List 2( اما من اجل العقدة Word ف اخترنا ان تكون السلسلة مؤلفة من تسج لٌة تحوي )المؤشر( على الكلمة التال ةٌ بالقاموس و)الكلمة( و ) عدد احرف الكلمة ( وعدد احرف الكلمة فٌ دٌ من اجل طباعة البدائل ...
  • 3. 2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 جداول التحليل الأولي لخوارزمية التاكد والتصحيح بالقاموس : اسن التابع Search الوهوة رٌى الكلمة المدخلة و رٌد اما موجودة او غ رٌ موجودة )تابع مساعد للاجرائ ةٌ Bring _same ) يستخذم في اجرائ ةٌ طباعة البدائل Bring_same التوصيف هذا التابع بٌحث عن الكلمة المدخلة بالسلسلة ذات الحرف الت تبدا به الكلمة اسن الاجرائية Bring_same الوهوة طباعة الكلمة اذا كانت موجودة طباعة البدائل اذا كانت غ رٌ موجودة ثم اعادة الادخال .. يستخذم في التابع الرئ سٌ main التوصيف جٌلب الكلمات ذات نفس طول الكلمة والمختلفة ببعض الاحرف ) مسح لاخر السلسلة(.... جٌلب الكلمات الت تطابق الكلمة وتز دٌ عنها بالاحرف المختلفة)حرف او حرف نٌ ل سٌ اكثر( )مسح اخر لاخر السلسلة(..
  • 4. 2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 جداول التحليل المفصلة لخوارزمية البحث والتاكد من وجود الكلمة بالقاموس : اسن التابع Search الوهوة رٌى الكلمة المدخلة و رٌد اما موجودة او غ رٌ موجودة )تابع مساعد للاجرائ ةٌ Bring _same ) يستخذم في اجرائ ةٌ طباعة البدائل Bring_same التوصيف )الخوارزهية بالعربي( هذا التابع بٌحث عن الكلمة المدخلة بالسلسلة ذات الحرف الت تبدا به الكلمة c من اول السلسة dic[c] حتى ال NULL ان خرج ووجد الكلمة --- < اعادة موجود والا ---- < اعادة غ رٌ موجود شرط الاستذعاء وجود القاموس مرتب تصاعد اٌ)ادخلت من الانترنت جم عٌ الكلمات للاحرف الخ a,b,s,.. عندما قمت بالتنف ذٌ(. واستدعاء الكلمة وان تبدا الكلمة المدخلة بحرف ابجدي انكل زٌي لا رمز.. رأس التابع Search(Dic :Dictionary, Inputedword :string, var b:Boolean) توصيف الوتحولات Dic من نوع القاموس Inputedword الكلمة المدخلة تع دٌ الاجرائ ةٌ متحول منطق b ان وجدت الكلمة ام لم توجد.. الخوارزهية Search(Dic :Dictionary, Inputedword :string):Boolean begin L:pword; C: char; C:=inputedword[1]; L:=Dic[c]; (الدخول لسلسلة حرف البدا ةٌ ) While(L<>NuLL)and(L^.str<Inputedword) do )التفحص عن الكلمة( Search:=p^.next; If(L<>Null)and(L^.str= Inputedword) then Search:=true; else Search:=false; End;
  • 5. 2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 اسن الاجرائية Bring_same الوهوة طباعة الكلمة اذا كانت موجودة طباعة البدائل ) 6 او اكثر قل لٌا( اذا كانت غ رٌ موجودة ثم اعادة الادخال .. يستخذم في التابع الرئ سٌ main التوصيف )الخوارزهية بالعربي( -1 التابع وجد الكلمة طباعتها -2 لم جٌدها: ** مسح اول للسلسلة )الكلمات ذات نفس الطول(: //قمت بمسح نٌ للاولو ةٌ فقط..والا بمسح وح دٌ * اذا وجد نفس طول الكلمة : اختبر تساوي)تطابق( الحروف: اذا كان الاختلاف)بحرف واحد( او)حرف نٌ( )اوثلاثة(: اطبع الكلمة الت وجدناها **مسح ثان للسلسلة )الكلمات الاكبر والت تز دٌ ببعض الاحرف(: * طباعة الكلمات)ار دٌ ل سٌ اكثر من 6 كلمات اقتراحات ( – - الاكبر ف السلسلة من الكلمةالمدخلة والت لاتز دٌ بعدد احرفها عن الكلمة الاصل ةٌ باكثر من )حرف او حرف نٌ او ثلاث ل سٌ اكثر( .. **اعد ادخال الكلمة. ملاحظة: اجر تٌ مسح نٌ للسلسسة.. لاجراء الاولو ةٌ.. ح ثٌ ان الكلمة ذات نفس عدد الاحرف )رغم انها اخ رٌة ابجد اٌ( ابدى من الكلمات الاطول. طرق اخرى لو لم حٌدد بنص المسألة ان العمل ةٌ ))اتمام(( للكمات المدخلة وتصح حٌها.. ** اذا كانت الكلمة المدخلة مز دٌة بحرف او حرف نٌ زٌ دٌ الشرط التال : احذف حرف واسنده لمتحول string .. اذا وجدت الكلمة --- - < اطبعها كخ اٌر اول ثم اتمم الاقتراحات.. والا احذف حرف اخر واجري نفس العمل ةٌ .. مثلا: ادخال booki ----- < قٌترح book او: ادخال bookia ----- < قٌترح book شرط الاستذعاء وجود القاموس مرتب تصاعد اٌ)ادخلت من الانترنت جم عٌ الكلمات للاحرف الخ a,b,s,.. عندما قمت بالتنف ذٌ(. واستدعاء الكلمة وان تبدا الكلمة المدخلة بحرف ابجدي انكل زٌي لا رمز.. رأس التابع Bring_same(Dic :Dictionary, Inputedword :string)
  • 6. 2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 توصيف الوتحولات Dic من نوع القاموس Inputedword الكلمة المدخلة اجرائ ةٌ print(string) طباعة المحارف اجرائ ةٌ length(string) تقوم بحساب طول السلسلة المحرف ةٌ الخوارزهية Bring_same(Dic :Dictionary, Inputedword :string) F:Boolean; L:pword; Ch: char; K:int ; (تعد عدد الاحرف المختلفة ) W:string; (اضع بها الكلمات الت امر عل هٌا بالسلسة ) f:=search(Dic,InputedWord); (التاكد من الوجود ) if( f) then )موجودة( print(‘Correct word!!’,InputedWord); else begin print(‘~~ Here you are some suggestion’); ch:= InputedWord[1]; L:=Dic[ch]; ( امساك راس سلسلة حرف الكلمة الاول ) While(L<>Null) do Begin W:=L^.str; K:=0; If length(w(=length(InputedWord) then تساوي الطول begin For(i:=1 to (length(InputedWord)) do اختبارتطابق الحروف If(w[i] <> InputedWord[i]) then K:=k+1; If(k=1) or(k=2)or(k=3) then Print(w) end;
  • 7. 2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 l:=l^.next; End;( المرور الاول ) L:=Dic[ch];( امساك راس سلسلة حرف الكلمة الاول ) Space:=0; While(L<>Null) do Begin W:=L^.str; If ( W> Inputedword)and(length(w)- length(Inputedword) <=3 ) and(space<4) then begin space:=space+1 الكلمات الت تز دٌ ب ثلاث احرف Print(w); End; L:=l^.next; End;( المرور الثان ) end;
  • 8. 2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 نتائج التنفيذ: قراءة كلمات القاموس من ال NoteBad
  • 9. 2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 كلمة موجودة بالقاموس اما طباعة البدائل : لاحظ ان الكلمات ذات نفس الطول)رغم انها اخ رٌة ابجد اٌ( تطبع بالاول !
  • 10. 2013 تقر رٌ الخوارزم اٌت و بنى المعط اٌت 1 انتهى التقرير