الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اريد ان افهم ما تفعله هذه اللوب

بدأه D3bugger في 17 مارس 2012 · 2 رد · 314 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اريد ان افهم ماذا يحدث في هذه ال for loop

cout<<"Please enter your octal number:";

cin>>oct;

for(i=0; oct>0 ; i++)

{

arr = oct % 10;

oct = oct / 10;

}

cout<<i;

for(int power=0,j=0; j<i ; j++,power++)

{

dec = dec + arr[j] * pow(8.0,power);

}

cout<<" Decimal number= "<<"("<<dec<<")"<<"D"<<endl;

#2

السابق جزء من كود يقوم بتحويل القيمة المدخلة بالنظام الثمانى الى قيمة بالنظام العشرى:

ملاحظة: ﻻتقم بتسمية المتغيرات فى لغة سي++ باسماء محجوز من قبل مثل oct و dec حيث انهما أحدى معاملات اﻻدخال واﻻخراج فى سي++

فى هذة الحالة ان استخدمتهم كمتغيرات بدون اﻻعلان عنهما فلن يقوم المترجم بأظها خطأ وبالتالى فأنك قد تقضى وقت طويل فى التنقيح .... الخ.

وفكرة البرنامج كالتالى:

ادخال قيمة بالنظام الثمانى

اﻻعلان عن المصفوفة arr[100]; لكى تحمل مفردات الرقم الثمانى المدخل

دوارة for تقوم بتحويل الرقم المدخل الى مفردات ونقل كل مفردة الى عنصر بالمصفوفة arr عن طريق

arr = (oct%10);

ثم شرط توقف الدوارة

        oct = (oct / 10);

فى الدوارة الثانية يقوم بالمرور على كل عنصر فى المصفوفة ويحولة الى النظام العشرى بالمعادلة:

arr[j] * pow(8.0, power);

طبعا الكود يحول رقم رقم وبالتالى فهو يجمع كل رقم يحولة فى كل مرة على الرقم السابق كما يلى:

dec = dec + arr[j] * pow(8.0, power);

الكود بعد دمجة فى بنية برنامج حتى تتحق من النتائج:

/* 
 * File:   main.cpp
 * Author: Mohammed Abu Zayed
 * * Created on March 17, 2012, 6:47 PM
 */

#include <cstdlib>
#include <iostream>
#include <math.h>

using namespace std;

/* 
 */
int main()
{
    cout << "Please enter your octal number:";
    int oct = 0, dec = 0;
    cin >> oct;
    int i = 0;
    int arr[100];
    for (i = 0; oct > 0; i++)
    {
        arr = (oct%10);
        oct = (oct / 10);
    }
    cout << i;
    int power = 0;
    int j=0;
    for (power, j = 0; j < i; j++, power++)
    {
        dec = dec + arr[j] * pow(8.0, power);
    }
    cout << " Decimal number= " << "(" << dec << ")" << "D" << endl;
    return 0;
}

عند ادخال القيمة 100 يقوم بتحويلها الى قيمة بالنظام العشرى مثال:

Please enter your octal number:100
3 Decimal number= (64)D
Press [Enter] to close the terminal ...

علما بأن لغة سي++ يكنها تحويل من النظام الثمانى الى النظام العشرى فى سطر واحد كما يلى:

#include <iostream>
using namespace std;
int main()
{
    cout << "Please enter your octal number:";
    int oct_num = 0;
    cin >> oct >>oct_num;
    cout << " Decimal number= " << dec << oct_num << endl;    
    return 0;
}

هذا والله ولى التوفيق.

1

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#3

شكرآ لك اخي محمد علي المساعدة

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…