Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 16
1

Определить номер дня недели по заданной дате

27.12.2015, 21:18. Просмотров 1811. Ответов 2
Метки нет (Все метки)


Задание: Определить № дня недели по заданной дате. 1/1/1 был понедельник.

Нужно консольное решение! Без textbox и прочего!

Проблемы:
При обычном считывании Read() считывает совсем другие числа (если вводить DD/MM/YYYY).
vb.net
1
2
3
4
5
D = Read()
C = ChrW(Read())
M = Read()
C = ChrW(Read())
Y = Read()
При обработке типа данных Date не получается ввести с клавиатуры свою дату.
При обработке типа Variant не могу придумать что дальше делать.

Код, который я написал:
vb.net
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
Imports System.Console  'Для записи методов ввода-вывода без указания имени класса Console
Module Main_p11 'Разное 11
    Sub Main()
        Dim D, M, Y, a, y1, m1, R As Integer
        Dim F As Boolean = False
        Dim Data As Object
        Dim S(7) As Integer
        S(0) = 7
        S(1) = 1
        S(2) = 2
        S(3) = 3
        S(4) = 4
        S(5) = 5
        S(6) = 6
        WriteLine("Enter the date in the format: DD/MM/YY")
        WriteLine("For example: 31/12/2015")
        Write("Your input: ")
        Data = ReadLine()
        If IsDate(Data) Then
            WriteLine(Data)
        Else : WriteLine("Wrong")
        End If
        ReadLine()
    End Sub
End Module
Код на С++ работает исправно, но что делать с Basic?:
Кликните здесь для просмотра всего текста

MAIN.CPP
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
#include <solution.сpp>                                    // Подключение вспомогательного заголовка
#include <string>
#include <iostream>
 
using namespace std;
 
// прототип формулы вычисления дня недели
int Date (int,                                              // день
          int,                                              // месяц
          int)                                              // год
 
// прототип проверки високосного года
bool Leap (int)                                             // год
 
// прототип проверки введённой даты
bool Right_Date (int,                                       // день
                 int,                                       // месяц
                 int)                                       // год
 
int main() {
    int D,                                                  // день
        M,                                                  // месяц
        Y;                                                  // год
    bool f=false;                                           // флаг для проверки ввода
    char C;                                                 // вспомгательный символ для ввода
    string S[7]={"7", "1", "2", "3", "4", "5", "6"};        // номера дней недели
    while (!f) {                                            // проверка ввода
        cout << "Enter the date in the format DD/MM/YY."    // Введите дату в формате ДД/ММ/ГГ.
             << endl;
        cout << "For example: 31/12/2015."                  // Например: 31/12/2015
             << endl;
        cout << "Your input: ";                             // Ваш ввод:
        cin >> D >> C >> M >> C >> Y;                       // Ввод даты
        if (Right_Date(D, M, Y)==true) {                    // Проверка даты
            cout << "Weekday number: "                      // Номер дня недели:
                 << S[Date(D, M, Y)]                        // Рассчёт дня недели
                 << "."
                 << endl;
            f = true;                                       // Выход из цикла
        }
        else cout << "Error! Invalid input!"                // Ошибка! Неверный ввод!
                  << endl << endl;
    }
    return 0;
}
SOLUTION.CPP
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
// формула вычисления дня недели
int Date (int D,                                // день
          int M,                                // месяц
          int Y)                                // год
{
    int a, y, m, R;                             // вспомогательные переменные для формулы
    a=(14-M)/12;
    y=Y-a;
    m=M+12*a-2;
    R=7000+(D+y+y/4-y/100+y/400+(31*m)/12);
    return R%7;                                 // результат формулы
}
 
// проверка високосного года
bool Leap (int Y)                               // год
{
    if (Y%4==0 && Y%100!=0 || Y%400==0)
        return true;
    else return false;
}
 
// проверка введённой даты
bool Right_Date (int D,                         // день
                 int M,                         // месяц
                 int Y)                         // год
{
    if(D > 0 && D < 32 &&                       // диапазон максимальных значений дня
       M > 0 && M < 13 &&                       // диапазон максимальных значений месяца
       Y > 0 && Y < 32767)                      // диапазон максимальных значений года
        if ((M == 2 || M == 4 ||
             M == 6 || M == 9 ||
             M == 11) && D < 31)                // проверка месяцев, в которых максимальное значение = 30
            if (Leap(Y)==true &&
                M == 2 && D < 30);              // проверка февраля для високосного года
            else if (Leap(Y)==false &&
                     M == 2 && D < 29)          // проверка февраля для невисокосного года
                    return true;
                 else return false;
        else;
    else return false;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2015, 21:18
Ответы с готовыми решениями:

Определить день недели по дате
Доброго времени суток! Есть задачка: На форме есть 2 текстбокса, 2 комбо и кнопка. Рисунок...

Определить номер недели
Как определить номер недели? (Нумерация по ГОСТу)

По заданной дате определить номер недели в году
Нужно написать программу которая по заданной дате определяет номер недели в году.

Определить порядковый номер дня по заданной дате
Здравствуйте, вот само условие задачи: Определить порядковый номер дня по заданной дате....

2
1376 / 1281 / 297
Регистрация: 03.10.2012
Сообщений: 1,342
28.12.2015, 00:42 2
Попробуйте так:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
Sub Main()
        Dim data As Date
        WriteLine("Enter the date in the format: DD/MM/YY")
        WriteLine("For example: 31/12/2015")
        Write("Your input: ")
        data = ReadLine()
        If IsDate(data) Then
            WriteLine("Day of the week: " & data.DayOfWeek)
        Else : WriteLine("Wrong")
        End If
        ReadLine()
    End Sub
0
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 16
28.12.2015, 18:18  [ТС] 3
Благодарю, но я сделал так:

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Module Main_p11
    Sub Main()
        Dim Дата As Date
        Dim Data As Object
        Dim F As Boolean
        While F = False
            WriteLine("Enter the date in the format: DD/MM/YY")
            WriteLine("For example: 31/12/2015")
            WriteLine("Your input:")
            Data = ReadLine()
            If IsDate(Data) Then
                Дата = Data
                Write("Weekday number: ")
                Write(Дата.DayOfWeek)
                F = True
            Else : WriteLine("Incorrect input!")
                WriteLine()
            End If
        End While
        ReadLine()
    End Sub
End Module
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2015, 18:18

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

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

Определение дня недели по заданной дате
Составить программу определения по заданной дате дня недели. Помогите пожалуйста.

Неправильный вывод дня недели по заданной дате
Добрый вечер, умные люди! Столкнулся с проблемой при решении задачи, у кого появятся идеи -...

Определить номер дня недели для заданного номера дня года
а как это примерно будет на C++ ?


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

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

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