الشبكة العربية لمطوري الألعاب

مبتدئ  HumamChacra مشاركة 1

لدينا ثلاث أرقام a,b,c كلها أصغر من 9 كيف يمكننا برمجيا ان نجعل a=b وb=cوc=a بدون استخدام متحول جديدtemp
😄

محترف مشرف عبد اللطيف حاجي علي مشاركة 2

a = a + b + c;
c = a - b - c;
b = a - b - c;
a = a - b - c;
 
أو:


a = a ^ b ^ c;
c = a ^ b ^ c;
b = a ^ b ^ c;
a = a ^ b ^ c;
 
يمكن تعميم ذلك على n رقم...

ممم، هل كان هذا سؤال أم "حزورة"؟

عبد اللطيف حاجي علي
مبرمج
In|Framez

مبتدئ  HumamChacra مشاركة 3

لا بل حزورة
كيف يمكن تحديد عدد خانات رقم ما
فرضا 1374 مكون من 4 خانات
125مكون من ثلاث خانات

محترف  انس مشاركة 4

السلام عليكم 

حسنا الطريقة التي وجدتها بسيطة نوعا ما  وهي قسمة العدد على 10 حتى نتحصل على ناتج اصغر من واحد .... طبعا في كل عملية قسمة نضيف 1 للعداد و في النهاية عدد الخانات هو عدد العداد



int main()
{
int compt    = 0 ;
int number   = 9621 ;
int resultat = number ;

while ( resultat > 1 ){

resultat = (resultat/10) ;
compt++ ;

}

printf ("%d have %d case\n",number,compt);

    return 0;
}

انا متاكد انه هناك طرق افضل ...هلا افدتمونا بها

شكرا

سلام

محترف مشرف عبد اللطيف حاجي علي مشاركة 5

int Count(int no)
{
    return (int)(log10((double)no) + 1);
}
 
هذا هو الحل الرياضي. هناك حل آخر "خوارزمي" سأتركه لغيري.

عبد اللطيف حاجي علي
مبرمج
In|Framez

محترف مشرف عبد اللطيف حاجي علي مشاركة 6

أعتقد أن طريقتك يا أنس هي الطريقة "الخوارزمية" الوحيدة، لكنها تفشل في حال كان الرقم هو 1000 مثلاً حيث يطبع البرنامج أنه يحوي 3 خانات.
 
لحل ذلك استبدل السطر:

while ( resultat > 1 ){
 
 بـ:

while ( resultat >= 1 ){

عبد اللطيف حاجي علي
مبرمج
In|Framez

محترف  انس مشاركة 7

بالفعل استاذ عبد اللطيف لم انتبه لذلك الخلل شكرا على التصحيح 😄

خبير مشرف مؤيد مارديني مشاركة 8

في 12 آذار 2009 06:55 م، عقد عبد اللطيف حاجي علي حاجبيه بتفكير وقال:

هذا هو الحل الرياضي. هناك حل آخر "خوارزمي" سأتركه لغيري.

أعتقد أن استخدام اللوغاريتم لن ينجح مع الأعداد السالبة، أليس كذلك؟
ربما سيعمل لو عدلنا الجملة لتصبح شيء مثل :

int Count(int no)
{      
        return (int)(Math.Log10((double)Math.Sign(no)*no) + 1);
}

مع أنها لن تعمل مع الصفر، عليك التأكد أن القيمة الممرة للـFunction ليست صفراً.

Moayad Mardini,
MSDN Forums Moderator

مبتدئ  HumamChacra مشاركة 9

وفي 12 آذار 2009 05:17 ص، قال مؤيد مارديني متحمساً:

أعتقد أن استخدام اللوغاريتم لن ينجح مع الأعداد السالبة، أليس كذلك؟

يمكن ان تحل ببساطة باستخدام القيمة المطلقة Absolute

خبير مشرف مؤيد مارديني مشاركة 10

..

Moayad Mardini,
MSDN Forums Moderator