شباب
هل هناك من يستطيع البديل بن عنصرين بدون استخدام الخانه الثالثة
يعني بدون استخدام الكود التالي
tmp:=A; A:=B; B:=tmp;
منتظر الاجابات
شباب
هل هناك من يستطيع البديل بن عنصرين بدون استخدام الخانه الثالثة
يعني بدون استخدام الكود التالي
tmp:=A; A:=B; B:=tmp;
منتظر الاجابات
أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر
وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري
كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو
أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري
عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري
فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري
بسم الله الرحمن الرحيم
في حالة كان A و B قيم عدديه
A:=A+B B:=A-B A:=A-B
أما في الحالة الأخري من القيم النصيه فلا يمكننا تبديل قيمهم إلا من خلال وسيط (متغير ثالث temp)
والسلام عليكم

سورة العنكبوت
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
سلسلة أنماط التصاميم البرمجية Desgin Patterns
سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
كنترول ASP.NET DataGrid CheckBoxColumn
مشروع الكنترول الأنيق (إهداء للفريق العربي)
الورش الإلكترونية IT Workshops
كنترول ColorPicker لمطوري الويب
يسلموا
أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر
وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري
كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو
أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري
عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري
فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري
السلام عليكم
يمكن أيضاً في حالة القيم النصية بنفس الأسلوب الذي ذكره أخي الكريم الحسين ، ولكن يجب استخدام دوال الاستقطاع وقتها مثل Mid ، Left ، Right ، Substring ، Lenght
طبعاً هذا يتوقف على اللغة المستخدمة
وهذا مثال بسيط بالدوت نيت :
A = A + B B = A.Substring(0, A.Length - B.Length) A = A.Substring(B.Length)
بسم الله الرحمن الرحيم
ما شاء الله عليك أخي محمد النحراوي
بصراحه فكره حلوه
لكن عندي تعقيب بسيط
A.Substring(0, A.Length - B.Length)
هذا الكود سوف يقوم بعمل جزء جديد علي الذاكره ولن يغير في قيمة المتغير A بالطبع كما نعلم
ومن بعد ذلك سوف يتم أخذ مؤشر reference هذا النص ووضعه في المتغير B
لذلك أحب أن أشير إلي أنه تم عمل متغير خفي on the fly علي الطاير يحتوي علي قيمة عملية قص النص السابق
بالطبع ما قدمته فكرة حسنه (وبصراحه عجبتني) لكن ما حدث من خلف الستار يؤكد عدم إمكانية تبديل قيم نصيه بدون وسيط بينهم
والأمر بسيط دعنا نتخيل أننا نملك كوب به مادة خضراء اللون وأخر به مادة بيضاء اللون
كيف يمكننا تبديل محتوي تلك الكوبين بدون إستخدام كوب ثالث , والله أعلم
والسلام عليكم
تم تعديل هذه المشاركة بواسطة الحسين في 30 مايو 2005 في 17:20

سورة العنكبوت
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
سلسلة أنماط التصاميم البرمجية Desgin Patterns
سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
كنترول ASP.NET DataGrid CheckBoxColumn
مشروع الكنترول الأنيق (إهداء للفريق العربي)
الورش الإلكترونية IT Workshops
كنترول ColorPicker لمطوري الويب
السلام عليكم
جزاك الله خيراً أخي الحبيب :) بل فكرتك هي الرائعة
ربما لي وجهة نظر اسمح لي أن أعرضها
اولا أنا أتفق معك أن العملية تتم في الذاكرة قبل إسنادها للمتغير B
ولكني أرى أن نفس الامر يحدث بالنسبة للقيم الرقمية أيضاً
مثلا العملية A-B هل يتم إدخالها مباشرة للمتغير B ؟ ام أنها تتم في الذاكرة أولاً ثم يتم إسناد القيمة الناتجة للمتغير B ؟ وذلك بالإعتماد أيضاً على مؤشر العملية في الذاكرة
هذه وجهة نظر ليس أكثر :)
ماشاء الله تبارك الله
انتما الاثنان رائعان كثر الله من امثالكما
أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر
وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري
كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو
أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري
عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري
فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري
بسم الله الرحمن الرحيم
أضحك الله سنك أخي محمد :D
لكن تفكير فعلا منطقي
إلا أني أعلم من خلال دراستي البسيطه في الأسمبلي أن تلك العمليات الحسابية يتم حسابها وتسجيلها بشكل مؤقت (فقط أثناء إجراء تلك الحسابات) داخل مسجلات البروسيسور registries وبالطبع هي بمثابة وحدات تخزينيه
لكنها لا تخرج من حيز البروسيسور إلي ال RAM مثلا
لذلك لا نعتبرها وحدات تخزينيه تقليديه كما هو الحال عند التعامل مع النصوص مثلا
لذلك لا يتم عمل متغير علي الطاير داخل الRAM عند إجراء العمليات الحسابيه , هذا والله أعلم
كما أرجو في حالة وجود خطأ في معلوماتي الأسمبلاويه :) أرجو تصحيحها من إخونا الأسمبلاوين
والسلام عليكم

سورة العنكبوت
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
سلسلة أنماط التصاميم البرمجية Desgin Patterns
سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
كنترول ASP.NET DataGrid CheckBoxColumn
مشروع الكنترول الأنيق (إهداء للفريق العربي)
الورش الإلكترونية IT Workshops
كنترول ColorPicker لمطوري الويب
:)
السلام عليكم
بيني وبينك أنا في الأسيمبلي ممكن اكون تليميذ وليس تلميذ !!
وهنا لا أستطيع ان أتكلم بكلمة في ما لا أعلم
والله أعلم بالصواب
جزاك الله خيراً :)
أخي romanof جزاك الله خيراً على كلامك الطيب :)
ياسلام لمل كل واحد من الكبار يجامل الثاني
كلكم خير وبركة
جزاك الله الف خير يانحرواي
عموما ماذا لو كان العنصرين من النوع boolean
اليكم الحل
A:=A XOR B; B:=A XOR B; A:=A XOR B;
أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر
وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري
كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو
أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري
عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري
فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري
هذا تقريبا نفس السؤال اللي جاوب عليه الاستاذ Sad Jackal عليه في منتدى الموسوعة على الرابط
اقتباسالسلام عليكمجئت لكم بالحل الأسرع من الأستاذ هاني الأتاسي ضمن سلسلته "شغل مخك"
a = a^b ; Get the different bits
b = b^a ; b will be the original a
a = a^b ; a will be the original b
تم تعديل هذه المشاركة بواسطة cold0zero في 11 يونيو 2005 في 06:01
أول مرة أشوف الموضوع , وصلي بالمؤشرات :D من هنا
عموما يوجد حل لعملية التبديل لأي نوع من أنواع البيانات بشرط تساوي مساحة القيمتين في الذاكرة , يعني مش نبدل عنصر يملك 1 كيلو بايت من الذاكرة مع عنصر يملك 10 حروف
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char *argv[])
{
char x[10] = "Ahmed", y[10] = "Asm4all";
cout << x << " , " << y << endl;
for(int i = sizeof(x)-1; i >= 0; i--) // للمرور على كل الحروف
x ^= y ^= x ^= y; // تبديل حرف مكان حرف
cout << x << " , " << y << endl;
system("PAUSE");
return 0;
}خرج البرنامج
Ahmed , Asm4all Asm4all , Ahmed
وفي حالة استخدام المؤشرات , يمكن التبديل بغض النظر عن المساحة وغيرة
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char *argv[])
{
char *x = "Ahmed", *y = "Asm4all";
cout << x << " , " << y << endl;
x = (char *) ((unsigned long)x ^ (unsigned long)y);
y = (char *) ((unsigned long)x ^ (unsigned long)y);
x = (char *) ((unsigned long)x ^ (unsigned long)y);
cout << x << " , " << y << endl;
system("PAUSE");
return 0;
}نفس الخرج في البرنامج الأول
Python: a, b = b, a Ruby: a, b = b, a
هذا الموضوع مغلق.