Solution: Fix the Code
This lesson provides a solution to the challenge given in the previous lesson.
We'll cover the following...
Solution #
Here is the program that will produce the desired output on entering 06:09 20:0 as input.
Press + to interact
import std.stdio;import std.string;import std.exception;/* Reads the time as hour and minute after printing a* message. */void readTime(string message,out int hour,out int minute) {write(message, "? (HH:MM) ");readf(" %s:%s", &hour, &minute);enforce((hour >= 0) && (hour <= 23) &&(minute >= 0) && (minute <= 59),"Invalid time!");}/* Returns the time in string format. */string timeToString(int hour, int minute) {assert((hour >= 0) && (hour <= 23));assert((minute >= 0) && (minute <= 59));return format("%02s:%02s", hour, minute);}/* Adds duration to start time and returns the result as the* third pair of parameters. */void addDuration(int startHour, int startMinute,int durationHour, int durationMinute,out int resultHour, out int resultMinute) {resultHour = startHour + durationHour;resultMinute = startMinute + durationMinute;resultHour += resultMinute / 60; resultHour %= 24;resultMinute %= 60;assert((resultHour >= 0) && (resultHour <= 23));assert((resultMinute >= 0) && (resultMinute <= 59));}void main() {int startHour;int startMinute;readTime("Start time", startHour, startMinute);int durationHour;int durationMinute;readTime("Duration", durationHour, durationMinute);int endHour;int endMinute;addDuration(startHour, startMinute,durationHour, durationMinute,endHour, endMinute);writefln("%s hours and %s minutes after %s is %s.",durationHour, durationMinute,timeToString(startHour, startMinute),timeToString(endHour, endMinute));}
Enter the input below
...