/******************************************************************************
Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
C#, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
Code, Compile, Run and Debug online from anywhere in world.
*******************************************************************************/
#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();
}