Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/43: Рейтинг темы: голосов - 43, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142

Определить, является ли введенный автомобильный государственный регистрационный номер верным

21.04.2019, 16:29. Показов 9206. Ответов 40

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, написать программу по данной задаче:

Основная часть автомобильного государственного регистрационного номера состоит из 6 символов: трех букв и трех цифр. Сначала идет буква, затем 3 цифры и еще 2 буквы заканчивают запись. В качестве цифр могут использоваться любые цифры от 0 до 9, а в качестве букв только заглавные буквы, обозначения которых присутствуют как в английском, так и в русском алфавите, т.е. только следующие символы: A, B, C, E, H, K, M, O, P, T, X, Y. Например, «P204BT» - правильный номер, а «X182Yx» и «ABC216» - нет.
Определить, является ли введенный номер верным.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.04.2019, 16:29
Ответы с готовыми решениями:

Определить является ли введенный шестизначный номер «счастливым»
Помогите кому не сложно) Язык Си. Составить программу, определяющую является ли введенный шестизначный номер «счастливым» (совпадает ли у...

Запросить у пользователя e-mail и определить является ли он верным
Запросить у пользователя e-mail и определить является ли он верным У кого-то есть код на с++

При поселении в гостиницу каждый участник конференции указал свой регистрационный номер, дату и время приезда и отъезда, номер комнаты и номер телефон
При поселении в гостиницу каждый участник конференции указал свой регистрационный номер, дату и время приезда и отъезда, номер комнаты и...

40
454 / 278 / 163
Регистрация: 17.04.2019
Сообщений: 1,637
25.04.2019, 19:35
Студворк — интернет-сервис помощи студентам
llatibro, попробуйте эти методы, это с использованием регулярных выражений:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Boolean^ ValidateRegistrationPlateEngLetters(String^ registrationPlate)
{
    return Regex::Match(registrationPlate, "^[ABCEHKMOPTXY]\\d{3}[ABCEHKMOPTXY]{2}$")->Success;
}
    
Boolean^ ValidateRegistrationPlateRusLetters(String^ registrationPlate)
{
    return Regex::Match(registrationPlate, "^[АВСЕНКМОРТХУ]\\d{3}[АВСЕНКМОРТХУ]{2}$")->Success;
}
    
Boolean^ ValidateRegistrationPlate(String^ registrationPlate)
{
    registrationPlate = registrationPlate->Trim();
        
    return (ValidateRegistrationPlateEngLetters(registrationPlate) || ValidateRegistrationPlateRusLetters(registrationPlate));
}
Вызывать проверку так:
C++
1
2
3
4
if (ValidateRegistrationPlate("А291ВВ"))
{
    //номерной знак правильный
}
1
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
25.04.2019, 19:45  [ТС]
повар1, ругается на значение в скобках массива letter. Значение типа const char[13] нельзя использовать для инициализации сущности типа char[12]. Если поменять значение на 13, то всё ок.
Ваше решение кажется мне каким-то странным) Да, перенести его на Форму не составит особого труда, но как-то глаз режет, когда каждую конструкцию приходится дублировать для заглавных и прописных букв.

Добавлено через 1 минуту
Если кто-то сможет внедрить в код ProgItEasy IndexOf, либо же написать прогу через регулярки, то буду очень благодарен
0
454 / 278 / 163
Регистрация: 17.04.2019
Сообщений: 1,637
25.04.2019, 20:03
llatibro, посмотрите выше, я написал через регулярки.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
25.04.2019, 20:11
llatibro, переписал код ProgItEasy
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <regex>
 
int main()
{
    std::locale::global(std::locale(".866"));
    std::wregex eng_pat{ L"^[ABCEHKMOPTXY]\\d{3}[ABCEHKMOPTXY]{2}$" };
    std::wregex rus_pat{ L"^[АВСЕНКМОРТХУ]\\d{3}[АВСЕНКМОРТХУ]{2}$" };
 
    std::wstring num;
    std::wcin >> num;
    std::cout << std::boolalpha << (std::regex_match(num, eng_pat) || std::regex_match(num, rus_pat));
}
1
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
25.04.2019, 20:15  [ТС]
ProgItEasy, не понимаю в какое место кода это писать....
Миниатюры
Определить, является ли введенный автомобильный государственный регистрационный номер верным  
0
454 / 278 / 163
Регистрация: 17.04.2019
Сообщений: 1,637
25.04.2019, 20:20
zayats80888, человеку нужен код на C++/CLI.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
25.04.2019, 20:22

Не по теме:

ProgItEasy, уже понял

0
454 / 278 / 163
Регистрация: 17.04.2019
Сообщений: 1,637
25.04.2019, 20:26
llatibro,
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
private:
System::Boolean^ ValidateRegistrationPlateEngLetters(System::String^ registrationPlate)
{
    return Regex::Match(registrationPlate, "^[ABCEHKMOPTXY]\\d{3}[ABCEHKMOPTXY]{2}$")->Success;
}
    
System::Boolean^ ValidateRegistrationPlateRusLetters(System::String^ registrationPlate)
{
    return Regex::Match(registrationPlate, "^[АВСЕНКМОРТХУ]\\d{3}[АВСЕНКМОРТХУ]{2}$")->Success;
}
    
System::Boolean^ ValidateRegistrationPlate(System::String^ registrationPlate)
{
    registrationPlate = registrationPlate->Trim();
        
    return (ValidateRegistrationPlateEngLetters(registrationPlate) || ValidateRegistrationPlateRusLetters(registrationPlate));
}
    
System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
    if (ValidateRegistrationPlate(textBox1->Text))
        textBox2.Text = "Верный";
    else
        textBox2.Text = "Неверный";
}
1
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
25.04.2019, 20:45  [ТС]
Не считает за класс почему-то
Миниатюры
Определить, является ли введенный автомобильный государственный регистрационный номер верным  
0
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
25.04.2019, 22:15
Лучший ответ Сообщение было отмечено llatibro как решение

Решение

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
#include <iostream>
using namespace std;
 
int main(){
    string namber,format="000000";
    size_t len;
    char letter[6]={'A','B','C',128,130,145};//128,130,145 коды русских букв
 
    getline(cin, namber);
    len=namber.length();
    if(len!=6){
      cout<<"invalid number format";
      system("pause");
      return 0;
     }
     for(int i=1;i<4;i++)
       if(isdigit(namber[i]))
            format[i]=namber[i];
 
     for(int i=0;i<6;i++){
           if(letter[i]==namber[0])format[0]=namber[0];
           if(letter[i]==namber[4])format[4]=namber[4];
           if(letter[i]==namber[5])format[5]=namber[5];
           }
 
     namber==format ? cout<<"correct number" : cout<<"invalid number";
     system("pause");
     return 0;
}
1
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
26.04.2019, 19:58  [ТС]
повар1, похоже это самое оптимальное решение из всех, спасибо большое)
0
454 / 278 / 163
Регистрация: 17.04.2019
Сообщений: 1,637
26.04.2019, 20:07
llatibro, не видит этот класс, потому как нужно подключить пространство имен RegularExpressions:
C++
1
using namespace System::Text::RegularExpressions;
1
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
28.04.2019, 09:00  [ТС]
Перенес в винформс всё что смог, но с этим не знаю что делать.
1 - код
2 - ошибки
3 - измененный код выдает другие ошибки (чисто ради интереса)
Миниатюры
Определить, является ли введенный автомобильный государственный регистрационный номер верным   Определить, является ли введенный автомобильный государственный регистрационный номер верным   Определить, является ли введенный автомобильный государственный регистрационный номер верным  

0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
28.04.2019, 09:21  [ТС]
ProgItEasy, Теперь в коде не подчеркивает, но при компиляции ошибки всё равно выдает...
Миниатюры
Определить, является ли введенный автомобильный государственный регистрационный номер верным  
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
28.04.2019, 19:33  [ТС]
С типами разобрался, сделал так

String^ nom;
String^ format = "000000";

Добавлено через 5 часов 30 минут
Из ошибок осталось только isdigit

Добавлено через 1 час 53 минуты
повар1, сделал такой код. Единственная ошибка "isdigit: идентификатор не найден". Думаю это из-за того что isdigit относится к char, а nom относится к String. Если можно как-то исправить, чтобы сохранить String^ nom, то было бы очень неплохо. Если так нельзя и придется nom присваивать char, то ладно, хоть так...
0
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
28.04.2019, 20:55
замени
C++
1
if(isdigit(namber[i]))
на
C++
1
 if(namber[i]>='0' && namber[i]<='9' )
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
29.04.2019, 09:43  [ТС]
повар1, Код почему-то не прикрепил, но вот он. Сейчас выскакивает ошибка при нажатии кнопки определить в винформс

C++ (Qt)
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
#pragma endregion
/*Основная часть автомобильного государственного регистрационного номера состоит из 6 символов: трех букв и трех цифр.
Сначала идет буква, затем 3 цифры и еще 2 буквы заканчивают запись.
В качестве цифр могут использоваться любые цифры от 0 до 9, а в качестве букв только прописные буквы,
обозначения которых присутствуют как в английском, так и в русском алфавите, т.е. только следующие символы: A, B, C, E, H, K, M, O, P, T, X, Y.
Например, «P204BT» - правильный номер, а «X182Yx» и «ABC216» - нет.
Определить, является ли введенный номер верным.*/
 
    private: System::Void MyForm_Load(System::Object^  sender, System::EventArgs^  e) {
    }
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
 
        String^ nom; 
        char format[7] = "000000";
        char buk[24] = { 'A','B','C','E','H','K','M','O','P','T','X','Y',128,130,145,133,141,138,140,142,144,146,149,147 };
            
        textBox1->Text;
 
        if (nom->Length != 6)
        {
            String^ k = "Неверный";
            textBox2->Text = System::Convert::ToString(k);
        }
        for (int i = 1; i < 4; i++)
            if (nom[i] >= '0' && nom[i] <= '9')
                format[i] = nom[i];
 
        for (int i = 0; i < 24; i++)
        {
            if (buk[i] == nom[0])
                format[0] = nom[0];
            if (buk[i] == nom[4])
                format[4] = nom[4];
            if (buk[i] == nom[5])
                format[5] = nom[5];
        }
        for (int i = 0; i < 6; i++) 
            if (format[i] == nom[i])
        {
            String^ k = "Верный";
            textBox2->Text = System::Convert::ToString(k);
        }
        else
        {
            String^ k = "Неверный";
            textBox2->Text = System::Convert::ToString(k);
        }
    }
    };
Миниатюры
Определить, является ли введенный автомобильный государственный регистрационный номер верным  
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
29.04.2019, 10:27  [ТС]
ProgItEasy, теперь ошибок в регулярках нет, форма запускается, все вводится и нажимается, НО что бы я ни ввел, пишет что номер Верный. Что с этим делать?
0
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
29.04.2019, 10:50
Цитата Сообщение от llatibro Посмотреть сообщение
for (int i = 0; i < 6; i++)
* * * * * * if (format[i] == nom[i])
* * * * {
* * * * * * String^ k = "Верный";
* * * * * * textBox2->Text = System::Convert::ToString(k);
* * * * }
* * * * else
* * * * {
* * * * * * String^ k = "Неверный";
* * * * * * textBox2->Text = System::Convert::ToString(k);
* * * * }
Похоже это не правильно работает. попробуй if - else в скобки взять. Строка 48 похоже лишняя
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
29.04.2019, 16:03  [ТС]
повар1, не лишняя. Просто это не весь код. Там сверху еще больше сотни строк, относящихся к самой форме. Если Вы про фигурные скобки, то не, не исправилось
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.04.2019, 16:03

Определить, является ли введенный символ числом
Написать программу, которая вводит один символ с клавиатуры и выводит сообщение, является ли введенный символ числом (Коды числовых...

Определить, является ли введенный текст палиндромом
Ввести строку , содержащую некоторый текст. Определить, является ли данный текст палиндромом, т.е. читается ли он слева направо так же, как...

Определить, является ли введенный год високосным
&lt;html&gt; &lt;script type=&quot;text/javascript&quot;&gt; ,,, function isLeapYear (year) { return new Date(year, 1, 29).getMonth() == 1; } ,,,...

Определить, является ли введённый год високосным
3.Дано целое положительное число, соответствующее номеру года. Напишите программу, позволяющую определить является ли введённый год...

Определить, является ли введенный пользователем год високосным
3)На языке программирования С++ напишите программу, определяющую, является ли введенный пользователем год високосным, используя правило:...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru