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

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

Войти
Регистрация
Восстановить пароль
 
Sir-Aragon
328 / 11 / 2
Регистрация: 28.10.2008
Сообщений: 76
#1

Классы С++ - C++

30.05.2009, 15:54. Просмотров 913. Ответов 12
Метки нет (Все метки)

Какой год наступит по прошествии заданного количества дней после начала указанного года? Например через 366 дней после начала 2000 года наступит 2001; через 365 дней после начала 2000 года наступит год 2000 (будет тот же год).

Имя класса: СYearFinder
Исходное данное: int
Имя метода для установки исходного данного: SetYear
Имена полей, в которых хранятся исходные данные: m_year
Результат: int
Прототип метода, который будет выполнять действие: int FindYear(int);
Имя метода для взятия результата: GetDateString
Имена объектов: FirstFinder, LastFinder
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2009, 15:54     Классы С++
Посмотрите здесь:

Классы - C++
Здравствуйте, изучаю классы есть задание. Кое как сделал для имени и фамилии, а для зарплаты не получается. Прошу помогите и...

классы - C++
#include <cstdlib> #include <iostream> using namespace std; class BST { private : int **tree;

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

Классы - C++
Исправьте ошибки и выведите данные в табличном виде. //1TSTRUC.CPP //Данная программа использует структуру с одним //элементом...

Классы - C++
помогите сделать задание: 1. создать класс типа прямоугольник. поля - высота и ширина. класс имеет конструктор. методы вычисляют площадь,...

Классы - C++
Доброго времени суток! Реализую систему окон и контролов. Вот пример: class Control { public: void draw(); void...

Классы в С++ - C++
Подскажите пожалуйста, как решить данную задачу %-) В рамках консольного приложения создать класс А с полями а и b и свойством с....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
30.05.2009, 17:25     Классы С++ #2
Привед. Если я тебя правильно понял, то:

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
#include <stdio.h>
 
class CYearFinder
{
public:
    void SetYear(int one)
    {
        FirstFinder = one;
    }
    int GetDateString() {return m_year;}
    void FindYear(int days)
    {
        for(int i = 1; i <= days; i++)
        {
            if(i == 365)
            {
                //LastFinder += 1;
                FirstFinder += 1;
                //m_year = FirstFinder + LastFinder;
                m_year = FirstFinder;
                days -= 365;
                i -= 364;
                if(days < 365)
                {
                    break;
                }
            }
        }
    }
 
private:
    int m_year;
    int FirstFinder, LastFinder;
};
 
int main(int argc, char * argv [])
{
    CYearFinder calc;
    int y, d;
    printf("Please Enter Year: ");
    scanf_s("%d", & y);
    calc.SetYear(y);
    printf("Please Enter Days: ");
    scanf_s("%d", & d);
    calc.FindYear(d);
 
    printf("Year Now: %d\n", calc.GetDateString());
 
    return 0;
}
Кнопочка "Спасибо" в низу, если что...
Sir-Aragon
328 / 11 / 2
Регистрация: 28.10.2008
Сообщений: 76
30.05.2009, 17:44  [ТС]     Классы С++ #3
мне нужно, чтобы быа раздельная компиляция, типа этого:
Вложения
Тип файла: rar LAB.rar (1.1 Кб, 16 просмотров)
Sir-Aragon
328 / 11 / 2
Регистрация: 28.10.2008
Сообщений: 76
30.05.2009, 19:10  [ТС]     Классы С++ #4
с той я уже сам разобрался, нужно решение вот этой(тоже чтоб была раздельня компиляция, как в архиве)

Найти дату, которая наступит по прошествии указанного количества месяцев после заданной даты. Например, через два месяца после 29.12.2002 будет 01.03.2003; через три месяца после 29.12.2002 будет 29.03.2003.
Имя класса: CDateAddMonths
Исходное данное: строка в формате mm/dd/yyyy
Имя метода для установки исходного данного: SetAsString
Имена полей, в которых хранятся исходные данные: m_date_year, m_date_month, m_date_day
Результат: строка в формате mm/dd/yyyy
Прототип метода, который будет выполнять действие: void AddMonths(int);
Имя метода для взятия результата: GetAsString
Имена объектов: DateMonth1, DateMonth2
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
30.05.2009, 20:38     Классы С++ #5
Что-то мне не очень ясно, как GetAsString будет возвращать "mm/dd/yyyy". Это получается, что у GetAsString должен быть тип char ?...

Добавлено через 6 минут 36 секунд
Вот, кстати, алгоритм изменения даты:

C++
1
2
3
4
5
6
7
8
9
10
11
12
int day = 1, month = 1, year = 1;
 
if(day > 30)
{
    day = 1;
    month++;
    if(month > 12)
    {
        month = 1;
        year++;
    }
}
А насчет GetAsString - я в замешательстве
Sir-Aragon
328 / 11 / 2
Регистрация: 28.10.2008
Сообщений: 76
30.05.2009, 20:38  [ТС]     Классы С++ #6
Цитата Сообщение от Search.. Посмотреть сообщение
Что-то мне не очень ясно, как GetAsString будет возвращать "mm/dd/yyyy". Это получается, что у GetAsString должен быть тип char ?...
ага)
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
30.05.2009, 20:39     Классы С++ #7
То не правильный код. Вот правильный (!):

C++
1
2
3
4
5
6
7
8
9
10
11
12
int day = 1, month = 1, year = 1;
 
if(day > 30)
{
    day = 1;
    month++;
    if(month > 12)
    {
        month = 1;
        year++;
    }
}
Sir-Aragon
328 / 11 / 2
Регистрация: 28.10.2008
Сообщений: 76
30.05.2009, 20:48  [ТС]     Классы С++ #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
//DateAddMonths.hhp
class CDateAddMonths
{
   int m_date_year; //god
   int m_date_month; //mesjaz
   int m_date_day; //den
   int m_month_days[12]; 
 
 public:
 
   CDateAddMonths(); //konstructor
   ~CDateAddMonths(); //destructor
 
   void GetDateAddMonths(char *buf); //vsja stroka
   int GetY(); //znachenija bez atributov
   int GetM();
   int GetD();
 
   int SetY(int); //ustanovit den, mesjaz, god
   int SetM(int);
   int SetD(int);
 
   int SetDateAddMonths(int AY, int AM, int AD); //ustanovit datu
   int SetDateAddMonths(char *buf); //reoloding operations
 
   int SetAsString(); //metod dlya ustanovki isxodnogo dannogo
 };
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
  //DateAddMonths.cpp    
           #include<stdio.h>
    #include<string.h>
    #include<iostream.h>
    #include<stdlib.h>
    #include<conio.h>
    #include"DATEAddS.cpp"
 
 
    int main()
    {
     CDateAddMonths DateMonth1;      //Vizov konstruktora
     clrscr();
     int m_date_year, m_date_months, m_date_day;
     char buf[32];        //zadaet ichodnuy datu, kotoruy budet vidavat
 
     while(1)
     {
        printf("\nPlease, type a date ('q' to exit) [dd.mm.yyyy]: ");
                    scanf("%s",buf);
                    if(!strcmp(buf,"q")) break;
            //v objekt DateMonth1 ustanavlivayt datu iz stroki,
            //kotor zapisana v peremennoi buf
            if(!DateMonth1.SetDateAddMonths(buf))
                {
                             printf("The date You have typed is invalid.\n");
                             continue;     //snova vvesti novuy datu
                }
//   printf("Please, type a date ('t' to exit) [yyyy.mm.dd]:");
 //                 scanf("s",buf);
 
    cout<<DateMonth1.SetAsString();
     !DateMonth1;
 
     DateMonth1.GetDateAddMonths(buf);   //schitaet datu iz objekta v peremennuy buf
                    sprintf(buf,"%c\n");
                 } return 0;
                }
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
99
100
101
102
103
DateAddMonths1.cpp
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include"DateAddM.hpp"
#include<iostream.h>
 
 
    //Konstructor
    CDateAddMonths::CDateAddMonhs()
    { m_date_year=1;
        m_date_month=1;
        m_date_day=1;
 
        //inicialization of massiv
        m_month_days[0]=31;
        m_month_days[1]=28;
        m_month_days[2]=31;
        m_month_days[3]=30;
        m_month_days[4]=31;
        m_month_days[5]=30;
        m_month_days[6]=30;
        m_month_days[7]=31;
        m_month_days[8]=30;
        m_month_days[9]=31;
        m_month_days[10]=30;
        m_month_days[11]=31;
    }
 
    //Destructor
    CDateAddMonths::~CDateAddMonths()
    {}
 
 
    //Metod, beret vsu datu v vide stroki
    void CDateAddMonths::GetDateAddMonths(char *buf)
    {
     sprintf(buf, "%02d.%02d.%04d", m_date_day, m_date_month, m_date_year);
}
 
    int CDateAddMonths::GetD()          //Give number of Day
    { return m_date_day; }
    int CDateAddMonths::GetM()      //Give number of Month
    { return m_date_month; }
    int CDateAddMonths::GetY()      //Give number of Year
    { return m_date_year; }
 
    //Metod ustanovki znachenii
    //Ustanovit srazu vsu datu po nomeru goda,mesaca i dna
    int CDateAddMonths::SetDateAddMonths(int AY,int AM,int AD)
    {
                 return
                    SetY(AY)&&
                    SetM(AM)&&
                    SetD(AD);
    }
 
    //Ustanovit vsu datu iz stroki
    int CDateAddMonths::SetDateAddMonths(char *buf)
    {
                 int y,m,d;
                 sscanf(buf,"%d.%d.%d",&d,&m,&y);
     return SetDateAddMonths(y,m,d);
    }
 
    //Ustanavlivaet denj po ego nomeru
    int CDateAddMonths::SetD(int AD)
                {
     if(AD>=1&&AD<=m_month_days[m_date_month-1])
         { m_date_day=AD;
                         return 1;
                     }
                 else
                         return 0;
    }
 
    //Ustanavlivaet mesac po ego nomeru
    int CDateAddMonths::SetM(int AM)
                {
     if(AM>=1&&AM<=12)
                     { m_date_month=AM;
                         return 1;
                     }
                 else
                         return 0;
    }
 
    //Ustanavlivaet god po rgo nomeru
    int CDateAddMonths::SetY(int AY)
                {
     if(AY>=1&&AY<=9999)
                     {  m_date_year=AY; //uslovie, yavlaeca li god visikosniv
                                                     //ustanavlivaem kol-vo dnei v fevrale
                if(m_date_year%4==0&&m_date_year%100!=0||m_date_year%400==0)
                                 m_month_days[1]=29;    //Visokos
                            else
                                 m_month_days[1]=28;    //Normal
                                     return 1;
         }
     else
        return 0;
    }
// а вот как реализовать, не знаю: Найти дату, которая наступит по прошествии указанного количества месяцев после заданной даты.
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
30.05.2009, 21:05     Классы С++ #9
C++
1
//DateAddMonths.hhp
Жжешь =)

Добавлено через 1 минуту 18 секунд
А ты пишешь не в Microsoft VS что ли ?
Sir-Aragon
328 / 11 / 2
Регистрация: 28.10.2008
Сообщений: 76
30.05.2009, 21:07  [ТС]     Классы С++ #10
Цитата Сообщение от Search.. Посмотреть сообщение
Жжешь =)
))
в Borland C++
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
30.05.2009, 21:08     Классы С++ #11
А йа в MS Visual Studio...
Sir-Aragon
328 / 11 / 2
Регистрация: 28.10.2008
Сообщений: 76
30.05.2009, 21:10  [ТС]     Классы С++ #12
рад за тебя, так ты знаешь как это реализовать!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2009, 05:22     Классы С++
Еще ссылки по теме:

классы - C++
здравствуйте. помогите, пожалуйста, доделать программу. #include &lt;iostream.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #include...

Классы в С++ - C++
Всем доброго времени суток. По ООП дали такое задание: Разработать представление целого положительного числа, представленного в виде...

КЛАССЫ - C++
Очень нужна помощь!!! подскажите где ошибки: #include &lt;iostream&gt; #include &lt;windows.h&gt; char* Rus(const char* text); using...

Классы - C++
Всем доброго времени суток, кто поможет реализовать след пункты: -конструктор без аргументов: -конструктор инициализации: ...

Классы - C++
Объясните новичку , зачем нужны классы. Вкратце , я знаю что тема расширная , но хотя бы объяснить для чего нужны они?


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

Или воспользуйтесь поиском по форуму:
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
31.05.2009, 05:22     Классы С++ #13
Знаю, но хочу сейчас фильм посмотреть. Если хочешь, после фильма попытаюсь написать эту прогу. Если получится, то выложу код =)

Добавлено через 8 часов 4 минуты 53 секунды
Блин. Смотрел телик и заснул =)
Вот, написал я эту прогу:

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
#include <stdio.h>
 
class CDateAddMonths
{
public:
    void SetAsString(int y, int m, int d)
    {
        m_date_year = y;
        m_date_month = m;
        m_date_day = d;
    }
 
    void AddMonths(int sm)
    {
        int montht[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        int x = 0;
 
        for(; sm >= 1; sm--)
        {
            x += montht[sm];
        }
 
        for(month[m_date_month] = m_date_day; month[m_date_month] <= x; month[m_date_month]++) //дни в месяце
        {
            if(month[m_date_month] == montht[m_date_month])
            {
                printf("one\n");
                x -= montht[m_date_month];
                ++m_date_month;
                month[m_date_month] = 0;
                if(m_date_month == 12)
                {
                    m_date_month = 0;
                    ++m_date_year;
                }
            }
        }
        m_date_day = month[m_date_month];
 
    }
 
    int GetAsYear() const {return m_date_year;}
    int GetAsMonth() const {return m_date_month;}
    int GetAsDay() const {return m_date_day;}
private:
    int month[12];
    int m_date_year;
    int m_date_month;
    int m_date_day;
};
 
int main(int argc, char * argv [])
{
    int d, m, y, am;
    printf("Please enter Day:Month:Year: ");
    fscanf_s(stdin, "%d %d %d", & d, & m, & y);
 
    CDateAddMonths calc;
    calc.SetAsString(y, m, d);
 
    printf("Please enter Months: ");
    scanf_s("%d", & am);
    calc.AddMonths(am);
 
    printf("Date Now: %d : %d : %d\n", calc.GetAsDay(), calc.GetAsMonth(), calc.GetAsYear());
 
    return 0;
}
Написал в Microsoft Visual Studio 2005.

Не по теме:

Такую песню прикольную нашел. Советую послушать. Исполнитель: Natalie Imbruglia Песня: Torn

Yandex
Объявления
31.05.2009, 05:22     Классы С++
Ответ Создать тему
Опции темы

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