开发者

How to convert 24:00 hours to 12:00 format

I need help with my pseudocode assignment: convert 2400 hours to 12 format

Design an algorithm that will prompt for and receive the item expresses in 2400 format (e.g. 2305 Hours), convert it to 12 hour format (e.g. 11.05pm) and display sentinel time of 9999 is entered.

Prompt for hrs, mins
Get hrs, mins                               
DOWHILE(hrs NOT = 99) AND (mins NOT = 99) // If hrs & mins not = to 99 then it will run if not it will stop
    IF (hrs = 00) THEN  // midnight. 0030. It will + 12 and display 12:30am
        format = am
        time = hrs + 12
        Display hrs, ":" , mins, format
        ELSE
        IF (hrs > 12) THEN  // afternoon. 1630. It will – 12 and display 4:30pm
            format = pm
            hrs = hrs – 12
            Display hrs, ":" , mins, format
        ELSE
            IF (hrs < 12) THEN      // from midnight 0100 to 1159. It will display AM
                format = am
                Display hrs, ":" , mins, format
                IF (hrs = 12) THEN      // if format is 1230. It will display 1230PM
                    format = pm
                    Display hrs, ":" , mins, format
                ENDIF
            ENDIF
        ENDIF
    ENDIF

    IF (hrs < 0) OR (hrs > 23) THEN // hrs less than 0 or more than 23 is error. 
        Display ‘Invalid hour input’
        IF (mins < 0) OR (mins >59) THEN    // mins less than 0 or more than 59 is error. 
            Display ‘Invalid mins input’
        ENDIF
    ENDIF

    Prompt for hrs, mins    // you prompt again , we are still in the loop until we hit 9999
    Get hrs, mins
ENDDO           // which stop here because it’s 9999

Am i doing correctly? Please advice. New stud开发者_运维问答ent here! many thanks!


Well, depending upon how your professor expects your pseudocode to look like, what you have should work fine, I think. A few of the lines are a bit redundant, though. You could combine the out-of-bounds checking of the hours and minutes into one IF statement. You could then set your time variable to "am" by default, which would turn your IF - ELSE IF - ELSE to a single IF - ELSE. Oh, and not that I'm sure it matters much, but rather than using hours = hours + 12 when hours = 0, you could probably just do hours = 12. Again, what you have should work just fine, I think.

EDIT: Ah... again, not sure if this matters, but have a way to possibly terminate the program might be useful, too. Otherwise, you'll be stuck in your loop forever, it seems.

EDIT 2: Here's what I would do...

done = false

DOWHILE !done
    PROMPT hours, minutes
    GET hours, minutes

    IF hours < 0 OR hours > 23 OR minutes < 0 OR minutes > 60
        DISPLAY "Invalid Time"
    ELSE
        format = "AM"

        IF hours > 12
            format = "PM"
            hours = hours - 12
        ELSE IF hours == 0
            hours = 12
        ELSE IF hours == 12
            format = "PM"

        DISPLAY hours ":" minutes format
        ENDIF
    ENDIF
    PROMPT "Are you done?"
    GET done
ENDLOOP
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜