السلام عليكم ورحمة الله وبركاته
أنا سعيد بإنضمامي لهذا المنتدى الرائع
بل وفخور كوني أحد أعضاء منتداكم الموقر وهذا أول موضوع لي .
قرأت بعض الدروس هنا وتابعت بعضها .. وشاكر لكم كرمكم في إثراء المنتدى
--------------------------------- شرح الفكرة ---------------------------
أريد مساعدتكم في كتابة برنامج السلام عليكم ورحمة الله وبركاته
أنا سعيد بإنضمامي لهذا المنتدى الرائع
بل وفخور كوني أحد أعضاء منتداكم الموقر وهذا أول موضوع لي .
قرأت بعض الدروس هنا وتابعت بعضها .. وشاكر لكم كرمكم في إثراء المنتدى
--------------------------------- شرح الفكرة ---------------------------
أريد مساعدتكم في كتابة برنامج rucksack problem أو knapsack problem
ولمن يريد أن يقرأ عن فكرتها
![]()
وفكرتها بإختصار هي :
أن تضع بالشنطه المكعبات الأعلى قيمة بشرط أن لا تتجاوز وزن معين
مثال
كما في الصورة أعلاه :
ندخل بالشنطة المكعب الأصفر أولا لأنه الأعلى قيمة
ثم يرفض المكعب الأخضر لأنه لو أضفناه لتجاوزنا الوزن المحدد لنا وهو 15 KG
ثم يدخل الرمادي
ثم الأزرق ثم البرتقالي .. وهكذا
-------------------------------------- محاولاتي -------------------------------------------------
كونت ثلاث مصفوفات
مصفوفة للوزن [ weight ] << من المستخدم
مصفوفة للقيمة [ value ] << من المستخدم
مصفوفة للنسبة بين الوزن والقيمة [ check ] << يحسبها البرنامج
وسويت function يعمل كل المقارنات والحسابات
#include <iostream>using namespace std;float solve(float set,float weight[5],float value[5],float check[5]){for(int i=0;i<5;i++){if(set>0){if(weight<set&&weight[i+1]<set){if(check>check[i+1]){cout<<weight<<" "<<value<<endl;}elsecout<<weight[i+1]<<" "<<value[i+1]<<endl;}}}}int main(){float max,set;cout<<"\nEnter the wieght of the bag: ";cin>>max;max=set;float weight[5],value[5];float check[5]; for(int i=0;i<5;i++){cout<<"\nEnter a weight: ";cin>>weight;cout<<"\nEnter a value: ";cin>>value;}for(int i=0;i<5;i++){check= value/ weight;};solve(set,weight[5],value[5],check[5]);char a;cin>>a; return 0;}السؤال هو : كيف أحذف القيمة من المصفوفة بعد مقارنتها ؟ حتى لا يعيد مقارنته من جديد
إن كان عندي غلط بالفكره
أو لديكم طريقه أفضل فأنا أرحب بذلك
وكلنا أجتمعنا لنتعلم
شاكر لكم مقدما
