0 / 0 / 0
Регистрация: 16.05.2019
Сообщений: 9
1

Вводится номер месяца М и дня Д. Определить день недели с датой М и Д

09.10.2019, 17:24. Показов 4025. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите код

Вводится номер месяца М и дня Д. Определить день недели с датой М и Д, считая, что год начинается с понедельника

заранее спасибо)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2019, 17:24
Ответы с готовыми решениями:

Вводится номер месяца М и дня Д. Определить день недели с датой М и Д
Вводится номер месяца М и дня Д. Определить день недели с датой М и Д, считая, что год начинается...

Определить номер месяца M и дня недели D по порядковому номеру дня в году
Вводится число T-порядковый день в году.Определить номер месяца M и дня недели D, соответствующих...

Определить день недели с датой D и M, если W - день недели первого января
даны два числа D и M, определяющие день и месяц. W - день недели 1 января. Определить день недели...

Получить день и номер месяца и определить дату следующего дня (считать год невисокосным)
Напишите программу, которая получает день и номер месяца и определяет дату следующего дня....

9
1021 / 561 / 185
Регистрация: 18.08.2013
Сообщений: 2,026
Записей в блоге: 2
09.10.2019, 18:35 2
Лучший ответ Сообщение было отмечено tritonala как решение

Решение

Особо старательно не проверял, но вроде как работает правильно
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.time.DayOfWeek;
import java.util.Scanner;
 
public class Test {
    public static void main(String args[]) {
        int month, day;
        try (Scanner in = new Scanner(System.in)) {
            do {
                System.out.print("Month: ");
                month = in.nextInt();
                System.out.print("Day: ");
                day = in.nextInt();
            } while (month < 1 || month > 12 || day < 1 || day > 31);
        }
        day += 30 * (month - 1) + (month > 1 ? Math.ceil(month / 2.0) : 0) - (month > 1 ? 2 : 0);
        day %= 7;
        System.out.println(DayOfWeek.of(day == 0 ? 7 : day));
    }
}
1
Эксперт Java
3638 / 2970 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
09.10.2019, 18:42 3
Gungala, а где февраль?
1
57 / 55 / 10
Регистрация: 27.07.2010
Сообщений: 279
09.10.2019, 18:57 4
tritonala, можно сделать что-то типа такого, также ввод с консоли и проверки надо добавить
Java
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
public class Application {
 
    public static void main(String[] args) {
        System.out.println(getDayOfWeek(1, 1));
    }
 
    private static String getDayOfWeek(int month, int day) {
        int dayOfWeek = getDaysFromYearBeginning(month, day) % 7;
 
        switch (dayOfWeek) {
            case 0: return "Sun";
            case 1: return "Mon";
            case 2: return "Tue";
            case 3: return "Wed";
            case 4: return "Thu";
            case 5: return "Fri";
            case 6: return "Sat";
            default: return "Unknown";
        }
    }
 
    private static int getDaysFromYearBeginning(int month, int day) {
        Map<Integer, Integer> monthDays = new HashMap<Integer, Integer>(){{
            put(1, 31);
            put(2, 28);
            put(3, 31);
            put(4, 30);
            put(5, 31);
            put(6, 30);
            put(7, 31);
            put(8, 31);
            put(9, 30);
            put(10, 31);
            put(11, 30);
            put(12, 31);
        }};
 
        int amountDays = 0;
        for (int i = 1; i < month ; i++) {
            amountDays += monthDays.get(i);
        }
        return amountDays + day;
    }
 
}
1
1021 / 561 / 185
Регистрация: 18.08.2013
Сообщений: 2,026
Записей в блоге: 2
09.10.2019, 19:06 5
Цитата Сообщение от xoraxax Посмотреть сообщение
а где февраль?
так вот же
Java
1
- (month > 1 ? 2 : 0)
Тип, если номер месяца больше 2 (т.е. эт как минимум февраль), то вычитаем два дня. Ну, високосный год я уж не стал учитывать. Думаю, это лишнее
1
Эксперт Java
3638 / 2970 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
10.10.2019, 00:21 6
_Vladimir_, а зачем вместо массива нужно использовать мапу?
0
485 / 333 / 132
Регистрация: 14.06.2016
Сообщений: 647
10.10.2019, 01:22 7
Java
1
System.out.println(LocalDate.of(2018, M, D).getDayOfWeek());
0
1021 / 561 / 185
Регистрация: 18.08.2013
Сообщений: 2,026
Записей в блоге: 2
10.10.2019, 05:25 8
vcrop, вряд ли человеку дали бы это задание, если бы разрешено было использовать LocalDate
0
57 / 55 / 10
Регистрация: 27.07.2010
Сообщений: 279
10.10.2019, 11:39 9
xoraxax, для наглядности конечно )) LinkedList тоже хорош, но в данном случае не так очевиден, да и не заточен от для доступа к элементу по индексу ))

Можно было вообще обойтись без коллекции:
Java
1
2
3
4
5
6
7
8
private int getDayOfWeek(int month, int day) {
        int currentYear = Calendar.getInstance().get(Calendar.YEAR);
        int amountDays = 0;
        for (int i = 1; i < month ; i++) {
            amountDays += YearMonth.of(currentYear, i).lengthOfMonth();
        }
        return (amountDays + day) % 7;
    }
но подозреваю, что целью было написать всю реализацию руками.
0
Эксперт Java
3638 / 2970 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
10.10.2019, 13:08 10
Цитата Сообщение от _Vladimir_ Посмотреть сообщение
LinkedList тоже хорош, но в данном случае не так очевиден
int[]?
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2019, 13:08
Помогаю со студенческими работами здесь

Ввести день недели и вывести номер дня недели
нужно ввести день недели и вывести номер дня недели,спасибо

Вычисление дня недели, зная первый день месяца
Нужно вычислить какой будет день недели месяца будет зная первый день месяца python. Например,...

Определить день недели, на который приходится день с датой d (день), m (месяц)
Считая, что год не високосный и его 1 января приходится на день недели wd1, определиь wd -день...

Как получить день недели первого дня месяца из Calendar?
Например, день недели первого дня Декабря 2013 - Воскресенье День недели первого для Января 2014 -...

Вводим номер месяца M и дня D. Определить порядковый номер дня в году T соответствующий этой дате
Вводим номер месяца M и дня D. Определить порядковый номер дня в году T соответствующий этой дате....

По текущей дате и дню недели определить день недели с такой же датой заданного года
По текущей дате и дню недели определить день недели с такой же датой заданного года. (C++ )


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru