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

Календарь С++, вывод по строкам - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать динамический массив объектов, инициализировать его http://www.cyberforum.ru/cpp-beginners/thread1035033.html
Создать динамический массив объектов, инициализировать его. Организовать поиск элемента в массиве по заданному значению. Создать иерархии наследования: студент, сотрудник - практикант.
C++ Работа с файлами Дан файл f, содержащий сведения о веществах: указывается название вещества, его удельный вес и проводимость (проводника, полупроводник, изолятор). Найти удельные веса и названия всех полупроводников.... http://www.cyberforum.ru/cpp-beginners/thread1035019.html
Нужно чтобы за 1 секунду пользователь либо нажал либо нет любую клавишу клавиатуры C++
Нужно чтобы за 1 секунду пользователь либо нажал либо нет любую клавишу клавиатуры. Как реализовать?
C++ Определить одномерный массив из N вещественных чисел и вычислить
Определить одномерный массив из N вещественных чисел и вычислить: 1) минимальный элемент массива; 2) сумму элементов массива, расположенных правее последнего отрицательного элемента; 3)...
C++ преобразование и построение матриц http://www.cyberforum.ru/cpp-beginners/thread1034981.html
В файле “input.txt” задана квадратная матрица А размером n × n. В первой строке файла указан размер n, а в следующих строках файла – значения элементов матрицы по строкам. Построить n мерный вектор...
C++ Определить есть ли в массиве одинаковые строки Дан двумерный массив A размера m x n. Определить, есть ли в A одинаковые строки. Кто может помочь? Вот бред моего производства... #include <cstdlib> #include <iostream> using namespace std; int... подробнее

Показать сообщение отдельно
Lenka!
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 3

Календарь С++, вывод по строкам - C++

09.12.2013, 21:37. Просмотров 298. Ответов 1
Метки (Все метки)

Задание: На вход подается год и количество столбцов, в которые нужно вывести календарь.

У меня получается только в 1 столбец, и еще проблема, выводит 8 дней в неделю.
С нетерпением жду вашей помощи, заранее спасибо^^.
Вот мой код.

"Date.h"
#ifndef _DATE__H
#define _DATE__H
#include <time.h>
#include <iomanip>
#include <iostream>

using namespace std;
enum Month{
January = 1, February, March, April, May, June,
July, August, September, October, November, December,
};

enum Days{
Mon = 1, Tue, Wed, Thu, Fri, Sat, Sun,
};

class Date{
private:
int d;
int m;
int y;
public:
Date(int d, int m, int y){
this->d = d;
this->m = m;
this->y = y;
}

Date(const Date & date){
* this = date;
}
~Date(){
cout << this->d << this->m << this->y;
}

Date & operator=(const Date & date);
bool IsLeapYear(int year);
int numOfDaysInMonth(int, bool);
int WhatDay(Date date);
void printMonth(int);
void printDayWeeks();
void printDays(int, int);
void skip(int);
};
#endif

"Date.cpp"

#include "Date.h"
using namespace std;

int Date::WhatDay(Date date){
const int dayInWeek = 7;
const int montInYear = 12;
int a = (14 - date.m) / montInYear;
int yy = date.y - a;
int mm = date.m + montInYear * a - 2;
int d = (7000 + (date.d + yy + yy / 4 - yy / 100 + yy / 400 + (31 * mm) / montInYear)) % dayInWeek;
return d;
}

Date & Date::operator=(const Date & date){
d = date.d;
m = date.m;
y = date.y;
return *this;
}
bool Date::IsLeapYear(int year){
return (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0));
}


int Date::numOfDaysInMonth(int m, bool leap){
const char* ERROR = "Error in Month";
if (1 == m) return (31);
if (2 == m) if (leap) return (29); else return (28);
if (3 == m) return (31);
if (4 == m) return (30);
if (5 == m) return (31);
if (6 == m) return (30);
if (7 == m) return (31);
if (8 == m) return (31);
if (9 == m) return (30);
if (10 == m) return (31);
if (11 == m) return (30);
if (12 == m) return (31);
else if ((m < 1) || (m > 12))
cout << ERROR;
return 0;
}

void Date::skip(int i){
while(i > 0){
cout << " ";
i--;
}
}





void Date::printMonth(int m){
if(1==m){skip(8); cout << "January"; skip(7); cout << endl;}
if(2==m){skip(8); cout << "February"; skip(6); cout << endl;}
if(3==m){skip(10); cout << "March"; skip(7); cout << endl;}
if(4==m){skip(10); cout << "April"; skip(7); cout << endl;}
if(5==m){skip(11); cout << "May"; skip(8); cout << endl;}
if(6==m){skip(10); cout << "June"; skip(8); cout << endl;}
if(7==m){skip(10); cout << "July"; skip(8); cout << endl;}
if(8==m){skip(8); cout << "August"; skip(6); cout << endl;}
if(9==m){skip(7); cout << "September"; skip(6); cout << endl;}
if(10==m){skip(8); cout << "October"; skip(7); cout << endl;}
if(11==m){skip(8); cout << "November"; skip(6); cout << endl;}
if(12==m){skip(8); cout << "December"; skip(6); cout << endl;}
}

void Date::printDayWeeks(){
cout << " MO TU WE TH FR SA SU " << endl;
}

void Date::printDays(int numDays, int weekDay){
skip(2*weekDay);
int day = 1;
while(day <= numDays){
cout << setw(2) << day << " ";
if (weekDay == 7){
cout << endl;
weekDay = 0;
}
else weekDay++;
day++;

}
cout << endl;
}

"main.cpp"
#include "Date.h"


using namespace std;

int main(){
const char* error1 = "Not enough arguments";
const char* error2 = "Many arguments";

int year = 2014;
int columns = 2;

int currentMonth = 1;
bool leap;
int firstDayInCurrentMonth;
int numDays;

Date date(1, January, year);
leap = date.IsLeapYear(year);
firstDayInCurrentMonth = date.WhatDay(date);

while (currentMonth <= 12){
numDays = date.numOfDaysInMonth(currentMonth, leap);
date.printMonth(currentMonth);
date.printDayWeeks();
date.printDays(numDays, firstDayInCurrentMonth);
currentMonth++;
}
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.