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

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

Войти
Регистрация
Восстановить пароль
 
Lenka!
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 3
#1

Календарь С++, вывод по строкам - 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2013, 21:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Календарь С++, вывод по строкам (C++):

Вывод массива по строкам - C++
Вывести заданный массив на печать в несколько строк таким образом, что бы каждая новая строка, начиная со второй начиналась с четного...

Вывод массива с числами по строкам - C++
Доброго времени суток.Как вывести массив с числами что бы в каждой строке было по n чисел? Заранее спасибо!

Календарь. Ввод даты - вывод дня недели - C++
Здрасте , помогите написать ф-ю. Ввожу 4.11.2014 , программа выдает &quot;Вторник&quot; спасибо большое

Массив: Условия ввода: по столбцам, Условия вывода: по строкам в виде таблицы. Написать исходную матрицу и вывод массива по строкам. - Pascal
Есть массив B размерностью 5x5, тип данных real, Условия ввода: по столбцам, Условия вывода: по строкам в виде таблицы. Написать исходную...

вывод в QWebView по строкам - C++ Qt
Есть кусочик кода, выводит на QWebView текст из файла, каждый раз когда выводится в панельку новая строка, окно обновляется и предыдущая...

Вывод информации в textbox по строкам - C#
Привет всем! Пишу программу (лаунчер),всё написал,а одного понять не могу. У меня есть файл config.ini,в котором написаны 2 значения...

1
Байт
Нарушитель
Эксперт C
16679 / 10941 / 1679
Регистрация: 24.12.2010
Сообщений: 21,329
09.12.2013, 22:04 #2
Lenka!, Пользуйся тегами кода. Иначе никто не поймет и читать не будет. И имей в виду, что эта задача должна решаться кодом в 15-20 строк.

Добавлено через 2 минуты
Грубые ошибки уже в первой десятке строк. Дальше не читал. Да и никто не будет.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2013, 22:04
Привет! Вот еще темы с ответами:

Вывод в Memo по словам, а не по строкам - Delphi
привет форумчане!!! при процедуре рrocedure TForm1.Button1Click Memo1.Lines.LoadFromFile загружается весь файл при процедуре ...

Календарь и вывод времени года и №недели - Delphi
Как сделать чтобы программа выдавала следующий результат Май 1 время года – весна номер недели – 1 Июнь 20 время года – лето ...

Вывод отчета по строкам из таблицы с возможностью выбора - MS Access
Привет, нужна помощь, суть в следующем цитата:  Для любой/выбранной публикации организовать вывод ее библиографического описания...

Дать описание фрагмента программы, обеспечивающей вывод и ввод элементов матрицы А(к,к) по строкам - Turbo Pascal
дать описание фрагмента программы, обеспечивающей вывод и ввод элементов матрицы А(к,к) по строкам. Данные вводятся с клавиатуры.


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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