المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : [تمرين] حساب الثمن حسب الكمية


hanipino
09-12-2008, 12:00 PM
لبساطته استغرقت فيه وقت كارثة :mad:
لمن اراد المحاولة و حاول .. قم بعرض طريقتك :)
http://www7.0zz0.com/2008/12/09/02/135160927.jpg
التمرين
المنحنى اعلاه يساعد على فهم التمرين
عند شراء 10 وحدات يكون سعر الوحدة = 3000 دينار .
عند شراء 20 وحدة يكون سعر الوحدة = 2000 دينار .
عند شراء 30 وحدة يكون سعر الوحدة = 1000 دينار .
عند شراء اكثر من 30 وحدة يكون سعر الوحدة= 500 دينار .

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

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

B.M.AbdelAziZ
09-12-2008, 01:07 PM
محاولة سريعة بحاجة الى Optimization لكنها تعطي النتيجة الصحيحة وهذا الاهم :D


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;

hanipino
09-12-2008, 03:15 PM
هده طريقتى . طريقتك ... ماشاء الله و انا الان اتصارع معها لفهمها .
بارك الله فيك .. فى انتضار الطرق الاخرى للاعضاء :)

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 )));

hanipino
10-12-2008, 09:51 PM
السلام عليكم
عجبتنى طريقة عزيز فاحببت ان افهمها و اشرحها .. ان كان هناك خطاء فى فهمى فصححوا لى
وضعت الشرح فى صورة وقمت بعرضها فى المنتدى . و ارفقتها (تحسبا لضياعها) .

http://up.zyzoom.org/uploads/images/zyzoom-e6a36e042a.jpg