اذهب إلى المحتوى

نيلاي

الأعضاء
  • المساهمات

    23
  • تاريخ الانضمام

  • تاريخ آخر زيارة

أجوبة بواسطة نيلاي

  1. بتاريخ On 27‏/6‏/2020 at 00:58 قال ماجد قطوسة:

    أهلا بك  

    على حسب ما فهمت من حضرتك ،  فإنه مطلوب منك  عمل خوارزمية بطريقة ال recursion أي أن يعيد الإقتران نداء نفسه و ليس بطرقة الـ loop 

    هذا كود للخوارزمية بلغة ال c++ 

    
    // خوارزمية بلغة ال C++ 
    // recursion 
    // للتحول من بايناري الى دسمال 
    #include <bits/stdc++.h> 
    using namespace std; 
      
    // الإقتران الأساسي
    int MybinaryVal(double par) 
    { 	
      //  فحص الرقم المدخل اذا كان  مساوي للصفر 
        if (par == 0)  
        {
           return 0;  
          // اذا كان الرقم أقل من صفر ف هو غير مقبول 
        }else if(par < 0 ){
        	return "number par must be postive" ; 
          // اذا كان الرقم أكبر من صفر يتم تنفيذ الإقتران
        }else{
            return (decimal_number % 2 + 10 *  
                    MybinaryVal(par / 2)); 
        }
    } 
      
    // كود التسشغيل
    int main() 
    { 
        int par = 10; 
        cout << MybinaryVal(par); 
        return 0; 
    } 

    طبقت البرنامج على الc++shell ولكن ظهرت اغلاط ولم يشتغل البرنامج  

    بتاريخ 9 ساعات قال Hamada Sayed:

    حل السؤال بلغه cpp

     

    شكرا اخي العزيز ولكن هل لا مانع لديك ان تكتب البرنامج في الc++ اقدر جهدك وجزاك الله خير 

  2. بتاريخ 19 ساعات قال ماجد قطوسة:

    أهلا بك  

    على حسب ما فهمت من حضرتك ،  فإنه مطلوب منك  عمل خوارزمية بطريقة ال recursion أي أن يعيد الإقتران نداء نفسه و ليس بطرقة الـ loop 

    هذا كود للخوارزمية بلغة ال c++ 

    
    // خوارزمية بلغة ال C++ 
    // recursion 
    // للتحول من بايناري الى دسمال 
    #include <bits/stdc++.h> 
    using namespace std; 
      
    // الإقتران الأساسي
    int MybinaryVal(double par) 
    { 	
      //  فحص الرقم المدخل اذا كان  مساوي للصفر 
        if (par == 0)  
        {
           return 0;  
          // اذا كان الرقم أقل من صفر ف هو غير مقبول 
        }else if(par < 0 ){
        	return "number par must be postive" ; 
          // اذا كان الرقم أكبر من صفر يتم تنفيذ الإقتران
        }else{
            return (decimal_number % 2 + 10 *  
                    MybinaryVal(par / 2)); 
        }
    } 
      
    // كود التسشغيل
    int main() 
    { 
        int par = 10; 
        cout << MybinaryVal(par); 
        return 0; 
    } 

    شكرا اخي الكريم جزاك الله خير 💜💜

  3. بتاريخ 11 ساعات قال محمد ربيع زليول:

    ستجدين الشرح الكامل للخوارزمية في هذه الصفحة: الترتيب بالإدراج.

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

    حسب السؤال المشار من طرفك، ستحتاجين الطريقة التعاودية.

    حل الخوارزمية كالتالي:

    
    #include <iostream> 
    using namespace std; 
    
    void insertionSortRecursiveAscending (int arr[], int n) 
    { 
    	// الحالة الأساس
    	if (n <= 1) 
    		return; 
    
    	// n-1 ترتيب أول العناصر التي تحمل القيمة 
    	insertionSortRecursiveAscending( arr, n-1 ); 
    
    	// إدراج العنصر الأخير في مكانه الصحيح ضمن المصفوفة المرتبة
    	int last = arr[n-1]; 
    	int j = n-2; 
    
        /* تحريك العناصر في المصفوفة
        arr[0..i-1]
        والتي تكون أكبر من المفتاح المعطى
        بمقدار موقع واحد عن موقعها الحالي
        */
    	while (j >= 0 && arr[j] > last) 
    	{ 
    		arr[j+1] = arr[j]; 
    		j--; 
    	} 
    	arr[j+1] = last; 
    } 
    
    void insertionSortRecursiveDescending(int arr[], int n) 
    { 
    	// الحالة الأساس
    	if (n <= 1) 
    		return; 
    
    	// n-1 ترتيب أول العناصر التي تحمل القيمة 
    	insertionSortRecursiveDescending( arr, n-1 ); 
    
    	// إدراج العنصر الأخير في مكانه الصحيح ضمن المصفوفة المرتبة
    	int last = arr[n-1]; 
    	int j = n-2; 
    
        /* تحريك العناصر في المصفوفة
        arr[0..i-1]
        والتي تكون أصغر من المفتاح المعطى
        بمقدار موقع واحد عن موقعها الحالي
        */
    	while (j >= 0 && arr[j] < last) 
    	{ 
    		arr[j+1] = arr[j]; 
    		j--; 
    	} 
    	arr[j+1] = last; 
    } 
    
    // دالة مساعدة لطباعة محتويات المصفوفة
    void printArray(int arr[], int n) 
    { 
    	for (int i=0; i < n; i++) 
    		cout << arr[i] <<" ";
    	cout << endl;
    } 
    
    /* اختبار الدوال السابقة */
    int main() 
    { 
    	int i;
      	int arr[10]; 
      	
      	cout << "enter 10 numbers: " << endl; // نطلب من المستخدم إدخال 10 أرقام
      
      	for (i = 0; i < 10; i++) {
        	cin >> arr[z]; // نقرأ الأرقام من المستخدم
        }
      
    	int n = sizeof(arr)/sizeof(arr[0]); 
    
    	insertionSortRecursiveAscending(arr, n); 
    	printArray(arr, n); // نطبع قيم المصفوفة التصاعدية
    	
    	insertionSortRecursiveDescending(arr, n);
    	printArray(arr, n); // نطبع قيم المصفوصة التنازيلة
    
    	return 0; 
    }

    شكرا جعلها بموازين حسناتك 💕 

    بتاريخ 9 ساعات قال عبود سمير:

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

    البرنامج بلغة سي بلس بلس :

    
    #include <iostream>
    using namespace std;
    
    // دالة لتبديل قيم متغيرين في الذاكرة من نوع عددي
    void swap(int *a, int *b)
    {
        int temp = *a;
        *a = *b;
        *b = temp;
    }
    
    // دالة مساعدة لطباعة عناصر مصفوفة عددية
    void printArray(int arr[], int size)
    {
        for (int i = 0; i < size; i++)
        {
            printf("%d ", arr[i]);
        }
    
        printf("\n");
    }
    
    // دالة الترتيب التصاعدي
    void ascQuickSort(int arr[], int l, int r)
    {
    
        if (l >= r)
        {
            return;
        }
    
        int pivot = arr[r]; // العنصر المحوري
        int cnt = l;
    
        for (int i = l; i <= r; i++)
        {
            if (arr[i] <= pivot)
            {
                swap(&arr[cnt], &arr[i]);
                cnt++;
            }
        }
    
        ascQuickSort(arr, l, cnt-2);
        ascQuickSort(arr, cnt, r);
    }
    
    // دالة الترتيب التنازلي
    void descQuickSort(int arr[], int l, int r)
    {
    
        if (l >= r)
        {
            return;
        }
    
        int pivot = arr[r];
        int cnt = l;
    
        for (int i = l; i <= r; i++)
        {
            if (arr[i] >= pivot)
            {
                swap(&arr[cnt], &arr[i]);
                cnt++;
            }
        }
    
        descQuickSort(arr, l, cnt-2);
        descQuickSort(arr, cnt, r);
    }
    
    int main() {
    
        // تعريف مصفوفة و ملئها مبدئياً بمجموعة من الأعداد يمكنك تغيير طريقة الملء بطلب الأعداد من المستخدم لاحقاً
        int arr[] = {10, 7, 9, 1, 8, 5, 2};
        // حساب عدد القيم التي تحتويها المصفوفة
        int n = sizeof(arr) / sizeof(arr[0]);
        ascQuickSort(arr, 0, n-1); // الترتيب التصاعدي
        printf("Ascending order: \n");
        printArray(arr, n); // طباعة عناصر المصفوفة
        descQuickSort(arr, 0, n-1); // الترتيب التنازلي
        printf("Descending order: \n");
        printArray(arr, n); // طباعة عناصر المصفوفة
    }

    نتيجة البرنامج : 

    cpp_quicksort.thumb.PNG.8569a6aaf4468d232939531ddce8c4bd.PNG

    لتجربة البرنامج اونلاين: إضغط هنا

    بالتوفيق

    شكرا جزاك الله خييير 

  4. we want to write an algorithm that print a series of number for a value given by a user. The series must be displayed in ascending order and in descending order according the user's choice. The algorithm must be written using recursive function.

     

    اتمنى المساعده في الحل او الشرح وشكرا مقدما الله يفتحها بوجه كل شخص حاول يساعدني فيه ويوفقه ويسعده دنيا واخره 😩

  5. هل يعني ان الخطا منطقي ولا يجب ان نضع الصفر لانه سا يتكرر الى مالانهايه ؟

    وشكرا لك على ردك 

    بتاريخ 18 دقائق مضت قال Hamada Sayed:

    استبدال الفاصله بالفاصله المنقوطه

    التصريح عن المتغير x خارج الدوران

    مع العلم ان الفيضان سيحدث للمتغير x اكثر من مره

    
    int x=0;
    for(int I=1; i>0; i++){
      x+=1;
    }

     

    هل يعني ان الخطا منطقي ولا يجب ان نضع الصفر لانه سا يتكرر الى مالانهايه ؟

    وشكرا لك على ردك 

×
×
  • أضف...