Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 13.09.2021
Сообщений: 16

Определить время , которое должно пройти до момента , когда часовая и минутная стрелки расположатся перпендикулярно

13.09.2021, 19:08. Показов 2800. Ответов 8

Студворк — интернет-сервис помощи студентам
Целые числа m (https://www.cyberforum.ru/cgi-bin/latex.cgi?0<m\leq 12) и n (https://www.cyberforum.ru/cgi-bin/latex.cgi?0\leq n < 60) , которые опр. кол-во часов и минут , задаются с клавиатуры. Определить время , которое должно пройти до момента , когда часовая и минутная стрелки расположатся перпендикулярно друг к другу.

Изучали только if-else и switch .

Буду очень благодарен за помощь !
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.09.2021, 19:08
Ответы с готовыми решениями:

Определить наименьшее время до того момента, когда часовая и минутная стрелки расположатся перпендикулярно
Добрый день. Помогите разобраться? есть задача 1) Даны целые числа M и N (0&lt;M&lt;=12, 0&lt;=N&lt;=60), указывающие момент времени: «M...

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

Определить наименьшее время, которое должно пройти до того момента, когда часовая и минутная стрелка на циферблате совпадут
помоги, буду очень благодарна) Записать тернарную операцию для решения данной задачи. Не использовать условный оператор. Составлять...

8
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
13.09.2021, 21:48
Пролистайте в конец страницы и найдите для себя готовое решение
3
Just Do It!
 Аватар для XLAT
4202 / 2660 / 654
Регистрация: 23.09.2014
Сообщений: 9,004
Записей в блоге: 3
13.09.2021, 21:49
---
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
13.09.2021, 22:09
Лучший ответ Сообщение было отмечено aleks_111 как решение

Решение

Цитата Сообщение от мама Стифлера Посмотреть сообщение
Пролистайте в конец страницы и найдите для себя готовое решение
О! Там тема с галочкой и моё полуторагодовое решение
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
int foo(int h, int m)
{
    if(h==12) h = 0;
 
    int shift = ((h*5)%60);
    m-=shift;
    if(m<0) m+=60;
 
    if(m > 45) return (75 - m);
    if(m > 15) return (45 - m);
    return (15-m);
}
 
int main()
{
    int h, m;
    std::cout << "input h, m:";
    std::cin >> h >> m;
    std::cout << "\n\n "  << foo(h,m) << " minutes\n\n";
 
    system("pause");
    return 0;
}

Я не знаю как это раюотает (+к важности комментирования), но, исходя из того что я там самостоятельно забраковал первый вариант, а этот, второй, не забраковал и даже наоборот - знач должен работать. (хотя сейчас я не уверен )

Ладно, с днём программиста!
2
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5208 / 2925 / 1509
Регистрация: 14.12.2018
Сообщений: 5,266
Записей в блоге: 1
13.09.2021, 22:12
Цитата Сообщение от Folian Посмотреть сообщение
с днём программиста!
2
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
14.09.2021, 01:13
Лучший ответ Сообщение было отмечено aleks_111 как решение

Решение

а вообще решение предложенное тут https://www.cyberforum.ru/post429124.html считаю не корректным.
Кликните здесь для просмотра всего текста
Vvedite chasy
6
Vvedite minuty
30
15 minutes
--------------------------------
Process exited after 5.317 seconds with return value 0
Для продолжения нажмите любую клавишу . . .

Ведь в реальном времени на 6:30, часовая стрелка должна находится между 7 и 6 часами. Следовательно через 15 минут никак не будет 90 градусов.

Добавлено через 2 часа 50 минут
В общем у меня получилось такое решение. А все которые указаны на сайте, не верные на мой взгляд.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <cmath>
using namespace std;
 
int main(void)
{
    const double thh = 0.5;
    const double tmm = 6.0;
    int hour, min, time = 0;
    double pos_hour, pos_min;
 
    cout << "Vvedite chasy: ";
    cin >> hour;
    cout << "Vvedite minuty: ";
    cin >> min;
    if(hour >= 12) hour -= 12;
    if(min >= 60) min -= 60;
 
    pos_hour = hour*thh*60 + thh*min;
    pos_min = min*tmm;
 
    cout << endl << "Start position time: ";
    hour<10 ? cout << '0' << hour << ':' : cout << hour << ':';
    min<10 ? cout << '0' << min << endl : cout << min << endl;
    cout << "Hours gradus: " << pos_hour << endl;
    cout << "Minutes gradus: " << pos_min << endl;
 
    if(abs(pos_hour-pos_min) > 90)
    {
        while(abs(pos_hour-pos_min) >= 90)
        {
                pos_hour += pos_hour>=360 ? thh-360 : thh;
                pos_min += pos_min>=360 ? tmm-360 : tmm;
                time++;
        }
    }
    else
    {
        while(abs(pos_hour-pos_min) <= 90)
        {
                pos_hour += pos_hour>=360 ? thh-360 : thh;
                pos_min += pos_min>=360 ? tmm-360 : tmm;
                time++;
        }   
    }
    cout << endl << "Finish position time: " << endl;
    cout << "Hours gradus: " << pos_hour << endl;
    cout << "Minutes gradus: " << pos_min << endl;
    cout << "Calculated time(minutes): " << time << endl;
    return 0;
}
2
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
14.09.2021, 23:23
Цитата Сообщение от мама Стифлера Посмотреть сообщение
А все которые указаны на сайте, не верные на мой взгляд.
Эт если рассматривать часы, в которых стрелки движутся постоянно. Вообще, в далёком детстве, в каком-то санатории чтоль я видел старые советские часы, которые именно "шагали". Сначала они меня пугали, т.к. сижу-сижу в тишине, а тут - ЩЕЛК! - чё это? Откуда? Потом уже дошло что это часы такие и они мне понравились тогда, всё хотел посмотреть как часовая щёлкает, да не увидел так ни разу. Задачка-то эта именно такой детской и выглядит со всеми целыми числами и отсутствием секунд.
Ну да ладно.

Цитата Сообщение от мама Стифлера Посмотреть сообщение
В общем у меня получилось такое решение.
Для 10:55 выводит 6 минут

Короч я тоже поковырялся, накалякал через - как бы это назвать - периодическую функцию прироста угла между стрелками чтоль, ну, надеюсь идею донёс:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
 
double foo(double h, double m)
{
    double ms = M_PI / 1800;
    double hs = ms / 12;
    double speed = ms - hs;
    double per = (3600 * hs) / (ms - hs) + 3600;
 
    double t = h * 3600 + m * 60;
    t = t - static_cast<int>(t / per) * per;
 
    double angle = t * speed;
 
    if( fabs(M_PI_2 - angle) < 1.e-4 ) return 0.;
    if(angle < M_PI_2) return (M_PI_2 - angle) / speed;
    if(double a = M_PI + M_PI_2; angle < a) return (a - angle) / speed;
    return (2 * M_PI + M_PI_2 - angle) / speed;
}
 
int main()
{
    std::cout << foo(10, 55) << " sec\n";
    std::cout << foo(9, 0) << " sec\n";
    std::cout << foo(8, 59) << " sec\n";
    std::cout << foo(6, 30) << " sec\n";
 
    return 0;
}
Вроде работает.

Добавлено через 8 минут
Цитата Сообщение от Folian Посмотреть сообщение
C++
1
if( fabs(M_PI_2 - angle) < 1.e-4 ) return 0.;
Тут ещё, наверное, расширить нужно до
C++
1
if( fabs(M_PI_2 - angle) < 1.e-4  || fabs(M_PI_2 + M_PI - angle) < 1.e-4) return 0.;
Это для частных случаев типа 9:00, а может ещё какой есть под 270 градусов, хз.
3
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
14.09.2021, 23:24
Цитата Сообщение от Folian Посмотреть сообщение
Для 10:55 выводит 6 минут
Да, где то есть просчет, но главное направление мысли поняли правильно, а дальше дело техники. Просто почему то это нюанс с передвижением стрелок никто не учел, что странно.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
15.09.2021, 00:28
Цитата Сообщение от мама Стифлера Посмотреть сообщение
Просто почему то это нюанс с передвижением стрелок никто не учел, что странно.
Даже больше, многие так подумали, плюнули на эту задачу (включая меня)
Уточнять этот нюанс, решать какую погрешность взять, и так далее...
А потом автор такой : это что за на.... самолет, мне велосипед нужен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.09.2021, 00:28
Помогаю со студенческими работами здесь

Найти время, которое должно пройти до момента, когда часовая и минутная стрелка будут перпендикулярны одна другой
Помогите написать программу,циклы нельзя использовать!!! Целые числа m(0&lt;m&lt;=12) и n(0&lt;=n&lt;60),которые определяют количество часов и...

Определить наименьшее время (число полных минут), которые должны пройти до того момента, когда часовая и минутная стрелки на циферблате совпадут
Нужно ввести целые числа m и n (часы и минуты), 0 &lt;= m &lt;= 11, 0 &lt;= n &lt;= 59, которые определяют время суток. Определить наименьшее время...

Определите наименьшее число минут, через которое цифровая и минутная стрелки расположатся взаимно перпендикулярно
На вход программе подаются два целых числа 0 &lt;= n &lt; 60 и 0 &lt;= m &lt;= 12, указывающие момент времени &quot;n часов m минут&quot;. Определите...

Определить наименьшее время(число полных минут),которое должно пройти до того момента,когда часовая и минутная стрелки
Даны целые числа h,m (0&lt;h&lt;=12,0&lt;=m&lt;=59),указывающие момент времени: h часов,m минут.Определить наименьшее время(число полных минут),которое...

Определить наименьшее время(число полных минут),которое должно пройти до того момента,когда часовая и минутная
Даны целые числа h,m (0&lt;h&lt;=12,0&lt;=m&lt;=59),указывающие момент времени: h часов,m минут.Определить наименьшее время(число полных минут),которое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru