اكتب برنامج يقوم بتشفير كلمات من ملف حيث يضع بدلا عن الحروف ارقام مطابقة لها
مثلا الحرف أ يقابل الرقم 1 و الحرف ب يقابل الرقم 2 وبالتالي كلمة مثل اب ستظهر 21
المشكلة التي تواجهني هي فتح الملف و المرور علي كلماته حرفا حرفا والباقي يبدو اسهل حيث اقوم بكتابة تعليمة فحص الحرف ووضع الرقم المطابق للحرف
الأمر ابسط مما تتوقع فقط عليك ان توضح اكثر:
مثلا كلمة "دلفي" كيف ستحول
وكيف ستحول الفراغ Space
وكيف ستحول الحروف الخاصة
وماذا عن اللغة ؟ المثال الذي وضعته فوق "اب" باللغة العربية، فهل ستحول اللغة العربية فقط ؟
والسلام عليكم ورحمة الله
اشكرك اخي العزيز علي ردك
كما ذكرت فالفكرة تقوم علي ساس ان كل حرف سوف يقابله رقم وبالتالي اذا كانت الحروف العربية 24 حرفا فانه يقابلها 24 رقما مثلا ا يقبل 1 وب يقابل 2 و ج يقابل 3 و د يقابل 4 و ل يقابل 5 وفاء مثلا تقابل 6 والياء تقابل 10 مثلا يعني كل حرف ابجدي هنالك رقم يمثلة و الفراغات تمثل بفراغات
وبالتالي فان كلمة دلفي مثلا تتحول الي (د=4 ل=5 ف=6 ي=10 اذن دلفي تكون 10654 )
المشكلة كيف امسك الكلمة حرفا حرفا و استبدل حروفها بالارقام المناظرة لها و الفراغات تكون فراغات
اشكرك مجددا
لا يزال الوصف ناقص
فانت تقول يتم استبدال الحروف بارقام من 1 الى 24
فان كان لديك هذا 1221 فكيف تعرف
هل هو 2 22 1
ام هو 21 12
ام هو 1 2 2 1
والسلام عليكم ورحمة الله
السلام عليكم و رحمة الله
الحل في المرفقات
السلام عليكم ورحمةالله وبركاته
اشكرك اخي مهدي علي الملف المرفق والذي سهل كثيرا مسالتي اما بالنسبة لاستفسار الاخ دلتاازيز فان العدد الذي ذكرت 1221 انت تقصد هل هناك فواصل ام لا وهو سؤال فعلا منطقي فهذا الرقم 1221 يمكن ان يقابل كلمة مثل (اببا) بفرض ان ا=1 ب=2
او ممكن ان يكون كلمة مثل ( ابر ) بفرض ان ا=1 ب=2 ر=12
فعلا مسالة الفواصل مهمة وقد حلاها الاخ مهدي بالمثال المرفق حيث وضع الحروف في مصفوف لها 28 عنصر واستبد الحرف بترقيمه في المصفوفة
يا اخي المثل يقول "فهم السؤال نصف الجواب"
بصيغة اخرى سؤال ناقص بالطرح لايمكن الاجابة عليه
الاخ مهدي اجتهد من عنده واضاف فواصل لكن هذا غير وارد في نص السؤال
والسلام عليكم ورحمة الله
==================================================================
آ c2
أ c3
إ c5
ا c7
ب c8
ة c9
ت ca
ث cb
ج cc
ح cd
خ ce
د cf
ذ d0
ر d1
ز d2
س d3
ش d4
ص d5
ض d6
ط d7
ظ d8
ع d9
غ da
ف e1
ق e2
ك e3
ل e4
م e5
ن e6
ه e7
و e8
ى e9
ي ea
مسافة 20
===============================
كيف اقوم بتنفيذ هذه البرمجيه بحيث اننى اضع المعايير فى ملف خارج البرنامج ويقوم البرنامج بتغيير الحروف
من خلال استناده على الملف المرفق الذى وضعنا به الحروف وما يقابلها
السلام عليكم
الفكرة ان نقوم بانشاء جدول يحتوي على الحرف و ما يقابله من كلمة/ رقم نريد تشفيره
نقوم بتعريف record يحتوي على حقلين الحرف/ الكلمة و الحرف الكلمة التي سنستبدلها..
كود :
TCrypt = record
Alpha: string;
Crypt: string;
end;
بعدها نقوم بانشاء مصفوفة غير محددة الابعاد من السجل array of record و بالتالي يكون لدينا جدول التشفير الخاص بنا array تكون غير محدودة الابعاد نحدد ابعادها اثناء زمن التشغيل ...
كود :
private
CryptTable: array of TCrypt;
صورة توضيحية
كود :
http://imgur.com/RYZsm
الآن كل ما علينا القيام به هو ملئ الجدول الخاص بنا من الملف النصي
ملاحظة مهمة الكود للتوضيح و هناك طرق افضل المهم ان تصل الفكرة....
كود :
procedure TForm1.CreateCryptTable;
var
StringList: TStringList;
I: Integer;
begin
StringList := TStringList.Create;
try
StringList.LoadFromFile('c:\Data.txt');
SetLength(CryptTable, StringList.Count);
for I := 0 to StringList.Count -1 do
begin
CryptTable[i].Alpha := Copy(StringList[i], 1, Pos(' ', StringList[i]) - 1);
CryptTable[i].Crypt := Copy(StringList[i], Pos(' ', StringList[i]) + 1, Length(StringList[i]));
end;
finally
StringList.Free;
end;
end;
البحث و الاستبدال و اككر هناك طرق افضل والكود غير مرتب كما ينبغي لكن شغال 100/100
كود :
procedure TForm1.Button1Click(Sender: TObject);
var
StringList: TStringList;
i: Integer;
TmpStr: string;
begin
CreateCryptTable;
StringList := TStringList.Create;
try
StringList.Assign(Memo1.Lines);
for I := 0 to StringList.Count - 1 do
begin
TmpStr := StringList[i];
ReplaceStr(TmpStr);
StringList[i] := TmpStr;
Memo2.Lines.Add(StringList[i]);
end;
finally
StringList.Free;
end;
end;
procedure TForm1.ReplaceStr(var Str: string);
var
i: Integer;
x: Integer;
begin
for I := Length(Str) downto 1 do
begin
for x := 0 to Length(CryptTable) - 1 do
begin
if Str[I] = CryptTable[x].Alpha then
Str := StringReplace(Str, Str[i], CryptTable[x].Crypt, []);
end;
end;
end;
S.FATEH