[تمرين] حساب الثمن حسب الكمية
#1
لبساطته استغرقت فيه وقت كارثة :mad:
لمن اراد المحاولة و حاول .. قم بعرض طريقتك Smile

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

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

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

محاولة سريعة بحاجة الى 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;
#3
هده طريقتى . طريقتك ... ماشاء الله و انا الان اتصارع معها لفهمها .
بارك الله فيك .. فى انتضار الطرق الاخرى للاعضاء 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)));
#4
السلام عليكم
عجبتنى طريقة عزيز فاحببت ان افهمها و اشرحها .. ان كان هناك خطاء فى فهمى فصححوا لى
وضعت الشرح فى صورة وقمت بعرضها فى المنتدى . و ارفقتها (تحسبا لضياعها) .
[صورة: attachment.php?aid=244]


الملفات المرفقة
.jpg   s.jpg (الحجم : 89.77 ك ب / التحميلات : 229)
.rar   s.rar (الحجم : 86.74 ك ب / التحميلات : 679)


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم