يونس ويس محمد C نشر 3 يوليو 2020 أرسل تقرير نشر 3 يوليو 2020 ممكن حل هذا السؤال اكتب برنامج لقراءة a[10] بحيث قيم عناصرها تكون عبارة عن اصفار ووحدات جد واطبع أطول عدد للواحدات المتتالية فيها؟ اقتباس
0 ماجد قطوسة نشر 3 يوليو 2020 أرسل تقرير نشر 3 يوليو 2020 أهلاً بك هذا برنامج يطبع لك الأعداد المتتابعة في مصفوفة معينة ، مشروح فيه كل خطوة بخطوتها باللغة الإنجليزية ، يمكنك الإستفادة منه لحل المشكلة الخاصة بك فهي شبيهة الى حد كبير من هذا البرنامج ، فقط قم باستبدال الارقام من 0-9 الى الارقام 0 1 ، و قم بفحص اذا كان العدد الحالي يسواي 1 أو لا ، و اذا كان بالفعل يساوي 1 تقم بإضافته الىت المصفوفة الجديدة ، و هكذا حتى تنتهي من جميع الأرقام المدخلة في البرنامج . // برنامج لطباعة أطول مصفوفة متتالية من الأرقام #include <bits/stdc++.h> using namespace std; // function that returns the length of the // longest increasing subsequence // whose adjacent element differ by 1 void longestSubsequence(int a[], int n) { // stores the index of elements unordered_map<int, int> mp; // stores the length of the longest // subsequence that ends with a[i] int dp[n]; memset(dp, 0, sizeof(dp)); int maximum = INT_MIN; // iterate for all element int index = -1; for (int i = 0; i < n; i++) { // if a[i]-1 is present before i-th index if (mp.find(a[i] - 1) != mp.end()) { // last index of a[i]-1 int lastIndex = mp[a[i] - 1] - 1; // relation dp[i] = 1 + dp[lastIndex]; } else dp[i] = 1; // stores the index as 1-index as we need to // check for occurrence, hence 0-th index // will not be possible to check mp[a[i]] = i + 1; // stores the longest length if (maximum < dp[i]) { maximum = dp[i]; index = i; } } // We know last element of sequence is // a[index]. We also know that length // of subsequence is "maximum". So We // print these many consecutive elements // starting from "a[index] - maximum + 1" // to a[index]. for (int curr = a[index] - maximum + 1; curr <= a[index]; curr++) cout << curr << " "; } // كود التشغيل int main() { int a[] = { 3, 10, 3, 11, 4, 5, 6, 7, 8, 12 }; int n = sizeof(a) / sizeof(a[0]); longestSubsequence(a, n); return 0; } 1 اقتباس
0 سمير عبود نشر 3 يوليو 2020 أرسل تقرير نشر 3 يوليو 2020 مرحباً يونس .. أنا لم أفهم جيداً ماذا تقصد ؟ هل تقصد أن المطلوب هو البحث عن أطول عنصر في المصفوفة مكون من العدد 1 مثلا لو عندنا المصفوفة التالية [11,000,11111,111] يعطيك البرنامج العدد 11111. أم أن المطلوب مثلا يكون عندك مصفوفة بهذا الشكل [0, 1, 1, 0, 0, 1, 1, 1, 0] و يعطيك البرنامج السلسلة 111 و هذا ما فهمته من السؤال إذا كان هذا هو المطلوب يُمكنك كتابة البرنامج بالشكل التالي : #include <iostream> using namespace std; // دالة مساعدة لطباعة عناصر مصفوفة عددية void printArray(int arr[], int size) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } // دالة تستقبل مصفوفة أعداد و ترجع سلسلة نصية مكونة من أطول سلسلة وحدات string max_series(int arr[], int size) { // تعريف المتغيرات المستعملة string l, tmp; int j, i = 0; // القيام بحلقة على عناصر المصفوفة while (i < size) { // إذا كان العنصر يساوي 1 if (arr[i] == 1) { j = i; // القيام بحلقة مادامت العناصر القادمة تساوي 1 while (arr[j] == 1) { // تركيب سلسلة الوحدات tmp += to_string(arr[j]); j++; } // شرط إذا كانت سلسلة الوحدات الحالية أطول من السلسلة المخزنة السابقة if (tmp.length() > l.length()) { l = tmp; // تغيير السلسلة السابقة بالسلسلة الحالية tmp = ""; // إفراغ السلسلة الحالية } i = j; // تغيير فهرس الحلقة } else { i++; } } return l; } int main() { // تعريف مصفوفة int arr[] = {0, 1, 1, 0, 0, 1, 1, 1, 1, 0}; // حساب عدد القيم التي تحتويها المصفوفة int n = sizeof(arr) / sizeof(arr[0]); // طباعة عناصر المصفوفة printArray(arr, n); // إستدعاء الإقتران string l = max_series(arr, n); if (l.length() <= 0) cout << "array does not contains any 1"; else cout << "serie: " << l << " ==> size: " << l.length(); } و عند تشغيل البرنامج سيعطيك النتيجة التالية: يُمكنك تجربة البرنامج من خلال هذا: الرابط بالتوفيق اقتباس
0 يونس ويس محمد C نشر 3 يوليو 2020 الكاتب أرسل تقرير نشر 3 يوليو 2020 بتاريخ 8 ساعات قال ماجد قطوسة: أهلاً بك هذا برنامج يطبع لك الأعداد المتتابعة في مصفوفة معينة ، مشروح فيه كل خطوة بخطوتها باللغة الإنجليزية ، يمكنك الإستفادة منه لحل المشكلة الخاصة بك فهي شبيهة الى حد كبير من هذا البرنامج ، فقط قم باستبدال الارقام من 0-9 الى الارقام 0 1 ، و قم بفحص اذا كان العدد الحالي يسواي 1 أو لا ، و اذا كان بالفعل يساوي 1 تقم بإضافته الىت المصفوفة الجديدة ، و هكذا حتى تنتهي من جميع الأرقام المدخلة في البرنامج . // برنامج لطباعة أطول مصفوفة متتالية من الأرقام #include <bits/stdc++.h> using namespace std; // function that returns the length of the // longest increasing subsequence // whose adjacent element differ by 1 void longestSubsequence(int a[], int n) { // stores the index of elements unordered_map<int, int> mp; // stores the length of the longest // subsequence that ends with a[i] int dp[n]; memset(dp, 0, sizeof(dp)); int maximum = INT_MIN; // iterate for all element int index = -1; for (int i = 0; i < n; i++) { // if a[i]-1 is present before i-th index if (mp.find(a[i] - 1) != mp.end()) { // last index of a[i]-1 int lastIndex = mp[a[i] - 1] - 1; // relation dp[i] = 1 + dp[lastIndex]; } else dp[i] = 1; // stores the index as 1-index as we need to // check for occurrence, hence 0-th index // will not be possible to check mp[a[i]] = i + 1; // stores the longest length if (maximum < dp[i]) { maximum = dp[i]; index = i; } } // We know last element of sequence is // a[index]. We also know that length // of subsequence is "maximum". So We // print these many consecutive elements // starting from "a[index] - maximum + 1" // to a[index]. for (int curr = a[index] - maximum + 1; curr <= a[index]; curr++) cout << curr << " "; } // كود التشغيل int main() { int a[] = { 3, 10, 3, 11, 4, 5, 6, 7, 8, 12 }; int n = sizeof(a) / sizeof(a[0]); longestSubsequence(a, n); return 0; } بتاريخ 8 ساعات قال ماجد قطوسة: أهلاً بك هذا برنامج يطبع لك الأعداد المتتابعة في مصفوفة معينة ، مشروح فيه كل خطوة بخطوتها باللغة الإنجليزية ، يمكنك الإستفادة منه لحل المشكلة الخاصة بك فهي شبيهة الى حد كبير من هذا البرنامج ، فقط قم باستبدال الارقام من 0-9 الى الارقام 0 1 ، و قم بفحص اذا كان العدد الحالي يسواي 1 أو لا ، و اذا كان بالفعل يساوي 1 تقم بإضافته الىت المصفوفة الجديدة ، و هكذا حتى تنتهي من جميع الأرقام المدخلة في البرنامج . // برنامج لطباعة أطول مصفوفة متتالية من الأرقام #include <bits/stdc++.h> using namespace std; // function that returns the length of the // longest increasing subsequence // whose adjacent element differ by 1 void longestSubsequence(int a[], int n) { // stores the index of elements unordered_map<int, int> mp; // stores the length of the longest // subsequence that ends with a[i] int dp[n]; memset(dp, 0, sizeof(dp)); int maximum = INT_MIN; // iterate for all element int index = -1; for (int i = 0; i < n; i++) { // if a[i]-1 is present before i-th index if (mp.find(a[i] - 1) != mp.end()) { // last index of a[i]-1 int lastIndex = mp[a[i] - 1] - 1; // relation dp[i] = 1 + dp[lastIndex]; } else dp[i] = 1; // stores the index as 1-index as we need to // check for occurrence, hence 0-th index // will not be possible to check mp[a[i]] = i + 1; // stores the longest length if (maximum < dp[i]) { maximum = dp[i]; index = i; } } // We know last element of sequence is // a[index]. We also know that length // of subsequence is "maximum". So We // print these many consecutive elements // starting from "a[index] - maximum + 1" // to a[index]. for (int curr = a[index] - maximum + 1; curr <= a[index]; curr++) cout << curr << " "; } // كود التشغيل int main() { int a[] = { 3, 10, 3, 11, 4, 5, 6, 7, 8, 12 }; int n = sizeof(a) / sizeof(a[0]); longestSubsequence(a, n); return 0; } في الحقيقة صديقي.. تجد أن هذه السؤال يحتوي على بعض التعقيد... مع الشرح.. لهذا احتاج البرنامج جاهزا.. @عبود سمير .. ما اقصده هو الاحتمال الأول أن المطلوب هو البحث عن أطول عنصر في المصفوفة مكون من العدد 1 مثلا لو عندنا المصفوفة التالية [11,000,11111,111] يعطيك البرنامج العدد 11111. اقتباس
0 Khawlah Talal نشر 20 ديسمبر 2022 أرسل تقرير نشر 20 ديسمبر 2022 • اكتب برنامجا يقرأ قائمة بالأعداد الصحيحة ويطبع ما إذا كان كل عدد صحيح أوليا أم لا. يجب أن يتوقف البرنامج عندمايقرأ 1 ثم يطبع العدد الإجمالي للأعداد الأولية المقروءة. ممكن احد يفهمني اقتباس
0 Mohamed Saif نشر 28 ديسمبر 2022 أرسل تقرير نشر 28 ديسمبر 2022 اكتب برنامج كامل بلغة سي يقوم بإيجاد : رقم المنزل الذي مجموع أرقام المنازل التي قبله يساوي مجموع أرقام المنازل التي بعده اقتباس
السؤال
يونس ويس محمد C
ممكن حل هذا السؤال
اكتب برنامج لقراءة a[10]
بحيث قيم عناصرها تكون عبارة عن اصفار ووحدات جد واطبع أطول عدد للواحدات المتتالية فيها؟
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.