delphi4arab منتديات دلفي للعرب

نسخة كاملة : [تمرين] حساب الثمن حسب الكمية
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
لبساطته استغرقت فيه وقت كارثة :mad:
لمن اراد المحاولة و حاول .. قم بعرض طريقتك Smile

التمرين
المنحنى اعلاه يساعد على فهم التمرين
عند شراء 10 وحدات يكون سعر الوحدة = 3000 دينار .
عند شراء 20 وحدة يكون سعر الوحدة = 2000 دينار .
عند شراء 30 وحدة يكون سعر الوحدة = 1000 دينار .
عند شراء اكثر من 30 وحدة يكون سعر الوحدة= 500 دينار .

لاكن بشرط : مثلا اشتر ى 15 وحدة تكون الفاتورة على هدا الشكل
(10*3000) +(5*2000) .
25 وحدة : (10*3000) + (10*2000) + (5*1000) .
و هكدا ...

السؤال
انشىء Function لحل التمرين . وقم بعرض النتيجة فى Label

محاولة سريعة بحاجة الى Optimization لكنها تعطي النتيجة الصحيحة وهذا الاهم Big Grin


كود :
Var P, S, Q, x, i: Integer; begin Q := StrToInt(Edit1.Text); //ناخذ الكمية S := 0; for i := 1 to 3 Do Begin case i of 1: P := 3000; 2: P := 2000; 3: P := 1000; end; x := Q - 10; if x>0 then begin S := S + (Q - x) * P; end else if (Q<=10) and (Q>0) then S := S + (Q) * P; Q:=Q-10; End; if Q>0 then S := S + (Q) * 500; label2.Caption := IntToStr(S); // نعرض النتيجة end;
هده طريقتى . طريقتك ... ماشاء الله و انا الان اتصارع معها لفهمها .
بارك الله فيك .. فى انتضار الطرق الاخرى للاعضاء Smile
كود :
Function Somme(x:Integer):Integer; begin if x <= 10 then Result:= (x*3000) else if x <= 20 then Result:=(10*3000)+((x-10)*2000) else if x <= 30 then Result:=(10*3000)+(10*2000)+((x-20)*1000) else Result:=(10*3000)+(10*2000)+(10*1000)+((x-30)*500);

كود :
Label1.Caption:=inttostr(Somme(strtoint(edit1.Text)));
السلام عليكم
عجبتنى طريقة عزيز فاحببت ان افهمها و اشرحها .. ان كان هناك خطاء فى فهمى فصححوا لى
وضعت الشرح فى صورة وقمت بعرضها فى المنتدى . و ارفقتها (تحسبا لضياعها) .
[صورة: attachment.php?aid=244]