Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
21 / 9 / 6
Регистрация: 10.11.2017
Сообщений: 148

Закодировать номер водительских удостоверений Великобритании, используя массив данных

15.07.2018, 10:58. Показов 3620. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ВУ в Великобритании составлено из личных данных водителя. Отдельные буквы и цифры могут быть кодом с использованием приведенной ниже информации:

1-5: первые пять символов фамилии (заполненные 9 с, если менее 5 символов)

6: десятилетняя цифра с года рождения (например, в 1987 году это было бы 8)

7-8: месяц рождения (7-й символ увеличивается на 5, если водитель является женским, то есть 51-62 вместо 01-12)

9-10: дата в течение месяца рождения

11: цифра года с года рождения (например, в 1987 году это было бы 7)

12-13: Первые две инициалы первого имени и среднего имени, дополненные 9, если нет среднего имени

14: Произвольная цифра - обычно 9, но уменьшена для дифференциации драйверов с первыми 13 символами. Мы всегда будем использовать 9

15-16: Две контрольные цифры компьютера. Мы всегда будем использовать «AA»,

задача - закодировать номер водительских удостоверений Великобритании, используя массив данных. Массив будет выглядеть так:

data = ["John", "James", "Smith", "01-Jan-2000", "M"];

Где следующие элементы:

0 = Forename

1 = Middle Name (if any)

2 = Surname

3 = Date of Birth (In the format Day Month Year, this could include the full Month name or just shorthand ie September or Sep)

4 = M-Male or F-Female
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.07.2018, 10:58
Ответы с готовыми решениями:

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

Закодировать сообщение, используя код Хэмминга
Закодировать, используя (21,16)- коды Хэмминга, заданное сообщение. ASCII-коды маленьких букв латиницы начинаются с 1418 и заканчиваются...

Как, используя метод base64, закодировать текст?
Здравствуйте. Подскажите пожалуйста, как изменить код, чтобы можно было вместо рисунка кодировать текст. За ранние благодарен. ...

14
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 8
16.07.2018, 13:31
Женя Брянцев, Извините, но не совсем понял "заполненные 9 с"
0
 Аватар для HectorPrima
716 / 473 / 258
Регистрация: 19.12.2014
Сообщений: 1,801
16.07.2018, 13:59
Цитата Сообщение от theSUPPAFILA Посмотреть сообщение
Извините, но не совсем понял "заполненные 9 с"
Скорее всего имеется в виду цифра 9 вместо каждой отсутствующей буквы.
0
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 8
16.07.2018, 14:35
HectorPrima, тоже так думал, но решил уточнить)
0
21 / 9 / 6
Регистрация: 10.11.2017
Сообщений: 148
16.07.2018, 22:22  [ТС]
Цитата Сообщение от HectorPrima Посмотреть сообщение
Скорее всего имеется в виду цифра 9 вместо каждой отсутствующей буквы.
да, все так, почему то фраза обрезанной вышла
0
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
19.07.2018, 15:42
Вот так примерно
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        public static string vodils ()
        {
            string[] data = { "John", "James", "Smith", "01-Jan-2000", "M"};
 
            string s1 = data[0].Right(5)+"99999".Right(5 - data[0].Length);
            string s2 = Convert.ToDateTime(data[3]).Year.ToString()[3].ToString();
            string s3 = (Convert.ToDateTime(data[3]).Month + ((data[4] == "M") ? 0 : 50)).ToString();
            if (s3.Length == 1)
                s3 = "0" + s3;
            string s4 = Convert.ToDateTime(data[3]).Day.ToString();
            if (s4.Length == 1)
                s4 = "0" + s4;
 
            string s5 = data[1].Left(1).IsNone("9") + data[2].Left(1).IsNone("9");
            string s6 = "9AA";
            string s = s1 + s2 + s3 + s4 + s5 + s6;
 
            return s;//John900101JS9AA
        }
0
21 / 9 / 6
Регистрация: 10.11.2017
Сообщений: 148
20.07.2018, 10:02  [ТС]
возврат должен быть такой SMITH0010JJ9AA
0
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
20.07.2018, 11:24
Перепутал "John" и "Smith" а остальное также
а еще сразу не заметил что использовал свои методы расширения

C#
1
2
3
4
5
6
7
8
9
10
public static string Right(this string str, int len) =>
            str.Length > len ? str?.Substring(str.Length - len) : str;
public static string Left(this string str, int len) => 
            str.Length > len ? str?.Substring(0, len) : str;
 
//IsNone замени 
 
string s51 = data[1].Left(1)
if(string.IsNullOrWhiteSpace(s51 ))
  string s51 = "9"
1
21 / 9 / 6
Регистрация: 10.11.2017
Сообщений: 148
20.07.2018, 11:40  [ТС]
полностью код можете сбросить
0
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
20.07.2018, 11:51
и
C#
1
str.Length > len
замени на
C#
1
str?.Length??0 > len
Добавлено через 8 минут
нол в таком виде лучше не использовать это только пример
не проверял
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
public static class StringExtension
{
public static string Right(this string str, int len) =>
            str?.Length??0 > len ? str?.Substring(str.Length - len) : str;
public static string Left(this string str, int len) => 
            str?.Length??0 > len ? str?.Substring(0, len) : str;
}
 
 
 public static string vodils (string[] data)
        {
            string s1 = data[2].Right(5)+"99999".Right(5 - data[2].Length); // обрезает 5 первых символов добавляет в конец 9 если длинна меньше
            string s2 = Convert.ToDateTime(data[3]).Year.ToString()[3].ToString();//забирает из года 2 с конца цифру
            string s3 = (Convert.ToDateTime(data[3]).Month + ((data[4] == "M") ? 0 : 50)).ToString();// берет месяц и если пол мужской добавляет 50 
            if (s3.Length == 1)//если длинна н6омера месяца == 1 добавляет 0 в начало
                s3 = "0" + s3;
            string s4 = Convert.ToDateTime(data[3]).Day.ToString();
            if (s4.Length == 1)
                s4 = "0" + s4;
 
 
           string s51 = data[1].Left(1)//берет 1 символ из строки
           if(string.IsNullOrWhiteSpace(s51 ))//если строка пустая или заполнена пробелами заменяет на 9
              string s51 = "9"
           string s52 = data[0].Left(1)
           if(string.IsNullOrWhiteSpace(s52 ))
              string s52 = "9"
            string s5 =s52  +s51;
 
            string s6 = "9AA";
            string s = s1 + s2 + s3 + s4 + s5 + s6;
 
            return s;
        }
1
21 / 9 / 6
Регистрация: 10.11.2017
Сообщений: 148
20.07.2018, 12:39  [ТС]
у меня ругается на это как раз
0
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
20.07.2018, 12:41
на что именно?
0
21 / 9 / 6
Регистрация: 10.11.2017
Сообщений: 148
27.07.2018, 09:29  [ТС]
C#
1
2
3
4
public static string Right(this string str, int len) =>
            str?.Length??0 > len ? str?.Substring(str.Length - len) : str;
public static string Left(this string str, int len) => 
            str?.Length??0 > len ? str?.Substring(0, len) : str;
0
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
27.07.2018, 10:25
создайте отдельный статический класс и туда это добавьте

Добавлено через 1 минуту
ну либо можно убрать this и использовать как обычную функцию
так Right(data[2],5)
0
 Аватар для andrey_f
884 / 537 / 228
Регистрация: 21.02.2011
Сообщений: 5,705
31.07.2018, 15:02
Лучший ответ Сообщение было отмечено Женя Брянцев как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        public static string driver(string[] data)
        {
            bool female = data[4].ToString() == "F";
            DateTime dob = DateTime.Parse(data[3]);
            var oneToFive = data[2].PadRight(5, '9').ToUpper().Substring(0, 5);
            var six = dob.Year.ToString().Substring(2, 1);
            var paddedMonth = dob.Month.ToString().PadLeft(2, '0');
            var sevenEight = (female ? (Convert.ToInt32(paddedMonth.Substring(0, 1)) + 5).ToString() + paddedMonth.Substring(1, 1) : paddedMonth);
            var nineTen = dob.Day.ToString().PadLeft(2, '0');
            var eleven = dob.Year.ToString().Substring(3, 1);
            var twelveThirteen = data[0].ToString().Substring(0, 1) + (data[1].ToString().Length == 0 ? "9" : data[1].ToString().Substring(0, 1));
            var fourteen = "9";
            var fifteenSixteen = "AA";
            return oneToFive + six + sevenEight + nineTen + eleven + twelveThirteen + fourteen + fifteenSixteen;
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2018, 15:02
Помогаю со студенческими работами здесь

Закодировать слова в числа, используя таблицу ANSI
Всем привет, помогите решить легкую задачку: "Написать программу, которая кодирует слова в числа, используя таблицу ANSI. Каждое число...

Найти номер последнего максимального элемента последовательности используя одномерный массив
2 Задача:Дана последовательность из N действительных чисел найти номер последнего максимального элемента используя одномерный массив.

Сколько различных сообщений можно закодировать, используя в каждом из них не менее 3-х и не более 7 знаков?
Для кодирования сообщений решено использовать последовательности разной длины, состоящие из знаков «+» и «-». Сколько различных сообщений...

Сколько различных сообщений можно закодировать, используя в каждом из них не менее 2-х и не более 6 знаков
Для кодирования сообщений решено использовать последовательности разной длины, состоящие из знаков «+» и «-».Сколько различных сообщений...

Закодировать слово в двумерный массив
Здравствуйте кто может подсказать как сделать такое шифрование: у нас есть двумерный массив 33 на 33 изначально в нём все столбцы...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru