09-12-2008, 12:00 PM (آخر تعديل لهذه المشاركة: 25-02-2026, 05:01 PM بواسطة Admin.)
لبساطته استغرقت فيه وقت كارثة :mad:
لمن اراد المحاولة و حاول .. قم بعرض طريقتك
التمرين
المنحنى اعلاه يساعد على فهم التمرين
عند شراء 10 وحدات يكون سعر الوحدة = 3000 دينار .
عند شراء 20 وحدة يكون سعر الوحدة = 2000 دينار .
عند شراء 30 وحدة يكون سعر الوحدة = 1000 دينار .
عند شراء اكثر من 30 وحدة يكون سعر الوحدة= 500 دينار .
لاكن بشرط : مثلا اشتر ى 15 وحدة تكون الفاتورة على هدا الشكل
(10*3000) +(5*2000) .
25 وحدة : (10*3000) + (10*2000) + (5*1000) .
و هكدا ...
السؤال
انشىء Function لحل التمرين . وقم بعرض النتيجة فى Label
محاولة سريعة بحاجة الى Optimization لكنها تعطي النتيجة الصحيحة وهذا الاهم
كود :
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;
هده طريقتى . طريقتك ... ماشاء الله و انا الان اتصارع معها لفهمها .
بارك الله فيك .. فى انتضار الطرق الاخرى للاعضاء
كود :
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);
10-12-2008, 09:51 PM (آخر تعديل لهذه المشاركة: 25-02-2026, 05:05 PM بواسطة Admin.)
السلام عليكم عجبتنى طريقة عزيز فاحببت ان افهمها و اشرحها .. ان كان هناك خطاء فى فهمى فصححوا لى
وضعت الشرح فى صورة وقمت بعرضها فى المنتدى . و ارفقتها (تحسبا لضياعها) .