ادا تهيئة مجموعة على أساس إدخال المستخدم

StackOverflow https://stackoverflow.com/questions/1608584

  •  05-07-2019
  •  | 
  •  

سؤال

وأنا قادم من جاوة / C ++ لادا وأواجه صعوبة في معرفة الاشياء الصغيرة. هل من الممكن أن تعلن مجموعة ويطلب من المستخدم لمين / ماكس القيم ثم تهيئة ذلك؟ أنا لا أحب الحاجة إلى تحديد قيم ثابتة لMIN وMAX ويبدو أن يجب أن يكون هناك طريقة للقيام بذلك.

ويمكنك تحديد نوع غير المقيد، ولكن لا يزال لديك لتهيئة حجم في كتلة تعلن قبل بدء البرنامج. هل أنا بحاجة إلى الجسم الحزمة، ثم إعلان الإجراء، ثم كتلة تعلن داخل الإجراء الذي في الواقع لا العمل، كما يلي؟

PACKAGE BODY Build_Graph IS
    TYPE Graph_Box IS ARRAY(Integer RANGE <>, Integer RANGE <>) of Character;

    PROCEDURE Print_Graph(Min, Max, Height, Width: IN Integer) IS
    BEGIN
        DECLARE
            Graph: Graph_Box(0..Height, 0..Width);
        BEGIN
            Do_Stuf(Graph);
        END;
    END Print_Graph;

END Build_Graph;
هل كانت مفيدة؟

المحلول

وماذا تظهر لك هناك يجب أن تعمل. ومع ذلك، فإن "تعلن" كتلة unnessecary تماما، إلا إذا كنت تريد تصفية الاستثناءات النطاق على تعريف متغير مجموعة أو شيء من هذا. فما استقاموا لكم فاستقيموا تغييره لقراءة:

procedure Print_Graph(Min, Max, Height, Width: in Integer) is
    Graph: Graph_Box(0..Height, 0..Width);
begin
    Do_Stuf(Graph);
end Print_Graph;

و(أنا أيضا لا يروق لها الكلمات المحجوزة في مباراة دولية).


ومزيد من شيء واحد أود أن أذكر: صفائف ادا لا <م> هل لديك أن تكون 0 استنادا مثل بلغات cish. هم <م> يمكن أن يكون، ولكن يمكنك أيضا جعلها تبدأ في 1، أو -200، أو ما تريد.

والسبب في أنني أحمل هذا الأمر هو أنني أنظر إلى الطريقة التي تعرف Graph_Box هو في الواقع الطول + 1 العناصر عالية والعرض + 1 العناصر على نطاق واسع. وربما كنت لا تريد ذلك، والتي من شأنها أن تخلط بين شخص ما في وقت لاحق (ربما أنت).

وبلدي تعبير نموذجي هو أن تبدأ مؤشرات مجموعة بي في 1، ما لم يكن لدي سبب وجيه لعدم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top