Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Владленка
5 / 5 / 0
Регистрация: 12.03.2015
Сообщений: 103
#1

Определить наименьшее число полных минут до момента, когда часовая и минутная стрелка на циферблате совпадут - C++

26.03.2015, 11:41. Просмотров 1483. Ответов 13
Метки нет (Все метки)

Даны целые числа h и m, указывающие момент времени "h часов m минут". Определить наименьшее число полных минут, которые должны пройти до того момента, когда часовая и минутная стрелки совпадут на циферблате.!

Помогите пожалуйста в написании кода!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2015, 11:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить наименьшее число полных минут до момента, когда часовая и минутная стрелка на циферблате совпадут (C++):

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

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

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

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

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

Определить наименьшее время, когда часовая и минутная стрелки будут перпендикулярны друг другу - C++
Добрый вечер! Подскажите, пожалуйста, алгоритм вот такой прожки: Ввести целые числа m (0 ≤ m ≤ 12) и n (0 ≤ n ≤ 60), которые...

13
Boleon
Guardian of Asgaard
372 / 315 / 106
Регистрация: 11.11.2013
Сообщений: 1,046
Завершенные тесты: 1
26.03.2015, 13:07 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int main() {
    int h, m, diff;
    
    std::cin >> h >> m;
    
    h*5 >= m ? diff = h*5 - m : diff = 60 - (m - h*5);
    
    std::cout << diff << " minutes" << std::endl;
    
    return 0;
}
0
Владленка
5 / 5 / 0
Регистрация: 12.03.2015
Сообщений: 103
26.03.2015, 13:44  [ТС] #3
спасибо большое))))а вот ничего, что не точно считает..то есть если ввести например 14:30, то выведет 40 минут..это 15:10..но в это время они не совпадут..или как?объясните пожалуйста!
1
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
26.03.2015, 18:32 #4
Цитата Сообщение от Владленка Посмотреть сообщение
но в это время они не совпадут
Вот еще один вариант .

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
#include <math.h>
#include <iostream>
 
int round(double val)
    {
        if (val-floor(val)>0.5)
            {return (floor(val)+1);}
        else
            {return floor(val);}
    }
 
int main()
{
    std::cout<<"Please input hours : ";
    int h=0;
    double m=0;
    int counter=0;
    std::cin>>h;
    h=(h>12)?(h-12):(h);
    std::cout<<"Please inpur minutes : ";
    std::cin>>m;
    while (h*5+round(m/12)!=m)
        {
            if(m==60)
                {m=0;h++;}
            m++;
            counter++;
        }
    std::cout<<"Arrows will meet after "<<counter<<" minutes "<<std::endl;
 
    system("pause");
    return 0;
}
0
Владленка
5 / 5 / 0
Регистрация: 12.03.2015
Сообщений: 103
26.03.2015, 23:55  [ТС] #5
Оо))Спасибо большое! Тут вообще все отлично!)Спасаете) Вы великий программист?

Добавлено через 5 часов 4 минуты
только вот что означает val ? я немецкий изучала..с английским все очень плохо(не могу разобраться в программе!
1
Boleon
Guardian of Asgaard
372 / 315 / 106
Регистрация: 11.11.2013
Сообщений: 1,046
Завершенные тесты: 1
27.03.2015, 01:53 #6
Цитата Сообщение от Владленка Посмотреть сообщение
если ввести например 14:30, то выведет 40 минут..это 15:10
Да, не учел движение часовой стрелки на +1 час, после пересечения 12 минутной.
Готовый вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main() {
    int h, m, diff;
    
    std::cin >> h >> m;
    
    if (h > 12) h -= 12;
    
    h*5 >= m ? diff = h*5 - m : diff = 65 - (m - h*5);
    
    std::cout << diff << " minutes" << std::endl;
    
    return 0;
}
1
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
27.03.2015, 03:50 #7
Цитата Сообщение от Владленка Посмотреть сообщение
только вот что означает val ?
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
#include <math.h>
#include <iostream>
 
int round(double val)            //функция для округления числа , val - переменная которую округляет эта функция, 
    {                                   //  часовая стрелка тоже идет пока идет минутная и часто находится не  
                                         //на конкретном значении а где то между делений , так если пройдено больше 0.5
                                         //(половины) деления то , засчитываем это деление как пройденное.
        if (val-floor(val)>0.5)   //<-- в этой строке подставляя вместо 0.5 (значения из диапазона (0.5,1)) можно   
            {return (floor(val)+1);} // настраивать точность , когда деление считается пройденным . Точнее где-то 0.8
        else
            {return floor(val);}
    }
 
int main()
{
    std::cout<<"Please input hours : ";
    int h=0;
    double m=0;
    int counter=0;
    std::cin>>h;
    h=(h>12)?(h-12):(h);
    std::cout<<"Please inpur minutes : ";
    std::cin>>m;
    while (h*5+round(m/12)!=m)  //в этой строке исп-ся ф-ция round() для округления значения m/12
        {                                    // и дальше в цикле while тикаем по 1 мин. пока наша формула в while 
            if(m==60)                  // не станет false , тогда вернем значение счетчика минут counter .
                {m=0;h++;}          //тут главное формула что б решилась : h*5+(m/12)=m  .
            m++;
            counter++;
        }
    std::cout<<"Arrows will meet after "<<counter<<" minutes "<<std::endl;
 
    system("pause");
    return 0;
}
}
0
Dimension
Dimension
571 / 440 / 135
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
27.03.2015, 06:12 #8
Цитата Сообщение от Владленка Посмотреть сообщение
я немецкий изучала..с английским все очень плохо
звучит как : "А вы на каком языке программируйте ?- На русском конечно же !"
0
Implosion_IT
-59 / 9 / 0
Регистрация: 24.12.2014
Сообщений: 88
27.03.2015, 11:27 #9
сейчас будет вам решение

Добавлено через 31 минуту
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
#include <stdio.h>
#include <iostream>
#include <math.h>
 
 
int main()
{
    const double posh = 12*60;
    const double posm = 60*60;
    int h, m, h60, m60;
 
    std::cin >> h >> m;
    if (h>12) h = h-12;
    m60 = m*60;
    h60 = h*60;
    double perch;
    perch = (h60/posh*100.);
    perch*= 1000;
    perch = ceil(perch);
    perch /= 1000;
 
    double percm=0;
 
    int diff = 0;
    while (perch!=percm) {
        percm = ((m60+diff*60)/posm*100.);
        percm*= 1000;
        percm = ceil(percm);
        percm /= 1000;
        diff++;
    }
 
    std::cout<<"Arrows will meet after "<<diff<<" minutes "<<std::endl;
    std::system("pause");
    return 0;
}
Добавлено через 3 часа 47 минут
нашел решение с точностью до миллисекунд)
1
Владленка
5 / 5 / 0
Регистрация: 12.03.2015
Сообщений: 103
27.03.2015, 15:16  [ТС] #10
Спасибо огромное!))))
1
Implosion_IT
-59 / 9 / 0
Регистрация: 24.12.2014
Сообщений: 88
27.03.2015, 15:20 #11
погоди вот решение
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
#include <iostream>
#include <iomanip>
 
using namespace std;
 
void getPosSecOfTime(int h, int m, int s, int ms, int *posh, int *posm)
{
    int hx = h*60*60*1000, mx = m*60*1000, sx = s*1000, msx = ms;
    *posh=hx+mx+sx+msx;
    *posm=m*720000+s*12000+ms*12;
}
 
int main()
{
    int h, m, s = 0, ms = 0, diff=0;
    cin>>h>>m;
    int posh, posm;
 
    while (1) {
        getPosSecOfTime(h, m, s, ms, &posh, &posm);
        ms=ms+1;
        if (ms>=1000) {ms=ms-1000; s=s+1;}
        if (s>=60) {s=s-60;m=m+1;diff++;}
        if (m>=60) {m=m-60;h=h+1;}
 
        if ((posh/100==posm/100)&&(posm>0)) {
            cout<<setfill('0')<<setw(2)<<h<<":"<<setw(2)<<m<<":"<<setw(2)<<s<<":"<<setw(3)<<ms<<ends<<endl
            <<"Arrows will meet after "<<diff<<" minutes "<<endl;
            break;
        }
    }
    system("pause");
    return 0;
}
0
Владленка
5 / 5 / 0
Регистрация: 12.03.2015
Сообщений: 103
27.03.2015, 15:22  [ТС] #12
благодарю!!!!

Добавлено через 32 секунды

Добавлено через 1 минуту
спасиибоочки)
1
Implosion_IT
-59 / 9 / 0
Регистрация: 24.12.2014
Сообщений: 88
27.03.2015, 15:24 #13
а где ты такую задачку взяла?.. есть ещё?
0
Владленка
5 / 5 / 0
Регистрация: 12.03.2015
Сообщений: 103
27.03.2015, 20:12  [ТС] #14
еще много всяких есть, и все нужно сделать(
я вообще не знаю как!
я поступила на математика-программиста, и нам нужно делать лабы, но никто ничего не объясняет, поэтому приходится просить решения, а потом самой разбираться как-нибудь..сложно очень..на этот форум одна надежда!в Интернете тоже особо ничего толкового нету, вот еще планирую книгу купить по С++!
0
27.03.2015, 20:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2015, 20:12
Привет! Вот еще темы с ответами:

Идет n-я секунда суток. Определить, сколько полных часов и полных минут прошло до этого момента. - C++
Идет n-я секунда суток. Определить, сколько полных часов и полных минут прошло до этого момента.

Определить число полных часов и число полных минут, прошедших с начала суток - C++
С начала суток часовая стрелка повернулась на y градусов (0&lt;=y&lt;=360, y - вещественное число). Определить число полных часов и число полных...

Идет K-ая секунда суток. Определить, сколько полных часов и полных минут прошло к этому моменту. - C++
помогите, не пойму как это подсчитать

Определить значение угла для минутной стрелки, а также количество полных часов и полных минут - C++
вот задание Часовая стрелка образует угол у с лучом, проходящим через центр и через точку, соответствующую 12 часам на циферблате. 0&lt;у ≤...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru