Консультация онлайн # 161095

Раздел: С / С++
Автор вопроса: Ковальчук Константин Константинович
Дата: 21.02.2009, 21:39 Консультация неактивна
Поступило ответов: 1
Здравия желаю Уважаемые Эксперты !!
Я начинающий кодер в С++, и хотелось бы для начала разобраться с данной задачей:

"Даны целые числа M и N (0<M<=12, 0<=N<=60), указывающие момент времени: «M часов, N минут». Определить наименьшее время (число полных минут), которое должно пройти до того момента, когда часовая и минутная стрелки совпадут"

Если я Вас не сильно утруждаю, не могли бы вы написать исходный код для данной программы? smile
Заранее Благодарю.

Ответ # 1, Micren (Посетитель)

Здравствуйте, Ковальчук Константин Константинович!
Эта задача скорее не на программирование, а на математические способности. Фактически сводится к нахождению следующего решения:
t=(60*M-11*N+720*i)/11, где i=0,1,2,3...
Вот пример программы:
Код
#include <locale>
#include <limits>
#include <iostream>

using namespace std;

unsigned int InputUInt(const wchar_t* const msg,unsigned int maxvalue)
{
	while(true)
	{
		unsigned int res;
		wcout<<msg<<L"(0.."<<maxvalue<<L"):";
		wcin>>res;
		if(wcin.fail())
		{
			wcout<<L"Неверный ввод"<<endl;
			wcin.clear();
			wcin.ignore(numeric_limits<streamsize>::max(),L'\n');
		}
		else
		{
			wcin.ignore(numeric_limits<streamsize>::max(),L'\n');
			if(res>maxvalue)
			{
				wcout<<L"Неверный диапазон введенного значения"<<endl;
				wcout<<L"Допускается от 0 до "<<maxvalue<<endl;
			}
			else return res;
		}
	}
}

int main()
{
	locale::global(locale("rus_rus.866"));
	int M=InputUInt(L"Введите количество часов",11),
		N=InputUInt(L"Введите количество минут",59);
	int tmp=60*M-11*N;
	wcout<<L"Время до совпадения минутной и часовой стрелок(ближайшие 10 событий):"<<endl;
	int count=10;
	unsigned int i=0;
	while(count)
	{
		int res=(720*(i++)+tmp)/11;
		if(res>0)
		{
			wcout<<res<<L"(мин)"<<endl;
			count--;
		}
	}
	system("PAUSE");
	return 0;
}

А вот пример ее работы:
Код
Введите количество часов(0..11):9
Введите количество минут(0..59):35
Время до совпадения минутной и часовой стрелок(ближайшие 10 событий):
14(мин)
79(мин)
145(мин)
210(мин)
275(мин)
341(мин)
406(мин)
472(мин)
537(мин)
603(мин)

Micren

Посетитель
21.02.2009, 22:56
Нет оценки ответа

Мини-форум консультации # 161095


Нет сообщений в мини-форуме
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.