البرمجة

تحويل أعداد Fortran إلى تمثيل ثنائي بدقة قابلة للتحكم

في عالم البرمجة بلغة Fortran، يظهر أن هناك تحدياً يتمثل في البحث عن دالة مماثلة لـ dec2bin(d, n) المتاحة في Matlab. هذه الدالة في Matlab تقوم بتحويل عدد عشري إلى تمثيل ثنائي، مع إمكانية تحديد عدد البتات المستخدمة. في Fortran، يمكنك تحقيق هذا الهدف بوسائل مختلفة ولكن يتعين عليك القيام ببعض الجهد الإضافي.

توفر الرابط الذي قمت بمشاركته كودًا في Fortran يقوم بتحويل الأعداد العشرية إلى تمثيل ثنائي، ولكن يبدو أنه يفتقر إلى القدرة على تحديد عدد البتات. يمكنك أن تبدأ بتعديل هذا الكود لتلبية احتياجاتك الخاصة.

قم بإضافة متغير يمثل عدد البتات المطلوب، وقم بضبط الكود بحيث ينتج تمثيلًا ثنائيًا بعدد من البتات يساوي القيمة المحددة. يمكنك استخدام دوال التحكم الشرطي مثل IF و DO في Fortran لتحقيق ذلك.

إليك مثال على كيفية تعديل الكود:

fortran
program DecimalToBinary implicit none integer :: decimalNumber, numberOfBits, i integer, dimension(64) :: binaryRepresentation ! قراءة العدد العشري وعدد البتات write(*,*) 'أدخل العدد العشري:' read(*,*) decimalNumber write(*,*) 'أدخل عدد البتات:' read(*,*) numberOfBits ! تحويل العدد العشري إلى تمثيل ثنائي do i = 1, numberOfBits binaryRepresentation(i) = mod(decimalNumber, 2) decimalNumber = decimalNumber / 2 end do ! طباعة التمثيل الثنائي write(*,*) 'التمثيل الثنائي:' do i = numberOfBits, 1, -1 write(*,*) binaryRepresentation(i) end do end program DecimalToBinary

يمكنك تحديد عدد البتات المرغوبة وستحصل على تمثيل ثنائي بتلك الدقة. قد تحتاج إلى ضبط الكود بمزيد من التفاصيل وفقًا لمتطلباتك الخاصة.

المزيد من المعلومات

بالطبع، يمكننا استكمال النقاش حول كيفية تعديل الكود وتحسينه لتلبية احتياجاتك بشكل أفضل. في Fortran، يمكننا الاعتماد على ميزات اللغة لتحقيق أكبر قدر من المرونة والأداء.

لتحسين الكود، يمكننا إضافة بعض المراقبات والتحسينات مثل التحقق من أن العدد العشري الذي تم إدخاله إيجابي، وتجنب استخدام حلقة DO بدلاً من الحلقة DO WHILE لضمان أن لدينا عدد صحيح من البتات.

إليك نسخة معدلة من الكود:

fortran
program DecimalToBinary implicit none integer :: decimalNumber, numberOfBits, i integer, dimension(64) :: binaryRepresentation ! قراءة العدد العشري وعدد البتات write(*,*) 'أدخل العدد العشري:' read(*,*) decimalNumber ! التحقق من أن العدد العشري إيجابي if (decimalNumber < 0) then write(*,*) 'الرجاء إدخال عدد عشري إيجابي.' stop end if write(*,*) 'أدخل عدد البتات:' read(*,*) numberOfBits ! التحويل الفعلي إلى تمثيل ثنائي i = 0 do while (decimalNumber > 0 .and. i < numberOfBits) i = i + 1 binaryRepresentation(i) = mod(decimalNumber, 2) decimalNumber = decimalNumber / 2 end do ! طباعة التمثيل الثنائي write(*,*) 'التمثيل الثنائي:' do i = i, 1, -1 write(*,*) binaryRepresentation(i) end do end program DecimalToBinary

هذا الكود يتيح للمستخدم إدخال عدد عشري إيجابي فقط، ويحسن الأداء بتجنب إجراء عمليات غير ضرورية في حالة الأعداد الصفرية. كما يتم استخدام الحلقة DO WHILE لضمان تحويل صحيح للعدد إلى تمثيل ثنائي.

زر الذهاب إلى الأعلى