Ehsan__11

Ehsan__11 @ehsan_11_1

عضوة جديدة

مساعدة في c

الحاسب والجوال

السلام عليكم .... :27: اهلا لو سمحتوا ابغى تساعدوني في كتابة بعض البرامج
كيف اكتب برنامج فيc يحول من عشري الى ثنائي؟
وشلون اكتب معادلة تحسب رقم اللي هو ناتج جمع الحدين اللي قبله
(fibonacci sequence)
الله يعافيكم ساعدوني في حلها لان عندي واجب وما عرفت احله....
6
616

يلزم عليك تسجيل الدخول أولًا لكتابة تعليق.

تسجيل دخول

netjaeper
netjaeper
ما أعرف لغة C

و بخصوص سؤال التحويل من عشري لثنائي .. أعتقد أنه لازم تستخدمين دالة الباقي و اللي رمزها هو ( % )

فترمزي للعدد العشري مثلا بالرمز ( n )

و إذا كان العدد ( n ) أقل من ( 2 ) فإننا نطبعه كما هو

لكن إذا كان أكبر فلازم تعملي حلقة تكرار .. كل مرة تحسبي ( n%2 )

و تطبعين الناتج .. إلى أن تصبح قيمة ( n ) هي ( 1 )



و هذه هي طريقة التحويل من عدد عشري إلى عدد ثنائي .. للتوضيح

لنفترض أنا أخذنا هذا الرقم العشري ( 36 )

الحين نبغى نحوله إلى عدد ثنائي .. أيش نعمل ؟؟

الجواب كالتالي ::::



نقسم العدد العشري على ( 2 )

و مثل ما هو في المثال .. الناتج نأخذه من الباقي .. من تحت لأعلى

فيكون العدد العشري ( 36 ) يكافئ العدد الثنائي ( 100100 )

و تقدرين تتأكدين من الحل و ذلك بأخذ العدد الثنائي ( 100100 ) و تحولينه من جديد إلى عدد عشري كالتالي :

التحويل :

( 100100 ) = ( 0 × 1 ) + ( 0 × 2 ) + ( 1 × 4 ) + ( 0 × 8 ) + ( 0 × 16 ) + ( 1 × 32 )

= ( 36 )



هذا أول كورس أخذته في هندسة الكومبيوتر .. و كان هذا من وقت طويل قبل حوالي الثلاث سنين .

أتمنى أن أكون أفدتك و لو بالشئ القليل .. تحياتي
Ehsan__11
Ehsan__11
اهلا......جزاك الله خيرا ...اسفة على التاخر في الرد انا سويت مثل اللي قلتي بس النتائج تكون معكوسه يعني 36 بدل ماتكون(100100) تطلع (001001) الله يعافيك اذا كنت تعرفين داله تعكس علميني
تحياتي....:27:
netjaeper
netjaeper
صحيح كلامك .. يكون الناتج معكوس

بس أنا ما أعرف لهذه اللغة .. و إلا كان حليت السؤال

أو لو أن اللغة المستخدمة الجافا .. كان حليته في دقائق

كل اللي أعرفه أشياء بسيطة ..

على العموم .. هذا حل الدكتور كنت معاه اليوم و طلبت منه أن يحل المسألة

فحله بطريقة طويلة .. و عمل أن يطلب البرنامج في البداية من المستخدم إدخال رقم

و ثم يحول البرنامج الرقم المدخل إلى عدد ثنائي

و هذا هو حله باللون الأحمر

( حددي الكود و ظلليه بالفأرة و انسخيه )



#include<stdio.h>

main()
{
int num,no_bits;
clrscr();
printf("enter a number");
scanf("%d",&num);
no_bits=count_bits(num);
printf("number of bits %d\t",no_bits);
bin_print(num,no_bits);
}
count_bits(int n)
{
int i=0;
for (;n!=0;n=n>>1)
i++;
return(i);
}
bin_print(int x, int n_bits)
{
int j;
printf("no. %d in binary \t",x);
for(j=n_bits-1; j>=0;j--)
printf("%i",(x>>j) & 01);
}





بالنسبة لـ fibonacci sequence

هذا هو الكود

int fib(int n) {
if (n == 0)
return 0;
else if (n == 1)
return 1;
else
return fib(n-1) + fib(n-2);
}



و فيه كود ثاني أفضل .. و هو

int fib2(int n) {
int m = 0;
int k = 1;
int i;

for (i = 0; i < n; i++) {
int tmp = m + k;
m = k;
k = tmp;
}
return m;
}




و للتأكد .. إذا أعطينا البرنامج الرقم واحد .. راح يكون الناتج كالتالي :

1
1
2
3
5
8
13
21
34
55
89
144
233
377

فكل رقم هو عبارة عن مجموع الرقمين اللي قبله

تأكدي من صحة البرنامجين الأخيرين المكتوبة بالأزرق .. لأني أنا كتبتها بعد ما غيرت فيها شوي .


هذا كل اللي عندي .. أختي

أتمنى لك التوفيق ،،
Ehsan__11
Ehsan__11
السلام عليكم ...جزاك الله خيرا
اشكرك على المساعده .......
تحياتي......
netjaeper
netjaeper
العفو أختي ..