Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
alex_news
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 8
#1

Задача через сколько минут будет 90 градсов - C++

19.12.2013, 12:23. Просмотров 445. Ответов 7
Метки нет (Все метки)

Задали программу: Задано время в часа и минутах. Определить через сколько минут часовая и минутная стрелки будут образовывать угол в 90 градусов (Часовая стрелка перемещается дискретно, т. е. по часу) . Не могу подобрать формулу, которая расчитывала бы все случаи. Есть предложения?
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
// лаба 2ц.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include "math.h"
 
using namespace std;
 
void main(void)
 
{setlocale(LC_ALL, "Russian");
    int n, m, d,c,a;
char ans='y';
while (ans=='y' || ans=='Y')
 
    {cout<<"Введите часы: ";
    cin>>n;
    cout<<"Введите минуты: ";
    cin>>m;
    d=5*n;
    c=m-d;
    a=d-m;
 
    if ((13<=n) || (60<=m)) 
    cout<<"Некорректно введены данные. Проверьте, чтобы значение часа было положительным и меньше 12, а значение минут было положительным и меньше 60.                     Хотите повторить ввод? Y/N ";
    else if (c==15 || a==15) cout<<"Угол между стрелками 90 градусов. Хотите повторить ввод? Y/N ";
    else if (m>30) cout<<"Через "<<abs(m-15-d)<<" минут угол между часовой и минутной стрелкой будет 90 градусов.  Хотите повторить ввод? Y/N  ";
    else if (m<30) cout<<"Через "<<abs(d-m-15)<<" минут угол между часовой и минутной стрелкой будет 90 градусов.  Хотите повторить ввод? Y/N  ";
    else if (m=d) cout<<"Через "<<15<<" минут угол между часовой и минутной стрелкой будет 90 градусов.  Хотите повторить ввод? Y/N  ";
    cin>>ans;}
 
system ("pause");}
Добавлено через 11 часов 57 минут
Ну, помогите плиз!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2013, 12:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача через сколько минут будет 90 градсов (C++):

Задача про лотосы: за сутки каждый лотос делится пополам. Определить сколько будет через месяц. - C++
Решите задачи на C++(в виде кода программы) 1.В озере растут лотосы. За сутки каждый лотос делится пополам, и вместо одного лотоса...

Сколько минут будет длиться пожар? - C++
Склад, имеющий форму квадрата со стороной N (1 &lt;= N &lt;= 1000), разбит на пронумерованные слева направо по строкам единичные квадраты...

Сколько мух осталось в комнате через К минут? Смоделировать процесс - C++
Когда в комнате было N мух, их начали выгонять, но то что-бы выгнать одну муху уходила 1 минута. Через каждые 5 минут в комнату влетала...

Определить, сколько амеб будет через 24 часа - C++
помогите пожалуйста решить задачу на си одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько амеб будет через...

Определить, через сколько лет будет погашена ссуда - C++
Некто взял ссуду в банке величиной А руб. под В% годовых. Ежегодно за-емщик вносит платежи в счет ссуды в С руб. Написать программу,...

Вычислить, сколько роботов будет через определенное количество лет - C++
Есть определенное количество роботов (ввести с клавиатуры). В начале года они делятся на группы по 5 и по 3 работа. За год группа из 5...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
19.12.2013, 13:06 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    int temp;
    for(int i=0;i<24;i++)
        for(int j=0;j<60;j+=5)
        {
            temp=i;
            if(temp>12)
                temp-=12;
            if(abs(temp-float(j)/5)==3 || abs(temp-float(j)/5)==9)
                cout<<"Hours: "<<i<<"  Minute: "<<j<<endl;
        }
    getch();
}
мне курсач нужно делать. зачем я это писал..
korlend
5 / 5 / 0
Регистрация: 17.12.2013
Сообщений: 10
19.12.2013, 13:22 #3
ну и дополню свой вариантик, не зря же писал)
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
#include "stdafx.h"
#include <iostream>
#include <math.h>
 
using namespace std;
 
 
int main()
{
    int hour=0;
    int min=0;
    int counter=0;
    while(hour!=12)
    {
        if(min==60)
        {
            hour++;
            min=0;
        }
        //cout<<hour<<" "<<min<<endl;;
        if(abs(min-hour*5)==15 || abs(min-hour*5)==45)
        {
            counter++;
            cout<<hour<<" "<<min<<" 90"<<endl;;
        }
        min++;
    }
    system("pause");
    return 0;
}
alex_news
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 8
19.12.2013, 13:28  [ТС] #4
спасибо конечно, все работает, вот только нужно ввести время самому в консоль и она тебе выводила количество минут, через которое угол будет 90 градусов


Добавлено через 14 секунд
korlend, не запускается
korlend
5 / 5 / 0
Регистрация: 17.12.2013
Сообщений: 10
19.12.2013, 17:38 #5
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
#include "stdafx.h"
#include <iostream>
#include <math.h>
 
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL,"rus");
    int hour=-1;
    int min=-1;
    int counter=0;
    while((hour<0 || hour>12) || (min<0 || min>60))
    {   
        system("cls");
        cout<<"введите последовательно часы и минуты"<<endl;
        cin>>hour>>min;
    }
    while(hour!=12)
    {
        if(min==60)
        {
            hour++;
            min=0;
        }
        if(abs(min-hour*5)==15 || abs(min-hour*5)==45)
        {
            cout<<"через "<<counter<<" минут будет 90 градусов"<<endl;
            break;
        }
        counter++;
        min++;
        if(hour==11 && min==60)
            hour=0;
    }
    system("pause");
    return 0;
}
alex_news
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 8
19.12.2013, 18:04  [ТС] #6
korlend, спасибо!
korlend
5 / 5 / 0
Регистрация: 17.12.2013
Сообщений: 10
19.12.2013, 20:23 #7
прощу прощения, кое что упустил, при вводе 11-ти часов и минут 45+ считало бы неправильно
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
#include "stdafx.h"
#include <iostream>
#include <math.h>
 
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL,"rus");
    int hour=-1;
    int min=-1;
    int counter=0;
    while((hour<0 || hour>12) || (min<0 || min>60))
    {   
        system("cls");
        cout<<"введите последовательно часы и минуты"<<endl;
        cin>>hour>>min;
    }
    while(hour!=12)
    {
        if(min==60)
        {
            hour++;
            min=0;
        }
        if(abs(min-hour*5)==15 || abs(min-hour*5)==45)
        {
            cout<<"через "<<counter<<" минут будет 90 градусов"<<endl;
            break;
        }
        counter++;
        min++;
        if(hour==11 && min==60)
            hour=-1;
    }
    system("pause");
    return 0;
}
ZeR_0
117 / 109 / 37
Регистрация: 30.01.2013
Сообщений: 297
19.12.2013, 22:13 #8
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
#include <iostream>
#define segment 5
 
int main(void){
    setlocale(LC_ALL,"rus");
 
    size_t hour;
    size_t minute;
    size_t left, right;
 
    do{
        system("CLS");
        std::cout << "Часы (hh): ";
        std::cin >> hour;
        std::cout << "Минуты (mm): ";
        std::cin >> minute;
    }while((hour > 12 || hour <= 0) || (minute > 59 || minute < 0));
 
    std::cout << "Ближайшие 90 градусов через: ";
 
    if(hour*segment-15 <= 0) 
        left = 75 - hour*segment;
    else 
        left = hour*segment - 15;
 
    if(hour*segment + 15 > 60)
        right = hour*segment - 45;
    else 
        right = hour*segment + 15;
 
    if(minute >= right)
        std::cout << (60 - minute) + left;  
    else if(minute < left)
        std::cout << left - minute;
    else std::cout << right - minute;
 
    std::cout << " минут(-у/-ы)" << std::endl;
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2013, 22:13
Привет! Вот еще темы с ответами:

Определить, сколько клеток будет через определенные промежутки времени - C++
Одноклеточная амеба каждые 3 часа делится на две клетки. Определить, сколько клеток будет черещ 3, 6, 9, ..., 24 часа. Если первоначально...

Определить, сколько и каких животных и людей будет у Максима через месяц - C++
У Максима х знакомых. Из них все четные - женского пола, а нечетные - животные. Те животные, индекс которых равен 3 - домашние. Из них...

Определить сколько амёб будет через заданный промежуток времени, если известна скорость деления амёбы - C++
Нужно решить задачу: Одноклеточная амёба каждые 3 часа делится на 2 клетки. Определите сколько амёб будет через 3, 6, 9, 12 ... 24 часа. ...

Одноклеточная амеба делится каждые три часа на две клетки. Определить, сколько будет амеб через 3, 6, 9, 12, … - C++
Одноклеточная амеба делится каждые три часа на две клетки. Определить, сколько будет амеб через 3, 6, 9, 12, …, 24 часа. Напишите...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.12.2013, 22:13
Ответ Создать тему
Опции темы

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