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

Не считается день недели, исправить код - C++

Восстановить пароль Регистрация
 
Алексей123456
3 / 3 / 0
Регистрация: 11.05.2013
Сообщений: 56
22.04.2014, 08:08     Не считается день недели, исправить код #1
Подскажите почему не считает день недели?Вроде пишет ошибок нет, но программа не работает

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
#include <iostream>
#include <stdio.h>
using namespace std;
class Data 
{
    protected: int d,m,year;
    public:  Data()
    {
    cin>> d >> m >> year;
    }
    void Print()
    {
        cout<< "Data: " << d << "."<<m << "."<<year<<endl;
    }
};
class DN: public Data
{
private: int q,n,r,wd,s,y; char *days[];
public: 
DN():Data()
{q=d,n=m ,r=year;}
void opr()
{if (n<3){n+=12;r--;}
s=r/100, y=r%100, wd=((n+1)*26/10+d+y+y/4+s/4+2*s)%7;
  char *days[]={"Sat","Sun","Mon","Tue","Wed","Thu","Fri"};}
    void  Prin()
    {Data::Print();
    printf ("\n%s",days[wd]);}
    };
    int main()
    {DN D;
    D.opr();
    D.Prin();
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,536
22.04.2014, 08:33     Не считается день недели, исправить код #2
Ввод/вывод работает и результат неверный или совсем ничего не работает?
Алексей123456
3 / 3 / 0
Регистрация: 11.05.2013
Сообщений: 56
22.04.2014, 08:43  [ТС]     Не считается день недели, исправить код #3
Ввод вывод самой даты работает, не считает день недели...пишет значение null
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.04.2014, 09:03     Не считается день недели, исправить код #4
C++
1
char *days[] = {"Sat","Sun","Mon","Tue","Wed","Thu","Fri"};
Вот этот массив у вас локальный, и не имеет никакого отношения к полю класса, поэтому Prin() не видит этот массив. Для начала сделайте его глобальным и уберите одноимённое поле класса.
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,536
22.04.2014, 09:09     Не считается день недели, исправить код #5
Да, убери его из класса и поставь после using namespace std;
День недели всё равно не верно определяет. Ты где формулу брал? Читай тут http://ru.wikibooks.org/wiki/%D0%90%...B5%D0%BB%D0%B8
Алексей123456
3 / 3 / 0
Регистрация: 11.05.2013
Сообщений: 56
22.04.2014, 09:15  [ТС]     Не считается день недели, исправить код #6
Спасибо,только не могу понять что значит одноименное поле класса? и как глобальным сделать, подскажите если не сложно

Добавлено через 1 минуту
нет, код я брал на сайте, он был рабочий и верно определял...я проверял, только на компиляторе старом

Добавлено через 3 минуты
Спасибо, исправил, работает, только алгоритм действительно не правильно считает
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,536
22.04.2014, 09:16     Не считается день недели, исправить код #7
Так работает, но день неверный.
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
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
char *days[]={"Sat","Sun","Mon","Tue","Wed","Thu","Fri"};
 
 
class Data
{
    protected: int d,m,year;
    public: Data()
    {
        cin>> d >> m >> year;
    }
void Print()
{
    cout<< "Data: " << d << "."<<m << "."<<year<<endl;
}
};
 
class DN: public Data
{
    private: int q,n,r,wd,s,y; 
    public:
    DN():Data() {q=d, n=m, r=year;}
    void opr()
    {
        if (n<3) { n+=12; r--;}
        s=r/100, y=r%100, wd=((n+1)*26/10+d+y+y/4+s/4+2*s)%7;
        
    }
    void Prin()
    {
        Data::Print();
        printf ("\n%s",days[wd]);
    }
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    DN D;
    D.opr();
    D.Prin();
 
    system("pause");
 
    return 0;
}
Алексей123456
3 / 3 / 0
Регистрация: 11.05.2013
Сообщений: 56
22.04.2014, 09:24  [ТС]     Не считается день недели, исправить код #8
Спасибо)только вот мой бедовый компилятор не воспринимает stdafx
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.04.2014, 09:29     Не считается день недели, исправить код #9
Цитата Сообщение от Алексей123456 Посмотреть сообщение
только вот мой бедовый компилятор не воспринимает stdafx
Уберите.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 09:30     Не считается день недели, исправить код
Еще ссылки по теме:

Определить день недели с датой D и M, если W - день недели первого января C++
C++ Двумерный массив. Неправильно считается сумма. Как исправить?
C++ Создайте класс «Дата» со свойствами год, високосный год, месяц, день месяца и день недели

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

Или воспользуйтесь поиском по форуму:
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,536
22.04.2014, 09:30     Не считается день недели, исправить код #10
Это шаблон VS 2012. Исправь под свою среду.
Yandex
Объявления
22.04.2014, 09:30     Не считается день недели, исправить код
Ответ Создать тему
Опции темы

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