ترتبط البُنى struct في C# ارتباطًا وثيقًا بالأصناف class. لها حالة وسلوك. ولها مُنشِئات تأخذ وسائط، ويمكن إسناد النسخ منها واختبارها للتساوي وتخزينها في مجموعات.
enum Unit
{
Kg,
Lb
}
struct Weight
{
private double count;
private Unit unit;
public Weight(double count, Unit unit)
{
this.count = count;
this.unit = unit;
}
public override string ToString()
{
return count.ToString() + unit.ToString();
}
}
new Weight(77.5, Unit.Kg).ToString();
// => "77.6Kg"
أوكلت إليك إدارة المطالبات في شركة Isaacs Asteroid Exploration Co. مهمة تحسين أداء نظام المطالبات بالأراضي.
في كل مرة يصبح كويكب جديد جاهزًا للاستغلال، يُدعى المضاربون إلى تسجيل مطالبتهم بقطعة أرض. تُقسَّم أرض الكويكب إلى قطع أرضية رباعية الأضلاع. ويسجّل المضاربون مطالبتهم بالأرض عبر تحديد أبعادها.
هدفك هو تطوير نظام عالي الأداء للتعامل مع التهافت على الأرض الذي أدى في الماضي إلى تعطّل الموقع.
وحدة القياس هي 100 متر، لكن يمكن تجاهلها في هذه المهام.
Plot
أكمل تنفيذ بنية Plot التي تتكوّن من 4 بنى Coord (تستقبلها في المُنشئ الخاص بها).
نفّذ الطريقة ClaimsHandler.StakeClaim() للسماح بتسجيل المطالبة.
نفّذ الطريقة ClaimsHandler.IsClaimStaked() لتحديد ما إذا كانت المطالبة قد سُجّلت.
var ch = new ClaimsHandler();
ch.StakeClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
ch.IsClaimStaked(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
// => true
نفّذ الطريقة ClaimsHandler.IsLastClaim() لمقارنة المطالبة الحالية بالمطالبة السابقة.
var ch = new ClaimsHandler();
ch.StakeClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
ch.IsLastClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
// => true
نفّذ الطريقة ClaimsHandler.GetClaimWithLongestSide() لفحص كل المطالبات المسجّلة وإرجاع قطعة الأرض ذات الضلع الأطول. من المضمون أن تكون بيانات الإحداثيات في أي قطعة أرض على هيئة مستطيل متّصل.
var ch = new ClaimsHandler();
ch.StakeClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
ch.StakeClaim(new Plot(new Coord(10,1), new Coord(20,1), new Coord(10,2), new Coord(20,2)));
ch.GetClaimWithLongestSide();
// => new Plot(new Coord(1,1), new Coord(20,1), new Coord(1,2), new Coord(2,2))
سجّل في Exercism لتتعلّم وتتقن C# عبر 62 مفهومًا178 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.