/* * Copyright (c) 2007, Adnan Zafar * * * All rights reserved. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * * notice, this list of conditions and the following disclaimer in the * * documentation and/or other materials provided with the distribution. * * * Neither the name of Adnan Zafar nor the * * names of its contributors may be used to endorse or promote products * * derived from this software without specific prior written permission. * * * * THIS SOFTWARE IS PROVIDED BY Adnan Zafar ``AS IS'' AND ANY * * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * * DISCLAIMED. IN NO EVENT SHALL Adnan Zafar BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include #include #include int main(int argc, char **argv) { unsigned minutes; unsigned seconds; std::cout << "Minutes: "; std::cin >> minutes; std::cout << "Seconds: "; std::cin >> seconds; std::cout << std::endl; unsigned minElapsed=0, secElapsed=0; unsigned minRemain = minutes, secRemain = seconds; for (;; sleep(1000)) { std::cout.fill('0'); std::cout << minElapsed << ":" << std::setw(2) << secElapsed << std::setw(1) << "\t\t\t\t-" << minRemain << ":" << std::setw(2) << secRemain << std::flush << '\r'; if (++secElapsed == 60) { minElapsed++; secElapsed = 0; } if (secRemain || minRemain) { if (!secRemain) { if (minRemain) minRemain--; secRemain = 59; } else secRemain--; } } std::cout << std::endl; return 0; }