Ali Ahmed55 نشر 26 فبراير أرسل تقرير نشر 26 فبراير السلام عليكم ان كتب خورزميات Anatoly لضرب الاعداد وده الكود بتاعي def anatoly(a , b): a0 = a // 10 a1 = a % 10 b0 = b // 10 b1 = b % 10 c0 = a1 * b1 c1 = a0 * b0 c2 = ((a0 + a1) * (b0 + b1) - (c1 + c0)) if c2 % 2 == 0: x0 = c2 // 10 x1 = c2 % 10 return x1 , c1 + x0 , c0 print(anatoly(32 , 14)) فا كانت عاوز اعارف هل فيه افضل من كده يعني من الكود 2 اقتباس
0 Mahmoud Hassan19 نشر 26 فبراير أرسل تقرير نشر 26 فبراير (معدل) هناك بعض التحسينات الممكنة التعليقات: يفضل إضافة تعليقات لشرح كل جزء من الكود وماذا يقوم به الأسماء المفهومة: - استخدام أسماء متغيرة أكثر وضوحًا قد يساعد في فهم الكود بسهولة معالجة الإدخال: - يمكنك إضافة تحقق من صحة الإدخال مثل التأكد من أن الأرقام مكونة من رقمين تم التعديل في 26 فبراير بواسطة Mahmoud Hassan19 1 اقتباس
0 Mustafa Suleiman نشر 26 فبراير أرسل تقرير نشر 26 فبراير من الأفضل استخدام أسماء أكثر وضوحًا للمتغيرات، مثل استبدال "a0" بـ "tensA" و "a1" بـ "onesA" لتجعل الكود أكثر قابلية للقراءة. وهناك إمكانية لإضافة تحقق لضمان أن الأرقام المدخلة هي أرقام صحيحة، مثل التأكد من أن a و b يتمثلان في أرقام صحيحة، ولتحسين أداء الكود تجنب إعادة حساب القيم التي تم حسابها بالفعل، مثل حساب a0 + a1 و b0 + b1 مرتين. def anatoly(a, b): # تحقق من صحة الإدخال if not isinstance(a, int) or not isinstance(b, int): raise ValueError("الرجاء إدخال أرقام صحيحة") # تحويل الأعداد السالبة إلى إيجابية a = abs(a) b = abs(b) tensA = a // 10 onesA = a % 10 tensB = b // 10 onesB = b % 10 c0 = onesA * onesB c1 = tensA * tensB c2 = ((tensA + onesA) * (tensB + onesB) - (c1 + c0)) if c2 % 2 == 0: x0 = c2 // 10 x1 = c2 % 10 else: x0 = 0 x1 = c2 return x1, c1 + x0, c0 print(anatoly(32, 14)) 1 اقتباس
0 Ali Ahmed55 نشر 26 فبراير الكاتب أرسل تقرير نشر 26 فبراير تمام جدا بس حاجه تاني لوسمحت ممكن افهم الفرق بين الخورزميا ده وبين عمليه الضرب ده c = 32 * 14 وكمان العمليه ده بتشتغل ازي خلف الكوليس يعني انا ليه اكتب كل ده وبسطر واحد اضرب رقمين عادي اقتباس
0 Mustafa Suleiman نشر 26 فبراير أرسل تقرير نشر 26 فبراير بتاريخ 45 دقائق مضت قال Ail Ahmed: تمام جدا بس حاجه تاني لوسمحت ممكن افهم الفرق بين الخورزميا ده وبين عمليه الضرب ده c = 32 * 14 وكمان العمليه ده بتشتغل ازي خلف الكوليس يعني انا ليه اكتب كل ده وبسطر واحد اضرب رقمين عادي لأن كتابة الخوارزمية تساعدك على فهم كيفية عمل عملية الضرب على مستوى أعمق، حيث أنها توضح كيفية تطبيق مفهوم الضرب على مستوى أكثر تفصيلًا، وبالتالي فهم أفضل للعمليات الحسابية. وما يحدث هو: تقسيم الأعداد إلى جزئين: الجزء العلوي (a0) والجزء السفلي (a1) ضرب كل جزء من الأعداد: a0 * b0، a1 * b1، (a0 + a1) * (b0 + b1) حساب النتائج الوسيطة (c0، c1، c2) تحديد العلامة العشرية للنتيجة النهائية (x0) حساب النتيجة النهائية (c) 1 اقتباس
0 Ali Ahmed55 نشر 26 فبراير الكاتب أرسل تقرير نشر 26 فبراير بتاريخ 1 ساعة قال Mustafa Suleiman: c = 32 * 14 انا اقصد حضرتك في عمليه الضرب العادي الهي ده بتشتغل ازي 1 اقتباس
0 Hikmat Jaafer نشر 26 فبراير أرسل تقرير نشر 26 فبراير بتاريخ 4 ساعة قال Ail Ahmed: انا اقصد حضرتك في عمليه الضرب العادي الهي ده بتشتغل ازي مرحباً علي , إذا كان قصدك عن طريقة عملها من ناحية الآلية لتنفيذها بلغات البرمجة , فهذه تتضمن خوارزميات تعتمد الحساب الثنائي ( binary arithmetic ). من هذه الخوارزميات هي Long Multiplication , والتي تعتمد على ضرب الأرقام من اليمين إلى اليسار، على غرار الطريقة التي نجري بها الضرب باليد, وطريقة عمل هذه الخوارزمية تكون كالتالي : تحويل الأرقام إلى تمثيلها الثنائي فمثلاً سيتم تمثيل الأرقام 32 و14 كقيم ثنائية: 100000 و1110. إجراء الضرب الثنائي بدءا من الرقم الموجود في أقصى اليمين، قم بضرب كل رقم من الرقم الثاني (14) مع كل رقم من الرقم الأول (32) وقم بتخزين المنتجات الجزئية. للتوضيح ستكون كالتالي : 100000 <-- 32 x 1110 <-- 14 --------- 100000 (32 * 0) 000000 (32 * 1, shifted one place to the left) +1000000 (32 * 1, shifted two places to the left) --------- 1110000 (448) قم بجمع المنتجات الجزئية للحصول على النتيجة النهائية ،ففي المثال يكون المجموع 1110000، وهو التمثيل الثنائي للقيمة العشرية 448. التحويل مرة أخرى إلى النظام العشري ( للحصول على النتيجة بالنظام العشري ). وأيضاً ربما تختلف الخوارزميات المستخدمة ببعض لغات البرمجة وحسب بنيات الأجهزة , لكن بشكل عام هكذا تكون . عوامل مثل أنواع البيانات واعتبارات الأداء وقدرات الأجهزة. 1 اقتباس
0 Ali Ahmed55 نشر 27 فبراير الكاتب أرسل تقرير نشر 27 فبراير بتاريخ 23 ساعة قال Hikmat Jaafer: مرحباً علي , إذا كان قصدك عن طريقة عملها من ناحية الآلية لتنفيذها بلغات البرمجة , فهذه تتضمن خوارزميات تعتمد الحساب الثنائي ( binary arithmetic ). من هذه الخوارزميات هي Long Multiplication , والتي تعتمد على ضرب الأرقام من اليمين إلى اليسار، على غرار الطريقة التي نجري بها الضرب باليد, وطريقة عمل هذه الخوارزمية تكون كالتالي : تحويل الأرقام إلى تمثيلها الثنائي فمثلاً سيتم تمثيل الأرقام 32 و14 كقيم ثنائية: 100000 و1110. إجراء الضرب الثنائي بدءا من الرقم الموجود في أقصى اليمين، قم بضرب كل رقم من الرقم الثاني (14) مع كل رقم من الرقم الأول (32) وقم بتخزين المنتجات الجزئية. للتوضيح ستكون كالتالي : 100000 <-- 32 x 1110 <-- 14 --------- 100000 (32 * 0) 000000 (32 * 1, shifted one place to the left) +1000000 (32 * 1, shifted two places to the left) --------- 1110000 (448) قم بجمع المنتجات الجزئية للحصول على النتيجة النهائية ،ففي المثال يكون المجموع 1110000، وهو التمثيل الثنائي للقيمة العشرية 448. التحويل مرة أخرى إلى النظام العشري ( للحصول على النتيجة بالنظام العشري ). وأيضاً ربما تختلف الخوارزميات المستخدمة ببعض لغات البرمجة وحسب بنيات الأجهزة , لكن بشكل عام هكذا تكون . عوامل مثل أنواع البيانات واعتبارات الأداء وقدرات الأجهزة. ايو تمام شكراا جدا لحضرتك اقتباس
السؤال
Ali Ahmed55
السلام عليكم
ان كتب خورزميات Anatoly لضرب الاعداد وده الكود بتاعي
فا كانت عاوز اعارف هل فيه افضل من كده يعني من الكود
7 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.