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

السؤال

نشر

 

برنامج يحسب مجموع الاعداد لمصفوفة جزئية sub array 
بطريقتين

الطريقة العادية
وبطريقة استخدام المصفوفة المساعدة Auxiliary Prefix sum Array

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

تعبي المصفوفة بارقام عشوائية*

تطب من المستخدم ايش من طريقه
تطلب اول اندكس واخر اندكس

تصلح الداله
اطبع الناتج

تعيد اكيد تطلب الطريقه وهكذا

ركزوا انشاء المصفوفة والمصفوفة المساعده مرة وحده فقط 

الذي يتكرر هو اختيار الطريقه وتنفيذها وعرض الناتج

*حدود الرقم العشوائي من ٠ الى ١٠٠٠ 
استخدم % 1000 عشان تقص الرقم؟

Recommended Posts

  • 0
نشر
بتاريخ 10 دقائق مضت قال Kais Hasan:

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

 

#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 10;

int a[N];

int pf[N];





// Driver code

int main()

{

    int n = 6;

    int a[] = { 3, 6, 2, 8, 9, 2 };



    pf[0] = a[0];

    for (int i = 1; i < n; i++) {

        pf[i] = pf[i - 1] + a[i];

        // cout<<pf[i];

    }

    int q = 4;

    vector<vector<int> > query

        = { { 2, 3 }, { 4, 6 }, { 1, 5 }, { 3, 6 } };

    for (int i = 0; i < q; i++) {

        int l = query[i][0], r = query[i][1];

        if (r > n || l < 1) {

            cout << "Please input in range 1 to " << n

                 << endl;

            continue;

        }

        if (l == 1)

            cout << pf[r - 1] << endl;

        else

            cout << pf[r - 1] - pf[l - 2] << endl;

    }

    return 0;

}

 

  • 0
نشر
بتاريخ 2 دقائق مضت قال Ranya Taher:

#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 10;

int a[N];

int pf[N];





// Driver code

int main()

{

    int n = 6;

    int a[] = { 3, 6, 2, 8, 9, 2 };



    pf[0] = a[0];

    for (int i = 1; i < n; i++) {

        pf[i] = pf[i - 1] + a[i];

        // cout<<pf[i];

    }

    int q = 4;

    vector<vector<int> > query

        = { { 2, 3 }, { 4, 6 }, { 1, 5 }, { 3, 6 } };

    for (int i = 0; i < q; i++) {

        int l = query[i][0], r = query[i][1];

        if (r > n || l < 1) {

            cout << "Please input in range 1 to " << n

                 << endl;

            continue;

        }

        if (l == 1)

            cout << pf[r - 1] << endl;

        else

            cout << pf[r - 1] - pf[l - 2] << endl;

    }

    return 0;

}

 

نسخ الكود من مواقع أخرى ك geeks for geeks أيضاً لن يساعدك، حاولي فهم هذا الكود و كتابة الكود الخاص بالمسألة الأصلية لوحدك.

  • 0
نشر
بتاريخ 18 دقائق مضت قال Kais Hasan:

نسخ الكود من مواقع أخرى ك geeks for geeks أيضاً لن يساعدك، حاولي فهم هذا الكود و كتابة الكود الخاص بالمسألة الأصلية لوحدك.

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

  • 0
نشر (معدل)
بتاريخ 20 ساعات قال Ranya Taher:

#include <iostream>
using namespace std;
int randomNumber(int from, int to)
{
    int random = rand() % (to - from + 1) + from;
    return random;
}
void fillArray(int arr[], int sizeArray)
{
    for (int i = 0; i < sizeArray; i++)
    {
        arr[i] = randomNumber(1, 1000);
    }
}
int sumNormal(int a, int b, int arr[])
{
    int s = 0;
    for (int i = a; i <= b; i++)
    {
        s += arr[i];
    }
    return s;
}
int auxiliary(int a, int b, int arr[], int arr2[], int sizeArray)
{
    arr2[0] = arr[0]; int result = 0;
    for (int i = 1; i < sizeArray; i++)
    {
        arr2[i] = arr2[i - 1] + arr[i];
    }
    return arr2 - arr2[a - 1];;
}
int main()
{
    srand((unsigned)time(NULL));
    int arr[1000], arr2[1000], arraySize;
    short choice, startIndex, endIndex;
    cout << "enter array size: ";
    cin >> arraySize;
    fillArray(arr, arraySize);
    do
    {
            cout << "enter 1 to use normal method, 2 to use Auxiliary prefix: ";
            cin >> choice;
            if (!(choice != 1 && choice != 2))
            {
                cout << "enter start index: ";
                cin >> startIndex;
                cout << "enter end index: ";
                cin >> endIndex;
            
                switch (choice)
                {
                case 1:
                {
                    cout << "normal method: " << sumNormal(startIndex, endIndex, arr) << endl; break;
                }
                case 2:
                {
                    cout << "auxiliary method: " << auxiliary(startIndex, endIndex, arr, arr2, arraySize) << endl;
                }
                }
            }
    } while (!(choice != 1 && choice != 2));


    return 0;
}

شكرا لعدم تعاونكم معنا بس نصيحه غيروا اسم الموقع حقكم لانه لايناسب تصرفاتكم👎🏻

 

تم التعديل في بواسطة Ranya Taher

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...