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

Классы!Строки!Моделирование! - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ ОБРАБОТКА СИМВОЛЬНОЙ ИНФОРМАЦИИ В С++ http://www.cyberforum.ru/cpp-beginners/thread297066.html
помогите, написать код программы, экзамен скоро, очень надо. Нужно определить количество слов, начинающихся с буквы "c"
C++ Комбинированный тип. Тип запись Тип запись typedef.. Прошу помочь с основными операциями над структурами, желательно без указателей. Интересует поиск, выбор, вывод.. да и от куска кода не откажусь :) Задание: Определите, имеется ли книга с названием «Информатика»; если да, то сообщите фамилию автора и год издания книги, если таких книг несколько, то сообщите количество таких книгах. Прошу прощение задание на синтаксисе... http://www.cyberforum.ru/cpp-beginners/thread297047.html
C++ посчитать количество слов
я все вроде написал, но надо еще что то написать если между словами по несколько пробелов, а то сейчас он лишние слова в таком случае считает, помогите пожалуйсто... #include "stdafx.h" #include <iostream> void main() { setlocale(0,"rus"); char s; int i,j,dlina,dlinaSlova,kolichestvo=0,max=0,konecSlova; printf("Введите текст с '.' в конце: "); gets(s);
C++ Функции-Шаблоны в С++
Как с помощью функций-шаблонов подсчитать сумму элементов, расположенных на побочной диагонали?
C++ Заполнение Квадратной Матрицы http://www.cyberforum.ru/cpp-beginners/thread296954.html
Привет Всем ;) Помогите плиз с простенькой прогой , у самого не получается =( Задание: Получить квадратную матрицу, порядка n . | n 0 0 0| |(n-1) n 0 0| |(n-2) (n-1) n 0| |........................|
C++ Программа отказывается сохранять ответ в файл У меня есть прога и меню к ней, так вот вся программа работает, кроме пункта сохранить в файл. Жмешь сохранить файл но ничего не сохраняется. Что делать? Вот код: #include<iostream> #include<fstream> #include<cstring> using namespace std; void main () { setlocale (LC_ALL,"Russian"); cout<<"1. Ввод с клавиатуры"<<endl; подробнее

Показать сообщение отдельно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
17.05.2011, 15:59     Классы!Строки!Моделирование!
Цитата Сообщение от Malin Klein Посмотреть сообщение
Создать класс для хранения календарных дат. Обеспечить возможность работы с датами в раз-личных форматах, изменения даты на заданное количество дней. Перегрузить операцию «–» для нахождения разности дат и операции сравнения. Для класса определить оператор <<. Стандартные функции и типы С для работы с датами не использовать.
Вобщем смотри: во первых я не совсем понял суть фразы "возможность работы с датами в различных форматах", поэтому этого я не сделал. Во вторых не сказано в каком виде выводить разность дат, поэтому я сделал в виде "N дней M месяцев K лет". Ввод даты числами, вывод осуществляется так: день - числом; месяц - словом; год - естественно числом.
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <iostream>
class Date{
private:
    bool leapyear;
    int day;
    int month;
    int year;
    bool leap(int)const;
    int maxday()const;
public:
    Date(int d,int m,int y):leapyear(leap(y)),day(d),month(m),year(y){};
    Date& operator+=(int);
    Date& operator-=(int);
    std::string operator-(Date&)const;
    bool operator==(Date&)const;
    friend std::ostream& operator<<(std::ostream&, const Date&);
};
bool Date::leap(int y)const{ 
    return ((y % 4 == 0 && y% 100 != 0) || y % 400);
}
int Date::maxday()const{
    int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    if(leapyear)days[1]=29;
    return days[month-1];
}
Date& Date::operator+=(int d){
    if(day+d>maxday()){
        d-=maxday()-day;
        if(++month>12){
            month=1;
            year++;
        }
        while(d/maxday()){
            if(++month>12){
                month=1;
                year++;
            }
            d-=maxday();
        }
        day=d;
    }
    else day+=d;
    return *this;
}
Date& Date::operator-=(int d){
    if(day-d<1){
        d-=day;
        if(--month==0){
            month=12;
            year--;
        }
        while(d/maxday()){
            d-=maxday();
            if(--month==0){
                month=12;
                year--;
            }
        }
        day=maxday()-d;
    }
    else day-=d;
    return *this;
}
#include <sstream> //stringstream       
std::string Date::operator-(Date &dt)const{
    int d,m,y;
    if(year>=dt.year){
        y=year-dt.year;
        if(month>dt.month){
            m=month-dt.month;
            d=day+dt.maxday()-dt.day;
            if(d>dt.maxday())d-=dt.maxday();
            else --m;
            --y;
        }
        else {
            m=12-month+dt.month;
            d=dt.day+maxday()-day;
            if(d>maxday())d-=maxday();
            else --m;
        }
    }
    else {
        y=dt.year-year;
        if(month>dt.month){
            m=12-month+dt.month;
            d=day+dt.maxday()-dt.day;
            if(d>dt.maxday())d-=dt.maxday();
            else --m;
            --y;
        }
        else {
            m=dt.month-month;
            d=maxday()-day+dt.day;
            if(d>maxday())d-=maxday();
            else --m;
        }
    }
    std::string s;
    std::stringstream ss;
    ss<<d<<" days "<<m<<" month "<<y<<" years";
    getline(ss,s);
    return s;
}
bool Date::operator==(Date& dt)const{
    return day==dt.day && month==dt.month && year==dt.year;
}
std::ostream& operator<<(std::ostream &os, const Date &dt){
    std::string m[]={"January","February","March","April","May","June","July","August","September","October","November","December"};
    os<<dt.day<<" "<<m[dt.month-1]<<" "<<dt.year;
    return os;
}   
    
int main(){
    int d,m,y,reduce,increase;
    std::cout<<"Enter first date (day month year): ";
    std::cin>>d>>m>>y;
    Date date(d,m,y);
    std::cout<<"Date = "<<date<<std::endl;
    std::cout<<"reduce  date by : ";//уменьшить дату на столько то дней
    std::cin>>reduce;
    date-=reduce;
    std::cout<<"Date = "<<date<<std::endl;
    std::cout<<"Increase date by : ";//увеличить дату 
    std::cin>>increase;
    date+=increase;
    std::cout<<"Date = "<<date<<std::endl;
    std::cout<<"Enter second date (day month year): ";
    std::cin>>d>>m>>y;
    Date date2(d,m,y);
    std::cout<<"Date2 = "<<date2<<std::endl;
    std::cout<<"Dates are "<<(date==date2 ? "equal":"not equal")<<std::endl;
    std::cout<<"Date1 - Date2 = "<<date-date2<<std::endl;
    return 0;
}
 
Текущее время: 08:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru