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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.86
rembosan
0 / 0 / 0
Регистрация: 11.03.2012
Сообщений: 17
#1

Как в С++ записываються промежутки - C++

26.05.2012, 23:48. Просмотров 4482. Ответов 6
Метки нет (Все метки)

Есть такая задача: сделать так что бы программа высчитывала знак зодиака. Как записать условие, как вообще задать промежуток?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2012, 23:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как в С++ записываються промежутки (C++):

Промежутки - C++
На вход подается интервал, полуинтервал или отрезок. ( (x, y) or or ) Где х представлено как a/b, у как c/d. a, c -целые, b, d -...

Вызов функции через равные промежутки времени - C++
Привет. Нужно передавать принимать данные через usb hid устройство. Для этого нужно через равные промежутки времени (допустим 1 сек.)...

Опишите промежутки чисел и символов при разных типах - C++
char: wchar_t: int: float: double: *Какие из них начинают отсчёт от 0, а какие могут быть отрицательными? *Какие могут быть...

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

На отрезке xє[-4; 4] выделить промежутки длиной h = 0.1, в которых есть действительные корни функции b = xtgx-e ^ (x-3) - C++
На отрезке xє выделить промежутки длиной h = 0.1; в которых есть действительные корни функции b = xtgx-e ^ (x-3) Вычислить количество...

Найти промежутки возрастания и промежутки убывания - Pascal ABC
Помогите пожалуйста с задачей!!! Хотябы объясните как решить ..А то чего то вообще сообразить не могу:( Известно, что функция y = P(x)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
27.05.2012, 00:10 #2
Ну промежуток можно задать в стиле
C++
1
2
3
int x;
if(x>10 && x<20)//промежуток от 10 до 20
 doSomething();
Но ваша задача классически решается через switch-case.
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.05.2012, 05:53 #3
Цитата Сообщение от Gepar Посмотреть сообщение
Но ваша задача классически решается через switch-case.
365 case'ов? о_о
yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
27.05.2012, 09:04 #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
34
35
36
37
#include <iostream>
int main()
{
    using namespace std;
    cout << "Введите дату рождения\n";
    int day,mounth;
    cin >> day >> mounth;
    switch (mounth)
    {
        case 1: if (day<21) cout<<"Вы козерог ";
                else cout<<"Вы водолей "; break;
        case 2: if (day<21) cout<<"Вы водолей"; 
                else cout<<"Вы рыбы";break;
        case 3: if (day<21) cout<<"Вы рыбы";
                else cout<<"Вы овен: ";break;
        case 4: if (day<21) cout<<"Вы овен";
                else cout<<"Вы телец";break;
        case 5: if (day<21) cout<<"Вы телец";
                else cout<<"Вы близнецы";break;
        case 6: if (day<22) cout<<"Вы близнецы";
                else cout<<"Вы рак :)";break;
        case 7: if (day<23) cout<<"Вы рак :)" ;
                else cout<<"Вы лев";break;
        case 8: if (day<24) cout<<"Вы лев";
                else cout<<"Вы дева";break;
        case 9: if (day<24) cout<<"Вы дева";
                else cout<<"Вы весы";break;
        case 10:if (day<24) cout<<"Вы весы";
                else cout<<"Вы скорпион";break;
        case 11:if (day<23) cout<<"Вы скорпион";
                else cout<<"Вы стрелец";break;
        case 12:if (day<22) cout<<"Вы стрелец";
                else cout<<"Вы козерог";break;
    }
    return 0;
 
}
Правда не компилил, но выглядит примерно так..
Day
1155 / 960 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
27.05.2012, 10:45 #5
Вообще-то знак зодиака определяется координатой (градусом) Солнца. А его положение совсем не соответствует приведенному вами алгоритму. Так, смена знака может произойти и в середине дня. И в разные моменты (и даже дни!) в разные годы
Одна моя знакомая утверждала, что она Водолей. С упорством Козерога. А до желанного Водолея ей не хватило всего-то четверть градуса.
Если известна долгота Солнца (lon) то задача решается так
C
1
2
3
4
char *znak[12] = { "Овен", "Телец", ..... };
double lon; int z;
z = (int)lon % 30;
cout<< "You is " << znak[z];
igorrr37
1646 / 1274 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
27.05.2012, 12:32 #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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream>
#include <string>
#include <stdexcept>
#include <list>
#include <utility>
#include <sstream>
 
class Date
{
public:
    Date() : pMD(1, 1){}
    explicit Date(std::string const& s)
    {
        std::istringstream iss(s);
        iss >> pMD.second;
        if(pMD.second < 1 || pMD.second > 31) throw std::out_of_range("day out of range");
        if('.' != iss.get()) throw std::invalid_argument("Incorrect date format");
        iss >> pMD.first;
        if(pMD.first < 1 || pMD.first > 12) throw std::out_of_range("month out of range");
        if(!iss.eof()) throw std::invalid_argument("Incorrect date format");
    }
    bool operator<=(Date const& d) const
    {
        return pMD <= d.pMD;
    }
    friend std::ostream& operator<<(std::ostream& o, Date const& d)
    {
        return o << d.pMD.second << '.' << d.pMD.first;
    }
private:
    std::pair<std::size_t, std::size_t> pMD;
};
 
class ZSign
{
public:
    explicit ZSign(std::size_t num)
    {
        switch(num)
        {
            case 1 : Init("Ram", Date("21.03"), Date("20.04")); break;
            case 2 : Init("Bull", Date("21.04"), Date("21.05")); break;
            case 3 : Init("Twins", Date("22.05"), Date("21.06")); break;
            case 4 : Init("Crab", Date("22.06"), Date("22.07")); break;
            case 5 : Init("Lion", Date("23.07"), Date("22.08")); break;
            case 6 : Init("Maiden", Date("23.08"), Date("23.09")); break;
            case 7 : Init("Scales", Date("24.09"), Date("23.10")); break;
            case 8 : Init("Scorpion", Date("24.10"), Date("22.11")); break;
            case 9 : Init("Archer", Date("23.11"), Date("21.12")); break;
            case 10 : Init("Sea-Goat", Date("22.12"), Date("20.1")); break;
            case 11 : Init("Water-Bearer", Date("21.01"), Date("19.02")); break;
            case 12 : Init("Fish", Date("20.02"), Date("20.03")); break;
            default : throw std::out_of_range("ZSign argument must belongs to an interval [1,12]");
        }
    }
    friend std::ostream& operator<< (std::ostream& o, ZSign const& zs)
    {
        return o << zs.name << '(' << zs.beg << '-' << zs.end << ')';
    }
    friend class ZYear;
private:
    void Init(std::string const& name_, Date const& begDate_, Date const& endDate_)
    {
        name = name_;
        beg = begDate_;
        end = endDate_;
    }
    Date beg, end;
    std::string name;
};
 
class ZYear
{
public:
    ZYear()
    {
        for(std::size_t i = 0; i < 12; l.emplace_back(++i));
    }
    ZSign GetSignByDate(Date const& d) const
    {
        for(auto const& val : l)
        {
            if(val.beg <= d && d <= val.end) return val;
        }
        auto it = l.begin();
        std::advance(it, 9);
        return *it;
    }
private:
    std::list<ZSign> l;
};
 
int main()
{
    ZYear y;
    std::cout << y.GetSignByDate(Date("22.07")) << std::endl;
    return 0;
}
Evg
27.05.2012, 15:07     Как в С++ записываються промежутки
  #7

Не по теме:

Чувствуется, дело закончится этим

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2012, 15:07
Привет! Вот еще темы с ответами:

Как сделать большие промежутки? - HTML, CSS
Как сделать одинаковые больше промежутки между названиями книг. что бы они оставались в одной строке и в промежутках не было подчеркивания?...

Как прописать функции и задать промежутки - VBA
Помогите написать функции,позволяющие получить их значения в ячейках С1 С3 для любого значения х. Как прописать функции,как задать...

Как отследить малые промежутки времени? - Visual Basic
Как отследить малые промежутки времени (&lt;100 мс)в VB?

Как воспроизводить mp3 через определенные промежутки времени - C#
Допустим, есть кнопка button1. Как сделать так, что бы после нажатия на неё через определённые промежутки времени воспроизводился...


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

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

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