How to resolve the algorithm Convert seconds to compound duration step by step in the Gambas programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Convert seconds to compound duration step by step in the Gambas programming language
Table of Contents
Problem Statement
Write a function or program which: This is detailed below (e.g., "2 hr, 59 sec").
Demonstrate that it passes the following three test-cases: Test CasesDetailsThe following five units should be used: However, only include quantities with non-zero values in the output (e.g., return "1 d" and not "0 wk, 1 d, 0 hr, 0 min, 0 sec"). Give larger units precedence over smaller ones as much as possible (e.g., return 2 min, 10 sec and not 1 min, 70 sec or 130 sec) Mimic the formatting shown in the test-cases (quantities sorted from largest unit to smallest and separated by comma+space; value and unit of each quantity separated by space).
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Convert seconds to compound duration step by step in the Gambas programming language
Source code in the gambas programming language
Public Sub Main()
Dim iInput As Integer[] = [7259, 86400, 6000000] 'Input details
Dim iChecks As Integer[] = [604800, 86400, 3600, 60] 'Weeks, days, hours, mins in seconds
Dim iTime As New Integer[5] 'To store wk, d, hr, min & sec
Dim iOriginal, iSec, iLoop As Integer 'Various integers
Dim sOrd As String[] = [" wk", " d", " hr", " min", " sec"] 'To add to the output string
Dim sOutput As String 'Output string
For Each iSec In iInput 'For each iInput
iOriginal = iSec 'Store orginal value in seconds
iTime[4] = iSec 'Store seconds in iTime[4]
For iLoop = 0 To 3 'Loop through wk, d, hr, min & sec
If iTime[4] >= iChecks[iLoop] Then 'Check if value is = to wk, d, hr, min
iTime[iLoop] = Int(iTime[4] / iChecks[iLoop]) 'Put the correct value for wk, d, hr, min in iTime
iTime[4] = iTime[4] - (iTime[iLoop] * iChecks[iLoop]) 'Remove the amount of seconds for wk, d, hr, min from iTime[4]
Endif
Next
For iLoop = 0 To 4 'Loop through wk, d, hr, min & secs
If iTime[iLoop] > 0 Then sOutput &= ", " & Str(iTime[iLoop]) & sOrd[iLoop] 'Add comma and ordinal as needed
Next
If Left(sOutput, 2) = ", " Then sOutput = Mid(sOutput, 3) 'Remove unnecessary ", "
sOutput = Format(Str(iOriginal), "#######") & " Seconds = " & sOutput 'Add original seconds to the output string
Print sOutput 'Print sOutput string
sOutput = "" 'Clear the sOutput string
iTime = New Integer[5] 'Reset iTime[]
Next
End
You may also check:How to resolve the algorithm Almost prime step by step in the Seed7 programming language
You may also check:How to resolve the algorithm Trigonometric functions step by step in the Logtalk programming language
You may also check:How to resolve the algorithm Keyboard macros step by step in the C programming language
You may also check:How to resolve the algorithm Symmetric difference step by step in the EasyLang programming language
You may also check:How to resolve the algorithm Average loop length step by step in the Lua programming language