Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

Events Calendar

program EventsCalendar;

type
  event = class
    public
      name, day, startTime, endTime: string;
      constructor create (n, d, st, et: string);
  end;

constructor event.create(n, d, st, et: string);
begin
  name := n;
  day := d;
  startTime := st;
  endTime := et;
end;

var
  mode, eventName, eventDay, eventStartTime, eventEndTime, searchDay: string;
  events: array of event;

function checkEvent () : boolean;
var
  eventsPos: integer;
  clashFound: boolean;
begin
  clashFound := false;
  for eventsPos := 0 to length(events) - 1 do
    begin
      if (events[eventsPos].day = eventDay) and (((eventStartTime > events[eventsPos].startTime) and (eventStartTime < events[eventsPos].endTime)) or ((eventEndTime > events[eventsPos].startTime) and (eventEndTime < events[eventsPos].endTime)) or ((events[eventsPos].startTime > eventStartTime) and (events[eventsPos].startTime < eventEndTime))) then
        begin
          writeln('Event clashes with: ', events[eventsPos].name);
          clashFound := true;
        end;
    end;
  if clashFound then
    checkEvent := false
  else
    checkEvent := true;
end;

procedure deleteEvent ();
var
  eventsPos, eventShiftCounter: integer;
  eventFound: boolean;
begin
  eventFound := false;
  for eventsPos := 0 to length(events) - 1 do
    begin
      if (events[eventsPos].name = eventName) and (events[eventsPos].day = eventDay) and (events[eventsPos].startTime = eventStartTime) and (events[eventsPos].endTime = eventEndTime) then
        begin
          if eventsPos <> length(events) - 1 then
            begin
              for eventShiftCounter := eventsPos to length(events) - 2 do
                events[eventShiftCounter] := events[eventShiftCounter + 1];
            end;
          setlength(events, length(events) - 1);
          writeln('Event deleted!');
          eventFound := true;
          break;
        end;
    end;
end;

procedure viewEvents ();
var
  eventsPos: integer;
  eventFound: boolean;
begin
  eventFound := false;
  writeln('Events:');
  for eventsPos := 0 to length(events) - 1 do
    begin
      if events[eventsPos].day = searchDay then
        begin
          writeln(events[eventsPos].name, ' from ', events[eventsPos].startTime, ' to ', events[eventsPos].endTime);
          eventFound := true;
        end;
    end;
  if not eventFound then
    writeln('No events on ', searchDay, '!');
end;

begin
  while true do
    begin
      writeln('Would you like to enter a new event (1), delete an event (2) or view events (3)?');
      readln(mode);
      if mode = '1' then
        begin
          writeln('What is the name of the event?');
          readln(eventName);
          writeln('What day is the event (DD/MM/YYYY)?');
          readln(eventDay);
          writeln('What time does the event start (HHMM)?');
          readln(eventStartTime);
          writeln('What time does the event end (HHMM)?');
          readln(eventEndTime);
          if checkEvent() then
            begin
              setlength(events, length(events) + 1);
              events[length(events) - 1] := event.create(eventName, eventDay, eventStartTime, eventEndTime);
              writeln('Event added!');
            end;
        end
      else if mode = '2' then
        begin
          writeln('What is the name of the event you want to delete?');
          readln(eventName);
          writeln('What day is the event you want to delete (DD/MM/YYYY)?');
          readln(eventDay);
          writeln('What time does the event you want to delete start (HHMM)?');
          readln(eventStartTime);
          writeln('What time does the event you want to delete end (HHMM)?');
          readln(eventEndTime);
          deleteEvent();
        end
      else if mode = '3' then
        begin
          writeln('What day would you like to view (DD/MM/YYYY/)?');
          readln(searchDay);
          viewEvents();
        end;
    end;
end.

Advertisements
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.