Właśnie dowiedziałem się o wyliczenia i typy w Ada i postanowiłem napisać mały program do praktyki:Jak możesz sprawdzić, czy element należy do jednego lub drugiego podtypu?
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;
Mam problemy z if. Jak mogę sprawdzić, czy dayOfTheWeek jest w podtypie Weekday lub podtyp weekendu?
Po prostu bycie pedantem, ale twój kod przyjmuje prawidłowe dane wejściowe. IRL powinieneś użyć klauzuli reprezentacji w swoim wyliczeniu, aby zagwarantować zakres od 0 do 6 i uzyskać liczbę całkowitą, użyć niezaznaczonej konwersji na typ liczby całkowitej, sprawdzić, czy jest ona ważna, a następnie sprawdzić podtypy weekendu/dnia tygodnia. – NWS
Dlaczego nie należy jawnie wpisywać 'Day_Of_The_Week'? 'pakiet Day_Of_The_Week_Text_IO to nowy Ada.Text_IO.Enumeration_IO (Dzień_Of_The_Week);' a następnie 'Get (Selected_Day); Skip_Line; ' –