acabo de aprender acerca de enumeraciones y tipos de Ada y decidió escribir un pequeño programa para la práctica:¿Cómo se puede verificar si un elemento pertenece a un subtipo u otro?
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;
Tengo problemas con la sentencia if. ¿Cómo puedo verificar si dayOfTheWeek está en el subtipo de Weekday o el subtipo de fin de semana?
Simplemente siendo un pedante, pero su código asume una entrada válida. IRL debe usar una cláusula de representación en su enumeración para garantizar el rango de 0 a 6, obtener un número entero, usar una conversión no verificada para su tipo de entero, verificar que sea válida y luego verificar los subtipos de fin de semana/día de la semana. – NWS
¿Por qué no ingresa un 'Day_Of_The_Week' explícitamente? 'paquete Day_Of_The_Week_Text_IO es nuevo Ada.Text_IO.Enumeration_IO (Day_Of_The_Week);' y luego 'Get (Selected_Day); Skip_Line; ' –