Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
5 / 5 / 1
Регистрация: 05.11.2011
Сообщений: 190

Если дней больше 30 (31) и и февраль больше 28 (29), необходимо генерировать исключения

01.10.2014, 18:36. Показов 768. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа вычисляет порядковый день в году с учетом високосного года. Если дней больше 30 (31) и и февраль больше 28(29), необходимо генерировать исключения. Но в программе неправильно генерируются исключения, например, можно ввести 30 апреля и сгенерируется исключение, а можно и ввести 29 февраля не високосного года и исключения не будет. Помогите, пожалуйста, разобраться!)

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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace _1Б_задание_4
{
    class Data
    {
        public double Year { get; set; }
        public double Month { get; set; }
        public double Day { get; set; }
        public void setYear(double y)
        {
 
            Year = y;
 
            if (y < 1600)
            {
                throw new System.ArgumentException("Parameter cannot be null", "original");
            }
 
        }
 
        public void setMonth(double m)
        {
            Month = m;
 
            if (m > 12)
            {
                throw new System.ArgumentException("Parameter cannot be null", "original");
            }
 
        }
        public void setDay(double d)
        {
            Day = d;
            if ((d > 30) && (Month == 4)) 
            
                if ((d > 30) && (Month == 6))
               
                    if ((d > 30) && (Month == 9))
                  
                        if ((d > 30) && (Month == 11))
                        
                            if ((d > 31) && (Month == 1))
                           
                                if ((d > 31) && (Month == 3))
                                
                                    if ((d > 31) && (Month == 5))
                                   
                                        if ((d > 31) && (Month == 7))
                                        
                                            if ((d > 31) && (Month == 8))
                                              if ((d > 31) && (Month == 10))
                                               
                                                    if ((d > 31) && (Month == 12))
                                                    {
                                                        throw new System.ArgumentException("Parameter cannot be null", "original");
                                                    }
                                                    
            if ((((Year % 4) == 0) && (Month == 2)) || (Day > 29))
           
            if ((((Year % 4) == 1) && (Month == 2)) || (Day > 28))
            
            if ((((Year % 4) == 2) && (Month == 2)) || (Day > 28))
            
            if ((((Year % 4) == 3) && (Month == 2)) || (Day > 28))
            {
                throw new System.ArgumentException("Parameter cannot be null", "original");
            }
 
 
        }
 
 
 
        static void Main()
        {
            int[] myArr = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
            int i;
            double t = 0;
            double t1;
            Data data1 = new Data();
            Console.WriteLine("Введите год");
 
            double y = Convert.ToDouble(Console.ReadLine());
            data1.setYear(y);
            Data data2 = new Data();
            Console.WriteLine("Введите месяц");
 
            double m = Convert.ToDouble(Console.ReadLine());
            data2.setMonth(m);
 
            Data data3 = new Data();
            Console.WriteLine("Введите день");
 
            double d = Convert.ToDouble(Console.ReadLine());
            data3.setDay(d);
            if ((y % 4) == 0)
            {
                myArr[2] = 29;
                for (i = 0; i < m; i++)
                {
                    t = t + myArr[i];
                }
                t1 = t + d;
 
                Console.WriteLine(t1);
            }
            else
            {
                for (i = 0; i < m; i++)
                {
                    t = t + myArr[i];
                }
                t1 = t + d;
 
                Console.WriteLine(t1);
            }
 
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.10.2014, 18:36
Ответы с готовыми решениями:

Если больше 14 дней, показывать отрицательное число -15
Доброго всем вечера! подскажите пожалуйста почему в ячейке в место &quot;истина&quot; установить цифру. заранее спасибо

Как удалять данные из базы, если с момента подачи прошло больше 30 дней?
Firestore Добавлено через 31 минуту Время в базу заносится при создании

Если первое число больше последнего в двумерном массиве, необходимо удалить столбец
Удалить все столбцы в которых первый элемент больше последнего. Не много не выходит, в чём ошибся? #include &quot;iostream&quot; ...

4
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
01.10.2014, 18:54
Julia9311,
А зачем все так усложнять, если можно сделать так
C#
1
2
3
4
5
6
7
8
9
10
11
12
            Console.WriteLine("Введите год");
            int y = Convert.ToInt32(Console.ReadLine());
 
            Console.WriteLine("Введите месяц");
            int m = Convert.ToInt32(Console.ReadLine());
 
            Console.WriteLine("Введите день");
            int d = Convert.ToInt32(Console.ReadLine());
 
            DateTime date = new DateTime(y, m, d);
 
            Console.WriteLine("Заданый день {0} в году", date.DayOfYear);
0
5 / 5 / 1
Регистрация: 05.11.2011
Сообщений: 190
01.10.2014, 18:59  [ТС]
Добавлено через 24 секунды
XRoy, задание такое)
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.10.2014, 19:04
Цитата Сообщение от Julia9311 Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
            if ((d > 30) && (Month == 4)) 
            
                if ((d > 30) && (Month == 6))
               
                    if ((d > 30) && (Month == 9))
                  
                        if ((d > 30) && (Month == 11))
                        
                            if ((d > 31) && (Month == 1))
                           
                                if ((d > 31) && (Month == 3))
                                
                                    if ((d > 31) && (Month == 5))
                                   
                                        if ((d > 31) && (Month == 7))
                                        
                                            if ((d > 31) && (Month == 8))
                                              if ((d > 31) && (Month == 10))
                                               
                                                    if ((d > 31) && (Month == 12))
                                                    {
                                                        throw new System.ArgumentException("Parameter cannot be null", "original");
                                                    }
Вас вот эта лесенка не смутила?
Здесь же само форматирование подсказывает, что следующее условие проверяется только тогда, когда все вышеперечисленные условия прошли успешно.

Отсюда возникает вопрос: если уже прошло условие, что d > 30 и Month == 4, то как в следующем условии может получиться истина на проверку Month == 6?
В итоге исключение тут вылетит только тогда, когда d одновременно больше 30-и и больше 31-го и Month одновременно равняется шести, девяти, одиннадцати, единице, трем, пяти, семи, восьми, десяти и двенадцати.
0
5 / 5 / 1
Регистрация: 05.11.2011
Сообщений: 190
01.10.2014, 19:18  [ТС]
kolorotur, спасибо) как мне тогда сделать, чтобы проверялось по одному условию?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.10.2014, 19:18
Помогаю со студенческими работами здесь

Вывести на экран число 1, если больше сумма, и число 0, если больше произведение
Даны три действительных числа a, b, c. Что больше – их сумма или произведение? Вывести на экран число 1, если больше сумма, и число 0,...

Дан список месяцев, дней по месяцам и количество рабочих дней: январь - 30 - 24, февраль - 28 - 22, март - 31 - 25.
Помогите пожалуйста решить задачи на Pascal, очень срочно надо . 1) Дан список месяцев, дней по месяцам и количество рабочих дней: январь...

Дан список месяцев, дней по месяцам и количество рабочих дней: январь - 30 - 24, февраль - 28 - 22, март - 31 - 25. Составить программу, которая по пе
Помогите пожалуйста решить задачи на Pascal, очень срочно надо . 1) Дан список месяцев, дней по месяцам и количество рабочих дней: январь...

Если первое больше второго по абсолютной величине, то необходимо уменьшить первое в пять раз
2. Пусть даны два числа. Если первое больше второго по абсолютной величине, то необходимо уменьшить первое в пять раз. Иначе оставить...

Если первое число больше второго по абсолютной величине, то необходимо уменьшить первое в 5 раз
1. Даны два числа. Если первое число больше второго по абсолютной величине, то необходимо уменьшить первое в 5 раз, иначе оставить числа...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru