Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
1

Сокращение кода и времени проверки (задача)

18.01.2017, 12:54. Показов 3637. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Однажды Вася очень долго просидел на остановке, прежде чем дождался своего автобуса. Чтобы как-то занять время, он решил записывать на листочке государственные регистрационные номера проходящих мимо автобусов, следующих по другому маршруту, нежели нужен был Васе. При этом производилась запись лишь основного номера, без учета региональной принадлежности. В итоге Васе удалось записать N таких номеров.

Основная часть государственного регистрационного номера состоит из 6 символов: трех букв и трех цифр. Сначала идет буква, затем 3 цифры и еще 2 буквы заканчивают запись. В качестве цифр могут использоваться любые цифры от 0 до 9, а в качестве букв только прописные буквы, обозначения которых присутствуют как в английском, так и в русском алфавите, т.е. только следующие символы: A, B, C, E, H, K, M, O, P, T, X, Y. Например, «P204BT» - правильный номер, а «X182YZ» и «ABC216» - нет.

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

Входные данные

Первая строка входного файла INPUT.TXT содержит единственное натуральное число N – количество записанных Васей номеров (N <= 50). Далее следует N строк с записями номеров автобусов. Длины строк от 1 до 300 и содержат только символы с кодами ASCII от 33 до 127 (не содержат пробелов, специальных и русских символов).

Выходные данные

В выходной файл OUTPUT.TXT выведите N строк, в i-й строке должно содержаться «Yes», если соответствующая i-я запись номера верна и «No» в противном случае.
HTML5
1
2
3
4
5
6
7
INPUT.TXT         OUTPUT.TXT
    5                  
P204BT                 Yes 
X182YZ                 No 
a216bc                  No      
A216BC                 Yes       
ABC216                  No
Задача лёгкая, я знаю как решить просто не могу понять как можно секономить время на написании условия if, если для каждой буквы и цифры писать условие много времени уйдёт
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2017, 12:54
Ответы с готовыми решениями:

Оптимизация [сокращение времени выполнения]
Всем привет! В общем стояла такая задача: Посчитать среднее количество букв в предложении,...

Оптимизация [сокращение времени выполнения]
Здравствуйте, стояла такая задача: Была сделана следующая программа: #include &lt;iostream&gt;...

Сокращение времени расчета, альтернативные варианты
Подскажите пожалуйста, возможно ли сократить время расчета данных вычислений в программе MAthcad.(...

Сокращение времени расчета (достигает 20-30 мин)
Я столкнулся с проблемой.В написанной программе на VBA выполнение расчета идет примерно за 20-30...

6
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
18.01.2017, 13:14 2
Лучший ответ Сообщение было отмечено no swear как решение

Решение

C++
1
2
3
4
5
char alf = "ABCEHKMOPTXY";
char bu;
if (strchr(alf, bu)!=NULL) ...
// цифры проверяются еще проще
if ('0' <= bu && bu <= '9') ...
1
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
18.01.2017, 13:16 3
Лучший ответ Сообщение было отмечено no swear как решение

Решение

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
#include <cctype>
#include <cstring>
#include <iostream>
#include <unordered_set>
#include <string>
 
bool CheckAlpha(const char c)
{
    static const std::unordered_set<char> us = {'A', 'B', 'C', 'E', 'H', 'K', 'M', 'O', 'P', 'T', 'X', 'Y'};
    return us.find(c) != us.end();
}
 
bool Check(const std::string &str)
{
    return str.length() == 6 &&
        CheckAlpha(str[0]) &&
        isdigit(str[1]) &&
        isdigit(str[2]) &&
        isdigit(str[3]) &&
        CheckAlpha(str[4]) &&
        CheckAlpha(str[5]);
}
 
int main()
{
    int N;
    std::cin >> N;
    std::string str;
    for (int i = 0; i < N && std::cin >> str; i++)
        std::cout << (Check(str) ? "Yes\n" : "No\n");
}
1
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
18.01.2017, 15:27  [ТС] 4
Цитата Сообщение от Байт Посмотреть сообщение
char alf = "ABCEHKMOPTXY";
Объявление не работает
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
18.01.2017, 15:30 5
Цитата Сообщение от no swear Посмотреть сообщение
Объявление не работает
C++
1
char alf[] = "ABCEHKMOPTXY";
2
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
18.01.2017, 15:34 6
Цитата Сообщение от no swear Посмотреть сообщение
Объявление не работает
Да, описочка моя. Звезду забыл (или [] как у MrGluck). Но неужто так сложно было догадаться?
1
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
18.01.2017, 16:24  [ТС] 7
Я не знаток C++ поэтому я бы наверное и не догадался
0
18.01.2017, 16:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2017, 16:24
Помогаю со студенческими работами здесь

Сокращение времени выполнения POST-запроса
Подскажите, пожалуйста, как можно сократить время выполнения POST запроса? WebRequest...

Сокращение кода
Как это можно сократить?...%-) if c1=ColorBox1.ItemIndex then begin if (c1=0)...

Сокращение кода
Встретился с задачей №61 на acmp. После некоторых махинаций с кодом пришел вот к такому варианту в...

Сокращение кода
Можно ли засунуть код HTML и CSS в какую-либо отдельную процедуру,чтоб можно было ёё каждый раз...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru