Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2015, 16:00   #1
DanTheKing
Новичок
Джуниор
 
Регистрация: 09.02.2015
Сообщений: 2
Вопрос Задача на номерные знаки машин

Привет Форумчанины
копался я недавно в залежах бумаг своих
и отыскал "старые" задачки по Pacal,и вот одна из них ввела меня в ступор.
попытаюсь обьяснить условие:
Есть 4 ФОРМАТА номерных знаков ->

1)A457NB (буква,три цифры,две буквы)
2)ZX357(две буквы,три цифры)
3)HO2749(две буквы,четыре цифры)
4)1234CB(четыре цифры,две буквы)

и соответственно каждому формату присвоен свой тип транспортного средства
для
(формата)
1) это 1
2) 2
3) 3
4)4

а теперь само условие
вводные данные-это номерные знаки в соответствующем формате (на входе 3 знака)
а вывод - это соответствующее этому номерному знаку номер тр.средства

ниже привожу мой код
(насколько я понял,я там напутал что то с циклами)
прошу помощи
Код:

 var 
 c:string;
 b:string;
a:integer;
begin


for a:=1 to 3 do
 readln(b);
 
 for a:=1 to length(b) do 
 begin
 c:='';

 if(b='0')or(b='1')or(b='2')or(b='3')or(b='4'
 )or(b='5')or(b='6')or(b='7')
 or(b='8')or(b='9')then

 c:=c+'0'
else
 c:=c +'A';


 
 if (c='A000AA')then 
 writeln(1)
  else 
 if(c='AA000')then 
    writeln(2)
  else 
 if(c='AA0000')then 
  writeln(3)
  else 
 if(c='0000AA')then 
  writeln(4)
   else 
   writeln(0)
 end;  
   end.
DanTheKing вне форума Ответить с цитированием
Старый 09.02.2015, 16:30   #2
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Код:
var
 c, b:string;
 a, i:integer;
const
 d: set of char = ['0','1','2','3','4','5','6','7','8','9'];
begin

for i:=1 to 3 do
begin
 readln(b);
 c:='';
 for a:=1 to length(b) do
     begin
     if b[a] in d then
     c:=c+'0'
     else
     c:=c +'A';
     end;

 if (c='A000AA')then
  writeln(1)
  else
 if(c='AA000')then
  writeln(2)
  else
 if(c='AA0000')then
  writeln(3)
  else
 if(c='0000AA')then
  writeln(4)
  else
  writeln(0)
 end;
 Readln;
end.
Iron Monk вне форума Ответить с цитированием
Старый 09.02.2015, 16:36   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
1)A457NB (буква,три цифры,две буквы)
2)ZX357(две буквы,три цифры)
3)HO2749(две буквы,четыре цифры)
4)1234CB(четыре цифры,две буквы)
Код:
if (b[1] in ['A'..'Z']) and (b[1] in ['A'..'Z']) 
 and (b[3] in ['0'..'1'])  and (b[4] in ['0'..'1']) and (b[4] in ['0'..'1']) Then writeln(2) else

if (b[1] in ['A'..'Z']) and (b[1] in ['A'..'Z']) 
 and (b[3] in ['0'..'1'])  and (b[4] in ['0'..'1']) and (b[4] in ['0'..'1']) and (b[5] in ['0'..'1']) Then writeln(3) else

if (b[1] in ['A'..'Z'])  
 and (b[2] in ['0'..'1'])  and (b[3] in ['0'..'1'])  and (b[4] in ['0'..'1'])
 and (b[5] in ['A'..'Z']) and (b[6] in ['A'..'Z']) Then writeln(1) else

if (b[5] in ['A'..'Z']) and (b[6] in ['A'..'Z']) 
 and (b[1] in ['0'..'1'])  and (b[2] in ['0'..'1']) and (b[3] in ['0'..'1'])
 and (b[4] in ['0'..'1']) Then writeln(4) ;
Это если не учитывать проверку размера строки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.02.2015, 16:41   #4
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
if (b[1] in ['A'..'Z']) and (b[1] in ['A'..'Z']) 
 and (b[3] in ['0'..'1'])  and (b[4] in ['0'..'1']) and (b[4] in ['0'..'1']) Then writeln(2) else

if (b[1] in ['A'..'Z']) and (b[1] in ['A'..'Z']) 
 and (b[3] in ['0'..'1'])  and (b[4] in ['0'..'1']) and (b[4] in ['0'..'1']) and (b[5] in ['0'..'1']) Then writeln(3) else

if (b[1] in ['A'..'Z'])  
 and (b[2] in ['0'..'1'])  and (b[3] in ['0'..'1'])  and (b[4] in ['0'..'1'])
 and (b[5] in ['A'..'Z']) and (b[6] in ['A'..'Z']) Then writeln(1) else

if (b[5] in ['A'..'Z']) and (b[6] in ['A'..'Z']) 
 and (b[1] in ['0'..'1'])  and (b[2] in ['0'..'1']) and (b[3] in ['0'..'1'])
 and (b[4] in ['0'..'1']) Then writeln(4) ;
Это если не учитывать проверку размера строки.
in ['0'..'9'] всё же...
Iron Monk вне форума Ответить с цитированием
Старый 09.02.2015, 17:04   #5
DanTheKing
Новичок
Джуниор
 
Регистрация: 09.02.2015
Сообщений: 2
По умолчанию

Спасибо!) заодно заметил свои глупые ошибки)
DanTheKing вне форума Ответить с цитированием
Старый 09.02.2015, 17:05   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
in ['0'..'9'] всё же...
А-А-А!!!!
Вот это провтыкал!!!!
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.02.2015, 17:17   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Мне от Iron Monk нравится, чуть переделал
Код:
  for a:=1 to length(b) do
    case b[a] of
    '0'..'9': b[a]:='0';
    'A'..'Z': b[a]:='A';
    else b[a]:='?';
    end;
  if b='A000AA'      then writeln(1)
  else if b='AA000'  then writeln(2)
  else if b='AA0000' then writeln(3)
  else if b='0000AA' then writeln(4)
                     else writeln(0);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Номерные радиостанции Дубовый Свободное общение 10 20.01.2014 20:11
Класс машин Максим 116 Помощь студентам 3 26.11.2013 00:33
тяжелая, но интересная задача: Дано 3 числа. Между ними можно ставить знаки операций: сложения, вычитания, умножения, деления ВДПУ Помощь студентам 2 25.02.2012 19:59
Задача на C# - заданы цифры - расставить знаки сложения и вычитания так, чтобы получилось выражение с заданным результатом eduard93 Помощь студентам 1 08.12.2011 00:03
задача - Даны номерные знаки автомашин.Определите,есть ли среди них одинаковые. NATKA Помощь студентам 3 01.12.2008 19:35