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

Определить день недели по дате - C++

Восстановить пароль Регистрация
 
Тима
0 / 0 / 0
Регистрация: 06.10.2015
Сообщений: 59
05.11.2015, 13:49     Определить день недели по дате #1
Здравствуйте,в универе дали такое задание. Сделать программу в С++ builder. "составить программу определяющую день недели по дате". Помогите пожалуйста с идеей как это сделать.Я взял промежуток с 1900 по 2100 год.
Я могу определить високосный это год или нет:
C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream.h> 
#include<stdio.h> 
#include<conio.h> 
#include<math.h> 
void main(void) 
{ 
int a,b,c,d 
cout«"Vvedite daty s 1900 po 2100(year.month.day)"«endl; 
cin»a»b»c; //высокосный 366 дней 
d=1900; 
a1=(a-d)%4 //При значении 0 год высокосный
Но дальше как действовать не имею понятия,я думаю,хорошо бы было сделать чтобы определялось общее кол-во дней,и делилось на 7,т.е так я смогу найти нужный день недели.
Поясните пожалуйста,как это сделать?
Буду очень благодарен.

И ещё: If,else,case,switch использовать НЕЛЬЗЯ

Можно использовать условную операцию (Выражение 1) ? (Выражение 2) : (Выражение 3); и math.h
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2015, 13:49     Определить день недели по дате
Посмотрите здесь:

C++ программа которая по дате находит день недели на который эта дата приходится
C++ Как в программе определить день недели?
C++ Для к-го дня года определить день недели
C++ Составить программу, которая в диалоге с пользователем по вводимой дате текущего месяца выдаёт день недели
C++ Вводится номер месяца М и дня Д. Определить день недели с датой М и Д
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fallenworld
75 / 75 / 9
Регистрация: 14.04.2014
Сообщений: 408
05.11.2015, 13:59     Определить день недели по дате #2
пилишь класс дата с оператором > и - возвращающим кол-во дней. делаешь константой дату любого понедельника(ну или любого дня). затем берешь модуль разности, с помощью a>b? a-b:b-a. А да, массив строк с днями. По индексу вытаскиваешь итоговый день)

попожя закину код, самому интересно стало.
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,340
05.11.2015, 14:16     Определить день недели по дате #3
Цитата Сообщение от Тима Посмотреть сообщение
"составить программу определяющую день недели по дате"
Формула где-то на странице...

Добавлено через 7 минут
Цитата Сообщение от Тима Посмотреть сообщение
Я могу определить високосный это год или нет:
Сочувствую, но не можешь.
Например, 1900 год не был високосным.
Тима
0 / 0 / 0
Регистрация: 06.10.2015
Сообщений: 59
05.11.2015, 15:17  [ТС]     Определить день недели по дате #4
Не могу определить где ошибка,но оно выводит в конце концов дни,но жаль только что не те,например если использовать сегодня то выдаст значение 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream.h> 
#include<stdio.h> 
#include<conio.h> 
#include<math.h> 
void main(void) 
{ 
int d,m,y,c,day; 
cout«"Vvedite daty(vek.year.month.day)"«endl; 
cin»c»y»m»d; 
y=y%100; 
day=(d+m+y+(y/4)+c)%7; 
cout«day; 
getch(); 
}
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,167
Завершенные тесты: 1
05.11.2015, 15:27     Определить день недели по дате #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Тима, А почему у Вас такие странные символы(«)?
Должно быть 2 знака >> или <<
И все не так просто
ВЫЧИСЛЕНИЕ ДНЯ НЕДЕЛИ ПО ДАТЕ
Рассмотрим сначала четыре основных параметра для расчетов.

Возьмем дату — 20.11.1957 года

1. Индекс года:

Годовой индекс рассчитывается таким образом, что две последние цифры года делятся на 12. Например, из года 1957 берется число 57. Это число де*лится на 12, получается 4 и 9 в остатке.

Остаток делится на 4. В нашем при*мере получается остаток 9, который при делении на 4 дает 2 и 1 в остатке, однако здесь остаток не учитывается.

Три полученных числа складываются. Итак, 4 плюс 9 плюс 2, получится 15.



2. Индекс месяца:

Каждому месяцу присваивается свой индекс, который просто нужно запомнить.

Месяц | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |

———————————————————————————-

Индекс | 6 | 2 | 2 | 5 | 0 | 3 | 5 | 1 | 4 | 6 | 2 | 4 |



3. Индекс века:

Для годов, начинающихся с «одна тысяча девятьсот…» прибавляется + 1

Для годов, начинающихся с «две тысячи…» ничего не прибавляется



4. Индекс високосного года:

Еще есть дополнительное правило для високосных годов, которые можно уз*нать по тому, что две последние цифры года без остатка делятся на 4.

Если исход*ная дата относится к январю или февралю високосного года, тогда из итогового числа необходимо отнять – 1


Рассмотрим несколько конкретных примеров.

1. Вычислим день недели для даты 20.11.1957 года

Сложим все индексы:

Индекс года — 15 (4+9+2)

Индекс месяца – 2

Просто дата – 20

Индекс века — 1

Итак, 15 плюс 2 плюс 20 плюс 1, получится 38.

Результат делится на 7, в нашем случае 38 делить на 7 равно 5 и 3 в ос*татке.

Неделя начинается с понедельника, это число 1, а число 3 соответствует среде.

Итого: 20.11.1957 года – это среда.

Подробнее: http://rusoul.ru/vychislenie-dnia-nedeli-po-date/
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,340
05.11.2015, 15:35     Определить день недели по дате #6
Цитата Сообщение от Тима Посмотреть сообщение
Не могу определить где ошибка
Дай пример того, как ты вводишь "сегодня".

Добавлено через 4 минуты
Цитата Сообщение от Тима Посмотреть сообщение
например если использовать сегодня то выдаст значение 5
Это правильный ответ. Ты просто не дочитал описание формулы.
"If the result is 0, the date was a Saturday; if 1 it was a Sunday, and so on through the week until 6 = Friday."
5=Четверг
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2015, 16:46     Определить день недели по дате
Еще ссылки по теме:

Определить день недели с датой D и M, если W - день недели первого января C++
Определить день недели с датой D и M C++
C++ Программы разветленной структуры: определить день недели с датой D и M

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

Или воспользуйтесь поиском по форуму:
MicM
 Аватар для MicM
820 / 487 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
05.11.2015, 16:46     Определить день недели по дате #7
Определить день недели по дате.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
 
using std::cout;
using std::cin;
 
namespace dt = boost::gregorian;
 
int main()
{
        int year, month, day;
        cout << "Year: "; cin >> year;
        cout << "Month: "; cin >> month;
        cout << "Day: "; cin >> day;
        dt::date dt (year, month, day);
        cout << "Day of week: " << dt.day_of_week() << "\n";
}
Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <Poco/DateTime.h>
 
using std::cout;
using std::cin;
 
int main()
{
        int year, month, day;
        cout << "Year: "; cin >> year;
        cout << "Month: "; cin >> month;
        cout << "Day: "; cin >> day;
        Poco::DateTime dt (year, month, day);
        cout << "Day of week: " << dt.dayOfWeek() << "\n";
}
Yandex
Объявления
05.11.2015, 16:46     Определить день недели по дате
Ответ Создать тему
Опции темы

Текущее время: 05:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru