Tôi chỉ biết về Enums và loại trong Ada và quyết định viết một chương trình nhỏ để thực hành:Làm cách nào để kiểm tra xem một phần tử thuộc về một loại phụ hay một phần tử phụ khác?
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
procedure Day is
type Day_Of_The_Week is (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
subtype Weekday is Day_Of_The_Week range Monday..Friday;
subtype Weekend is Day_Of_The_Week range Saturday..Sunday;
function is_Weekday (dayOfTheWeek: in Day_Of_The_Week) return Boolean is
begin
if(--?--)
end is_Weekday;
selected_day_value : Integer;
selected_day : Day_Of_The_Week;
begin
Put_Line("Enter the number co-responding to the desired day of the week:");
Put_Line("0 - Monday");
Put_Line("1 - Tuesday");
Put_Line("2 - Wednesday");
Put_Line("3 - Thursday");
Put_Line("4 - Friday");
Put_Line("5 - Saturday");
Put_Line("6 - Sunday");
Get(selected_day_value);
selected_day = Day_Of_The_Week'pos(selected_day_value);
if(is_Weekday(selected_day))
Put_Line(Day_Of_The_Week'Image(selected_day) & " is a weekday.");
else
Put_Line(Day_Of_The_Week'Image(selected_day) & " is a weekday.");
end Day;
Tôi đang gặp rắc rối với các câu lệnh if. Làm thế nào tôi có thể kiểm tra xem dayOfTheWeek có ở loại phụ trong tuần hoặc loại phụ cuối tuần không?
Chỉ cần là người đi bộ, nhưng mã của bạn giả định đầu vào hợp lệ. IRL bạn nên sử dụng mệnh đề biểu diễn trên enum của bạn để đảm bảo phạm vi 0 - 6, và nhận số nguyên, sử dụng một chuyển đổi không được kiểm tra cho kiểu số nguyên của bạn, kiểm tra nó là hợp lệ, và sau đó kiểm tra các kiểu con cuối tuần/ngày trong tuần. – NWS
Tại sao không nhập 'Day_Of_The_Week' một cách rõ ràng? 'gói Day_Of_The_Week_Text_IO là Ada.Text_IO.Enumeration_IO mới (Day_Of_The_Week);' và sau đó 'Nhận (Selected_Day); Skip_Line; ' –