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

Как сделать, чтобы проверяло день рождения?

24.11.2022, 19:45. Показов 818. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!
Не понимаю, как сделать, чтобы проверяло, что день рождения состоит из цифр
Если можно как-то ограничить значения, то вообще шикарно! Ну, то-есть чтобы не было, что человек родился 32.13.2023
Вот код структуры:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
 
 
public struct NOTE
{
    public string name;
    public string surname;
    public string phoneNumber;
    public int[] birthday;
    public NOTE(string _name, string _surname, string _phonenumber, int[] _birthday)
    {
        string a = @"\b[A-Z]\w+";
        string b = @"\b[8]\w+";
        //string c = @"\b[0-9]";
        Regex rg = new Regex(a);
        Regex rg1 = new Regex(b);
        //Regex rg2 = new Regex(c);
        if (rg.IsMatch(_name))
            name = _name;
        else
            throw new Exception("Фамилия должно начинаться с заглавной английской буквы");
        if (rg.IsMatch(_surname))
            surname = _surname;
        else
            throw new Exception("Имя должна начинаться с заглавной английской буквы");
        if (rg1.IsMatch(_phonenumber) && _phonenumber.Length == 11)
            phoneNumber = _phonenumber;
        else
            throw new Exception("Номер телефона должен состоять из 11-ти цифр, начиная с 8");
        //if (rg2.IsMatch(Convert.ToString(_birthday)) && _birthday.Length <=50)
            birthday = _birthday;
        //else
        //    throw new Exception("Введите дату в правильном формате, например: 12.07.2003");
    }
}
А вот код программы:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            NOTE[] spisok = new NOTE[1];
            try
            {
                string bigline = new string('-',67);
                string name, surname, phoneNumber;
                for (int i = 0; i < spisok.Length; i++)
                {
                    Console.WriteLine("Введите фамилию:");
                    name = Console.ReadLine();
                    Console.WriteLine("Введите имя:");
                    surname = Console.ReadLine();
                    Console.WriteLine("Введите номер телефона:");
                    phoneNumber = Console.ReadLine();
                    Console.WriteLine("Введите дату рождения в формате ДД.ММ.ГГГГ");
                    string Birthday = Console.ReadLine();
                    string[] DateMassive = Birthday.Split('.');
                    int[] birthday = new int[]
                    {
                        int.Parse(DateMassive[0].ToString()),
                        int.Parse(DateMassive[1].ToString()),
                        int.Parse(DateMassive[2].ToString())
                    };
                    spisok[i].birthday = new int[2];
                    spisok[i].birthday = birthday;
                    spisok[i].surname = surname;
                    spisok[i].name = name;
                    spisok[i].phoneNumber = phoneNumber;
                    NOTE Note = new NOTE(name, surname, phoneNumber,birthday);
                }
                Console.WriteLine(bigline);
                //вывод полного списка людей
                for (int i = 0; i < spisok.Length; i++)
                {
                    Console.WriteLine(spisok[i].name + " " + spisok[i].surname + " " + spisok[i].phoneNumber + " " + spisok[i].birthday[0] + "." + spisok[i].birthday[1] + "." + spisok[i].birthday[2]);
                }
                Console.WriteLine(bigline);
                Console.WriteLine("Введите номер телефона для поиска человека:");
                string FindNumber = Console.ReadLine();
                Console.WriteLine("Результат поиска:");
                for (int i = 0; i < spisok.Length; i++)
                    if (FindNumber == spisok[i].phoneNumber)
                        Console.WriteLine(spisok[i].name + " " + spisok[i].surname + " " + spisok[i].phoneNumber + " " + spisok[i].birthday[0] + "." + spisok[i].birthday[1] + "." + spisok[i].birthday[2]);
                else 
                        Console.WriteLine("Не удалось найти человека с данным номером телефона:(");
                Console.ReadKey();
                
 
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.ReadKey();
 
            }
            
        }
    }
}
Нужные строки закомментил!!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.11.2022, 19:45
Ответы с готовыми решениями:

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

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

Как сделать так, чтобы приложение проверяло процесс и если он не запущен то запускало его?
как сделать так чтобы приложение проверяло процесс и если он не запущен то запускало его? Допустим к примеру csgo.exe (просто для примера)

6
 Аватар для andrey_f
884 / 537 / 228
Регистрация: 21.02.2011
Сообщений: 5,705
25.11.2022, 10:03
Цитата Сообщение от f3x Посмотреть сообщение
32.13.2023
добавить if с проверкой?
использовать встроенный тип DateTime?
0
ладно
 Аватар для TeBrado
71 / 50 / 20
Регистрация: 29.12.2021
Сообщений: 274
Записей в блоге: 1
25.11.2022, 10:34
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
//Базовая проверка даты рождения, ничего сложного
string date = "16.15.2027"; // Тут поставил такую дату, но вам надо брать уже вашу дату и конвертировать её в String
string[] spltopt = { "." }; string[] splitres = date.Split(spltopt, StringSplitOptions.None);
try
{
int day = int.Parse(splitres[0]);
if(day > 31)
Console.WriteLine("Тут что-то не так...");
}
catch
{
Console.WriteLine("Тут что-то не так...");
}
try
{
int month = int.Parse(splitres[1]);
if(month > 12)
Console.WriteLine("Тут что-то не так...");
}
catch
{
Console.WriteLine("Тут что-то не так...");
}
try
{
int year = int.Parse(splitres[2]);
if(year > 2024 || year < 1915)
Console.WriteLine("Тут что-то не так...");
}
catch
{
Console.WriteLine("Тут что-то не так...");
}

Не по теме:

Понимаю что не самый лучший способ проверки, но смог только так.

1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3410 / 2731 / 575
Регистрация: 04.09.2018
Сообщений: 8,569
Записей в блоге: 3
25.11.2022, 10:55
C#
1
2
3
4
5
DateTime validdate;
if (DateTime.TryParse(_birthday[2] + "." + _birthday[1] + "." + _birthday[0], out validdate))
{
    //....
}
Добавлено через 4 минуты
Цитата Сообщение от TeBrado Посмотреть сообщение
но смог только так.
А если дата будет такая: 31.02.2022 ?
0
ладно
 Аватар для TeBrado
71 / 50 / 20
Регистрация: 29.12.2021
Сообщений: 274
Записей в блоге: 1
25.11.2022, 11:04
Цитата Сообщение от wizard41 Посмотреть сообщение
А если дата будет такая: 31.02.2022 ?
Хз. Будет ошибка наверное.
Код писал тут, не было времени думать об таких случаях.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3410 / 2731 / 575
Регистрация: 04.09.2018
Сообщений: 8,569
Записей в блоге: 3
25.11.2022, 11:05
Цитата Сообщение от TeBrado Посмотреть сообщение
Будет ошибка наверное
Ошибки в коде нет. А вот такой даты не существует. В феврале(ях) 28 или 29 дней.
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
25.11.2022, 11:10
А зачем вообще строку Split-том обрабатывать. Так запрещено ?
C#
1
2
3
4
5
string Birthday = Console.ReadLine();
    if(DateTime.TryParse(Birthday,  out DateTime validdate))
        //ok..........
    else
       //Error.......
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.11.2022, 11:10
Помогаю со студенческими работами здесь

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

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

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

Как сделать так чтобы панель появлялась только тогда, когда у человека день рождение и чтобы в мемо1 было его фио?
Здравствуйте, моя проблема заключается в этом: у меня есть форма на ней панель с мемо1 (фио) и мемо2(дата рождения). Как сделать так чтобы...

Хочу сделать видеопоздравление на День Рождения
Здравствуйте! Хочу сделать видео поздравление из фотографий на День Рождения сестры. Есть много ее фотографий, начиная от юности до...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru