Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 30.11.2013
Сообщений: 2
1

Расчет дня недели по дате, исправьте ошибки

30.03.2014, 01:04. Показов 1470. Ответов 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
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
#include <iostream>
#include <Windows.h>
#include "StdAfx.h"
using namespace std;
void main()
{
    setlocale(LC_ALL,"russian");
   int d,m,Y,c;
 
 
   cout << " Введите день: ";
   cin >> day;
   cout << "Введите месяц: ";
   cin >> month;
   cout << " Введите год: ";
   cin >> year;
   d=day;
   if (month<2) m=month+10;
   else m=month-2;
   c=abs(year/100)+1;
   Y=year-((abs(year/100))*100);
 
 
    int numberOfDay = abs(d+(1/5*(13*m-1))+Y+abs(Y/4+c/4-2*c+777))mod7;
 
    switch (numberOfDay % 7) 
    {
        case 1:
            cout << "Понедельник\n";
            break;
 
        case 2:
            cout << "Вторник\n";
            break;
        case 3:
            cout << "Среда\n";
            break;
        case 4:
            cout << "Четверг\n";
            break;
        case 5:
            cout << "Пятница\n";
            break;
        case 6:
            cout << "Субота\n";
            break;
        case 7:
            cout << "Воскресение\n";
            break;
        
 
        default: 
            break;
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2014, 01:04
Ответы с готовыми решениями:

Вычисление дня недели по дате
здравствуйте. как можно вычислить день недели по дате? слышала про формулу Зеллера, но там мало...

Определение дня недели по дате
Помогите найти ошибку. Работает, но не корректно. Определяет не тот день. #include&lt;stdio.h&gt;...

Определение дня недели по дате
Помогите исправить, неправильно находит день недели. int date_day::true_day() const { ...

Определение дня недели по введенной дате
Доброго времени суток! Программу я составил, вводишь день,месяц и год, и день недели она выдаёт. Но...

8
11 / 11 / 7
Регистрация: 29.03.2014
Сообщений: 61
30.03.2014, 01:29 2
1)ты не инициализировала day, month, year, переменные в которые ты с экрана что-то вводишь.
2) mod в с++ пишется %
3) и не забывай писать в конце system("pause") если хочешь видеть как твоя прога что-то выводит., а не просто выполняется.
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
#include <iostream>
#include <Windows.h>
 
using namespace std;
 
void main()
{
    setlocale(LC_ALL,"russian");
   int d,m,Y,c;
    int day,month,year;
 
   cout << " Введите день: ";
   cin >> day;
   cout << "Введите месяц: ";
   cin >> month;
   cout << " Введите год: ";
   cin >> year;
   d=day;
   if (month<2) m=month+10;
   else m=month-2;
   c=abs(year/100)+1;
   Y=year-((abs(year/100))*100);
 
 
    int numberOfDay = abs(d+(1/5*(13*m-1))+Y+abs(Y/4+c/4-2*c+777))%7;
 
    switch (numberOfDay % 7) 
    {
        case 1:
            cout << "Понедельник\n";
            break;
 
        case 2:
            cout << "Вторник\n";
            break;
        case 3:
            cout << "Среда\n";
            break;
        case 4:
            cout << "Четверг\n";
            break;
        case 5:
            cout << "Пятница\n";
            break;
        case 6:
            cout << "Субота\n";
            break;
        case 7:
            cout << "Воскресение\n";
            break;
        
 
        default: 
            break;
    }
    system("pause");
}
0
0 / 0 / 0
Регистрация: 14.03.2014
Сообщений: 2
30.03.2014, 01:30 3
Вот Вам рабочий код:
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
#include <iostream>
 
void main()
{
    setlocale(LC_ALL, "RUS");
 
    int d, m, Y, c;
    int day, month, year;
 
    std::cout << " Введите день: ";
    std::cin  >> day;
    std::cout << " Введите месяц: ";
    std::cin  >> month;
    std::cout << " Введите год: ";
    std::cin  >> year;
 
    d = day;
    if (month < 2) { m = month + 10;}
    else           { m = month - 2 ;}
    c = abs(year / 100) + 1;
    Y = year - ((abs(year / 100)) * 100);
 
 
    int numberOfDay = ( abs(d + (1 / 5 * (13 * m - 1)) + Y + abs(Y / 4 + c / 4 - 2 * c + 777)) );
 
    switch (numberOfDay % 7)
    {
    case 1:
        std::cout << "Понедельник\n";
        break;
 
    case 2:
        std::cout << "Вторник\n";
        break;
    case 3:
        std::cout << "Среда\n";
        break;
    case 4:
        std::cout << "Четверг\n";
        break;
    case 5:
        std::cout << "Пятница\n";
        break;
    case 6:
        std::cout << "Суббота\n";
        break;
    case 7:
        std::cout << "Воскресение\n";
        break;
    default:
        break;
    }
 
    system("pause");
    return;
}
Что я сделал:
1. Создал пустой проект, поестил в него Ваш код.
2. Убрал ненужные библиотки ускорения компиляции заголвка и "windows", вместо указания лобального пространства имён, я указываю его локально (std:.
3. Чуток подправил разметку, обьявил необьявлённые ранее переменные и переписал вашу формулу.
П.С. Суббота пишется с двумя "б"
0
IrineK
30.03.2014, 02:02
  #4

Не по теме:

Тут не только суббота.
Воскресение и воскресенье - не одно и то же.

0
11 / 11 / 7
Регистрация: 29.03.2014
Сообщений: 61
30.03.2014, 02:05 5
Не по теме:
А я то думал мы тут с++ дебажим, а не ошибки грамматические исправляем
0
IrineK
30.03.2014, 02:12
  #6

Не по теме:

По опыту (оч долговременному) ошибки в языках алгоритмических и человеческих странным образом коррелируют.

0
11 / 11 / 7
Регистрация: 29.03.2014
Сообщений: 61
30.03.2014, 02:17 7
Не по теме:
Спорить с опытом не имею права.
0
IrineK
30.03.2014, 02:19
  #8

Не по теме:

Право имеешь.
Но - бесполезно 8-)

Все - завязываем с оффтопом.

0
MastAKK
30.03.2014, 02:20     Расчет дня недели по дате, исправьте ошибки
  #9

Не по теме:

YDS, для оффтопа есть кнопочка OFF сверху ;)

0
30.03.2014, 02:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2014, 02:20
Привет! Вот еще темы с ответами:

Алгоритм вычисления дня недели по дате
Посдкажите алгоритм вычисления дня недели по дате( день, месяц, год). int a = (14 - month)/12;...

Определение по дате дня недели
Есть задание, написать простейший класс. Всё более-менее представляю, как реализовать, но вот как...

Определение следующего дня и дня недели по дате
На страницах форума нашел программу на паскале, мне нужна помощь в ее переводе на язык С....

Вычисление дня недели по дате
Необходимо реализовать данную процедуру на Scheme (диалекте Lisp): Определите...

Определение дня недели по дате
Здравстуйте. Частью моего задания является написать &quot;функцию MH(d) для определения дня недели, на...

Определение дня недели по дате
Your birthday. On which day of the week were you born? In a 400-year Gregorian calendar cycle,...


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

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

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