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

ممكن شرح هذا الكود ؟

بدأه ahmed arkan في 18 أبريل 2011 · 4 رد · 597 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

البرنامج هو لعملية ضرب او قسمة لقيم يتم ادخالها من قبل المستخدم على شكل مصفوفة ... مثلاً 2,4 بحيث ستكون العملية الحسابية مابين القيمة 2 والقيمة 4 ..

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CH6_11
{
    class Program
    {
        delegate double ProcessDelegate(double param1, double param2);

        static double Multiply(double param1, double param2)
        {
            return param1 * param2;
        }
        static double Divide(double param1, double param2)
        {
            return param1 / param2;
        }

        static void Main(string[] args)
        {ProcessDelegate process;
            Console.WriteLine("Enter 2 numbers separated with a comma:");
            string input = Console.ReadLine();
            int commaPos = input.IndexOf(',');

double X1 = Convert.ToDouble(input.Substring(0, commaPos));
double X2 = Convert.ToDouble(input.Substring(commaPos + 1,input.Length - commaPos - 1));

            Console.WriteLine("Enter M to multiply or D to divide:");
            input = Console.ReadLine();

            if (input == "M")
process = new ProcessDelegate(Multiply);
else
process = new ProcessDelegate(Divide);

Console.WriteLine("Result: {0}", process(X1, X2));
Console.ReadKey();
        }
    }
}

سؤالي بالتحديد حول هذا الكود ( لم استطع فهمه ) طبعاً هو تكنيك لاخذ القيمة المدخلة وتحويلها الى نوع سترنك ثم فصلها وتحويلها الى نوع دبل ... لكن لم افهم عملها بصورة دقيقة ...

            string input = Console.ReadLine();
            int commaPos = input.IndexOf(',');

double X1 = Convert.ToDouble(input.Substring(0, commaPos));
double X2 = Convert.ToDouble(input.Substring(commaPos + 1,input.Length - commaPos - 1));

ارجو من حضراتكم التوضيح

شكراً لكم مقدماً .

تم تعديل هذه المشاركة بواسطة ahmed arkan في 18 أبريل 2011 في 20:13

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

#2

هذا الكود يأخذ المدخل على شكل رقمين بينهما فاصلة

            string input = Console.ReadLine();
يستقبل نصاً من المستخدم
مثلاً: 10,25
            int commaPos = input.IndexOf(',');
يجد مكان الفاصلة في النص
في مثالنا سيكون 2

double X1 = Convert.ToDouble(input.Substring(0, commaPos));
يأخذ الجزء من النص الذي يبدأ من صفر (أول حرف) بعدد الحروف الذي يساوي مكان الفاصلة
في مثالنا سيبدأ من البداية ويأخذ حرفين أي 10 ويحوله إلى عدد

double X2 = Convert.ToDouble(input.Substring(commaPos + 1,input.Length - commaPos - 1));
يأخذ الجزء من النص الذي يبدأ من المكان الذي بعد الفاصلة بواحد بعدد الحروف الذي يساوي طول النص ناقص مكان الفاصلة ناقص واحد.
في مثالنا سيبدأ من 3 ويأخذ 5-2-1 أي حرفين والذي ينتج عنه 25 ويحوله إلى عدد

جرب هذا الكود على قيم مختلفة في الطول وتابع العملية جيداً (على الورق مثلاً) وستفهم كيف يعمل.

تم تعديل هذه المشاركة بواسطة System Down في 18 أبريل 2011 في 22:36

1
#3

شكراً جزيلاً سيدي الكريم على التوضيح فقط لم افهم هذا الجزء جيداً ... وخاصتاً الارقام التي وضعتها حضرتك تكون ملخبطة ولا اعرف اين مواقعها الاصلية

double X2 = Convert.ToDouble(input.Substring(commaPos + 1,input.Length - commaPos - 1)); 
يأخذ الجزء من النص الذي يبدأ من المكان الذي بعد الفاصلة بواحد بعدد الحروف الذي يساوي طول النص ناقص مكان الفاصلة ناقص واحد. 
في مثالنا سيبدأ من 3 ويأخذ 5-2-1 أي حرفين والذي ينتج عنه 25 ويحوله إلى عدد

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

#4

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

لنأخذ 10,250 مثالاً

10,250

012346

كما ترى هنا موقع الفاصلة هو 2. طبق المعادلات في الكود على هذا المثال على الورق وسترى كيف تعمل :)

1
#5

الاخ الكريم System Down شكراً على التوضيح .... الله يوفقك اخي

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

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