Форум программистов, компьютерный форум CyberForum.ru

Распознавание автомобильных номеров - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перебрать все сюръекции f:{0,1,…,m-1} ® {0,1,…,n-1} http://www.cyberforum.ru/cpp-beginners/thread956918.html
Перебрать все сюръекции f:{0,1,…,m-1} ® {0,1,…,n-1}
C++ как корректно завершить COM порт Здравствуйте. Пишу программу на С++ CLR для считывания с устройства пакетов данных. Но тут напоролся на проблему, которую не могу решить. Передача производится через Com port, открываю/ закрываю порт,все хорошо. Если вдруг выдернуть шнур USB, то программа аварийно завершаетсяб выводится сообщение что порт недоступен, но Com порт остается в подвисшем состоянии,он отображается в диспетчере... http://www.cyberforum.ru/cpp-beginners/thread956917.html
Вычислить среднее арифметическое C++
Вычислить среднее арифметическое четных чисел, некратных четырем в диапазоне от 1 до 200.
С++ найти сумму каждой строки в 2 мерном массиве C++
Только предмет появился хз как делать ничё необьясняют((( Помогите #include<stdio.h> #unclude<math.h> int main() } int mas; for(i=0; i<n;i++); for(j=0; j<m;i++); а чё дальше я низнаю.
C++ Перевести с Pascal на C++ http://www.cyberforum.ru/cpp-beginners/thread956884.html
Всем привет) есть задачи: 1) Поменять местами в каждом слове первую половину слова со второй. Есть решение этих задач, но нужно мне помочь перевести их на C или C++. Помогите пожалуйста, очень нужно) коды ниже: 1 задача: program OverLord; uses crt; var s,s1,s2:string;
C++ Нужен совет !На что заменить гиганский массив Добрый день , пишу Рекурсивный обходчик каталогов под linux. К примеру есть каталог /var/ и нужно получить все его подкаталоги и каталоги подкаталогв. В итоге имею массив свыше 100 тыс. строк . На что программа естественно ругается. В голову приходит мысль записи во временный файл. Правильно ли будет это ? Так как с начало придется записать первый уровень каталогов в файл а потом их считать для... подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.09.2013, 12:54     Распознавание автомобильных номеров
Когда-то делал что-то подобное:
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
125
126
127
128
129
130
131
#include <iostream>
#include <string>
#include <cctype>
#include <cstdlib>
#include <sstream>
using namespace std;
 
//Обычный номер начинается двумя или тремя цифрами, 
//после которых следуют три больших латинских буквы. 
//Например: «367ARZ», «82ZBG». 
//Специальные номера имеют длину до 9 знаков, 
//номер должен заканчиваться хотя бы одной цифрой, 
//остальные символы - большие латинские буквы. 
//Например: «MEDIA782», «R2», «MARIKA1».
 
bool f_ordinary(const string &str)
{
    // последняя буква
    
    // проверка на три буквы в конце
    size_t i = str.size();
    if (!isalpha((unsigned char)str[i - 2]) ||
        !isalpha((unsigned char)str[i - 3])) return false;
     
    // проверка на 2 или 3 цифры в начале
    i = 1;
    for ( ; i < 3; ++i)
        if (!isdigit((unsigned char)str[i])) break;
    if (i == 3 && str.size() == 6) return true;
    if (i == 2 && str.size() == 5) return true;
    
    return false;
}
 
// нужна, если цифры-буквы не могут идти вперемежку
bool f_special(const string &str)
{
    //последняя цифра
 
    // поиск буквы
    int alpha = str.size() - 2; // индекс, с которого должны начинаться буквы
    for ( ; alpha >= 0; --alpha)
        if (isalpha((unsigned char)str[alpha])) break;
    
    // остальные должны быть буквами
    for ( ; alpha >= 0; --alpha)
        if (!isalpha((unsigned char)str[alpha])) break;
 
    if (alpha == -1) return true;
    
    return false;   
}
 
 
int f_parstr(const string &str)
{
    // больше 9 символов или меньше 2
    if (str.size() > 9 || str.size() < 2) return 1;
    
    // не буквы и не цифры, нижний регистр, не латинские               
    for (size_t i = 0; i < str.size(); ++i)
        if (!isalnum((unsigned char)str[i])        ||
             islower((unsigned char)str[i])        ||
                     (unsigned char)str[i] > 127 ) return 2; 
    
    int n = 0, m = 0;
    // все буквы
    for (size_t i = 0; i < str.size(); ++i)
        if (isdigit((unsigned char)str[i])) ++n;
    if (!n) return 3; 
    
    // все цифры
    for (size_t i = 0; i < str.size(); ++i)
        if (isalpha((unsigned char)str[i])) ++m;
    if (!m) return 4;
 
    // если последняя буква и не 6, и не 5 символов 
    if (isalpha((unsigned char)str[str.size() - 1]) && 
       ((str.size() != 6 ) && (str.size() != 5 ))) return 5;
 
    // если последняя буква (символов 5 или 6) то проверка правильности обычного
    if (isalpha((unsigned char)str[str.size() - 1]))
    {
        if (f_ordinary(str)) return 11;
        else return 6;
    }
    else // если последняя цифра, то:
         
         // вариант 1)  если цифры-буквы не могут идти вперемежку, 
         // проверка правильности специального
    /*{
        if (f_special(str)) return 12;
        else return 7;
    }*/
    
    // вариант 2) цифры-буквы могут идти вперемежку
    return 12;
     
    return 0;
}
 
 
int main()
{
   string number = "367ARZ 83ZHG EIA7F2 R2 MARIKA1";
   stringstream s;
   s << number;
   
   do
   {
   s >> number;
 
   int i = f_parstr(number);
 
   switch (i)
   {
        case 11 : cout << "Ordinary" << endl;
                  break;
        case 12 : cout << "Special" << endl;
                  break;
        case 6  : cout << i << " Incorrect Ordinary" << endl;
                  break;
        case 7  : cout << i << " incorrect Special" << endl;
                  break;
        default : cout << i << " Error!" << endl;
   }
   } while (!s.eof());
   
   system("pause");
   return 0;
}
 
Текущее время: 22:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru