Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++]Часы


Автор: CppDevelopeR 22.10.2008, 15:48
В часах села батарейка, и они стали идти вдвое медленнее. Когда на часах было x1 часов y1 минут, правильное время было a1 часов b1 минут. Сколько времени будет на самом деле, когда часы в следующий раз покажут x2 часов y2 минут.
Формат входных данных
Заданы числа x1, y1, a1, b1, x2, y2 в указанном порядке. Все числа целые. Числа x1, a1, x2 — от 0 до 23, числа y1, b1, y2 — от 0 до 59. 
Формат выходных данных
Выведите два числа a2, b2, определяющие сколько будет времени на самом деле, когда на часах будет x2 часов y2 минут.

Желательно под компилятор DevC++ или CodeBlocks

Автор: UniBomb 22.10.2008, 16:02
Цитата(CppDevelopeR @  22.10.2008,  15:48 Найти цитируемый пост)
Желательно под компилятор DevC++ или CodeBlocks

Человек, позиционирующий себя как спец в кодинге (кем ты себя и позиционируеш) никогда такой глупости не скажет.

Автор: CppDevelopeR 22.10.2008, 16:07
UniBomb, извеняюсь. Под компилятор MinGW желательно))

Автор: darkart 25.10.2008, 23:46
Лучше потестить...
Код

#include<iostream>
#include<conio.h>
using namespace std;

const int MINUTES = 24 * 60;//количество минут в сутках

void InputVariable( int& iVar, const char* szVarName, int iMinValue, int iMaxValue )
//функция ввода переменной iVar со строковым именем szVarName, [ iMinValue, iMaxValue ] - диапазон возможных значений
{
    do
    {
        cout << "Please enter " << szVarName << "( " << iMinValue << " to " << iMaxValue << " ):" << endl;
        cin >> iVar;
        if( iVar < iMinValue || iVar > iMaxValue )
            cout << "Invalid data. Please reenter data." << endl;
    }
    while( iVar < iMinValue || iVar > iMaxValue );
}

int main()
{
    int x1, y1, a1, b1, x2, y2;

    //ввод значений
    InputVariable( x1, "x1", 0, 23 );
    InputVariable( y1, "y1", 0, 59 );
    InputVariable( a1, "a1", 0, 23 );
    InputVariable( b1, "b1", 0, 59 );
    InputVariable( x2, "x2", 0, 23 );
    InputVariable( y2, "y2", 0, 59 );

    //вычисление результата
    //прибавляем MINUTES, чтобы число было положительным, тем самым избавляемся от ифов( все в теории:) )
    int iResMinutes = ( MINUTES + 2 * ( ( x2 - x1 ) * 60 + y2 - y1 ) + a1 * 60 + b1 ) % ( MINUTES );

    //вывод результата
    cout << "CurrentTime = " << iResMinutes / 60 << ":" << iResMinutes % 60 << endl;

    //ожидание ввода
    getch();

    return 0;
}

Автор: JamesPab 17.11.2022, 02:05
Модератор: Сообщение скрыто.

Автор: JamesPab 17.11.2022, 04:45
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)