محمد عنيبة نشر 23 فبراير 2022 أرسل تقرير نشر 23 فبراير 2022 #include<iostream> using namespace std; int Size = 10; int a[10], top = -1; int pop(); void del_pop(int[], int i); void push(int[], int); void delprime(int a[]); int main() { int i, k; for (i = 0; i < Size; i++) { cin >> k; push(a, k); } delprime(a); for (i = 0; i < Size; i++){cout << pop() << endl;} } void push(int a[], int k) { if (top == Size - 1)cout << "Stack overflow"; else a[++top] = k; } int pop() { return a[top--]; } void del_pop(int a[], int i) { int top2 = -1, m[10]; while (top >= 0) { if (i != a[top]) { m[++top2] = a[top]; } else Size--; top--; } while (top2 >= 0) { a[++top] = m[top2--]; } } void delprime(int a[]) { int i,flag = 0; while (top >= 0) { for (i = 2; i <= a[top] / 2; i++) { if (a[top] % i == 0) { flag = 1; break; } } if (flag == 0) { del_pop(a, a[top]); } top--; } } هذا برنامج يقوم بحذف الاعداد الأولية من مكدس لكن عند بعد استدعاء دالة حذف الأعداد الأولية تتغير كل القيم للصفر في حلقة التكرار التي تستدعي الدالة pop #include<iostream> using namespace std; int Size = 10; int a[10], top = -1; int pop(); void del_pop(int[], int i); void push(int[], int); void delprime(int a[]); int main() { int i, k; for (i = 0; i < Size; i++) { cin >> k; push(a, k); } delprime(a); } void push(int a[], int k) { if (top == Size - 1)cout << "Stack overflow"; else a[++top] = k; } int pop() 1 اقتباس
0 Wael Aljamal نشر 23 فبراير 2022 أرسل تقرير نشر 23 فبراير 2022 سأقترح عليك فكرة أبسط لحذف الأعداد الأولية من مكدس، يمكنك تعريف مكدس مؤقت (يكون فارغ بالحالة الأولية)، سوف نقوم بإفراغ المكدس الأساسي من العناصر الواحد تلو الآخر، و سوف نضيف العنصر الغير أولي من المكدس الأساسي للمكدس المؤقت، ثم بعد انتهاء فلترة العناصر جميعها، نعيد تفريع المكدس المؤقت و نضيف العناصر للمكدس الأساسي وسوف يعاد ترتريب جميع العناصر بنفس الترتيب السابق مع التخلص من الأعداد الأولية. stack; // مكدس فيه عناصر temp; // مكدس فارغ مؤقت while (stack.size() > 0) { int x = stack.pop() if (! prime(x)) { // غير أولي X temp.push(x) } } // إعادة العناصر للمكدس الأساسي while (temp.size() > 0) { int x = temp.pop() stack.push(x) } اقتباس
السؤال
محمد عنيبة
هذا برنامج يقوم بحذف الاعداد الأولية من مكدس لكن عند بعد استدعاء دالة حذف الأعداد الأولية تتغير كل القيم للصفر في حلقة التكرار التي تستدعي الدالة pop
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.