Поиск по этому блогу

понедельник, 28 мая 2018 г.

Задача "Номера автобусов"


Однажды Вася очень долго просидел на остановке, прежде чем дождался своего автобуса. Чтобы как-то занять время, он решил записывать на листочке государственные регистрационные номера проходящих мимо автобусов, следующих по другому маршруту, нежели нужен был Васе. При этом производилась запись лишь основного номера, без учета региональной принадлежности. В итоге Васе удалось записать 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» в противном случае.
Пример
INPUT.TXT
OUTPUT.TXT
5
P204BT
X182YZ
a216bc
A216BC
ABC216

Yes
No
No
Yes
No
Решение
var  s,p,k:string; d:array[1..50] of string;
n,i:integer;
f,f1:text;
begin
s:='ABCEHKMOPTXY';
p:='0123456789';
assign(f,'input.txt');
    reset(f);
     assign(f1,'output.txt');
     rewrite(f1);
    readln(f,n);
    for i:=1 to n do
    readln(f,d[i]);
     
      
    for i:=1 to n do
    begin
    k:=d[i];
    if (pos(k[1],s)=0) or (pos(k[2],p)=0) or (pos(k[3],p)=0)or(pos(k[4],p)=0)or(pos(k[5],s)=0)or(pos(k[6],s)=0)or(length(k)<>6) then writeln(f1,'No') else writeln(f1,'Yes');
    end;
    writeln();
      
  close(f1);  close(f);
end.

Комментариев нет:

Отправить комментарий