Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 10.09.2015
Сообщений: 7
1

Определить, когда в последний раз день рождения Н. Некрасова выпадал на субботу

20.12.2015, 01:58. Показов 1923. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
М. Некрасов родился 10 декабря 1821 г. Когда в последний раз день рождения М. Некрасов выпадал на субботу, если известны текущая дата d.m.g?
Помогите написать код, не могу понять как выполнить это задание.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2015, 01:58
Ответы с готовыми решениями:

Определить день, когда первый раз температура поднялась выше нуля
В массиве содержаться результаты измерений температуры воздуха, которые проводились ежедневно в...

Заданы день и месяц рождения, а также текущие день, месяц и год. Определить, сколько дней осталось до дня рождения
заданы день и месяц рождения, а также текущие день, месяц и год. Определить, сколько дней осталось...

Сколько раз день рождения придётся на тот же самый день недели в течение 200 лет?
цикл по количеству лет. Допустим, нам надо узнать, сколько раз наш день рождения придётся на тот же...

Как по дню и месяцу рождения определить день недели (дня рождения) в любом году?
Подскажите, пожалуйста, как по дню и месяцу рождения определить день недели (дня рождения) в любом...

3
738 / 543 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
20.12.2015, 10:58 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

TIGERMAX777, Прежде всего- Некрасов никакой не "М", а Николай Алексеевич,классиков надо знать...
Смотрим сначала в календаре какой день недели было 10 декабря в этом году.Четверг. Известно,что одна и та же дата каждый год смещается на 1 день недели вперед,а если год високосный то на 2.Чтобы четверг "превратился" в субботу нам нужно просчитать 5 смещений назад.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
/*Н.А. Некрасов родился 10 декабря 1821 г. Когда в последний раз день рождения Н.А. Некрасова
выпадал на субботу,если известны текущая дата 20 декабря 2015г?*/
int main()
{
    int y, n = 0;//y-годы,n-счетчик смещений
    for(y = 2015; y > 2000; --y){//от нынешнего года смещаемся по одному назад
        if(y % 4 == 0)//если год был високосный
            ++n;      //прибавляем еще одно смещение
        if(n == 5)    //если количество смещений достигло 5
            printf("10 December %d\n", y); //печатаем искомую дату
        ++n;//если еще не достигло 5-ти,прибавляем 1
    }
    return 0;
}
0
0 / 0 / 0
Регистрация: 10.09.2015
Сообщений: 7
20.12.2015, 12:56  [ТС] 3
Прошу прощения, что назвал Некрасова М., а не Николай...
За код спасибо, но есть одна проблема, текущую дату должен вводить пользователь, то есть он может ввести любое число(год,месяц,день).
0
738 / 543 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
21.12.2015, 11:18 4
TIGERMAX777, ну вот как-то так...
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int D[40], j = 0;
    D[j] = 0;
    int a = 0, b = 0, c = 0;
    int i = 1, dw = 5, m = 1, y = 1825, ny = 1;//i- число месяца,dw -день недели
    for(y = 1825; y <= 2016; ++y){             //y-годы, m-месяцы, ny-счетчик лет
        for(m = 1; m <= 12; ++m){
            if(ny == 4 && m == 2){
                for(i = 1; i <= 29; ++i){
                    ++dw;
                    if(dw == 7)
                            dw = 0;
                }
            }
            else{
                if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12){
                    for(i = 1; i <= 31; ++i){
                        ++dw;
                        if(i == 10 && dw == 6 &&  m == 12){
                           D[j] = y;{
                                   ++j;
                                    }
                        }
                        if(dw == 7)
                            dw = 0;
                    }
                }
                if(m == 4 || m == 6 || m == 9 || m == 11){
                    for(i = 1; i <= 30; ++i){
                         ++dw;
 
                         if(dw == 7)
                              dw = 0;
                    }
                }
                if(m == 2)
                    for(i = 1; i <= 28; ++i){
                         ++dw;
 
                         if(dw == 7)
                              dw = 0;
                    }
            }
        }
 
    ++ny;
    if(ny == 5)
        ny = 1;
    if(y == 1899)//небольшая заморочка из-за того что 1900-й не является
        ny = 1;  //високосным,благодаря е....у папе римскому Григорию....
    if(y == 1901)
        ny = 2;
    }
    printf("Vvedite datu: chislo:\n");
    scanf("%d", &a);
    printf("mesyac (ciframi):\n");
    scanf("%d", &b);
    printf("god:\n");
    scanf("%d", &c);
    for(j = 0; j < 40; ++j){
        if(c < 1825 || (c == 1825 && b < 12) || (c == 1825 && b == 12 && a <10) || c > 2016
           || b > 12 || a > 31){
                    printf("Nekorrektny vvod\n"); break;
        }
        if(D[j] == c){
            if(b == 12 && a >= 10){
                printf("10 December %d\n", D[j]); break;
            }
            else{
                    printf("10 December %d\n", D[j-1]); break;
            }
        }
        else
            if(D[j] > c){
                printf("10 December %d\n", D[j - 1]); break;
            }
    }
 
    return 0;
}
Если захотят вводить даты из будущего после 2016 года пусть скачивают обновления с нашего форума)) в свое время конечно...
0
21.12.2015, 11:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2015, 11:18
Помогаю со студенческими работами здесь

Когда вы в последний раз...?
первый игрок задает вопрос который начинается с &quot;когда вы в последний раз...?&quot; второй игрок...

А когда последний раз денежку пересчитывали?
Что то на нескольких сайтах денежка уже месяца 3 не меняется... это конечно нормально, но как то...

Когда последний раз был - дата
Имеется сессионная авторизация, как реализовать, когда последний раз пользователь был онлайн...

Как узнать когда последний раз Яндекс индексировал
подскажите скрипт на сайте или программу с помощью которой можно узнать когда Яндекс последний раз...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru