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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 20:25   #1
zeil94
 
Регистрация: 13.12.2012
Сообщений: 8
Восклицание Начинается ли строка с числа и равняется ли количество букв этому числу

Задали текст, состоящий только из цифр и букв.Определить или начинается текст с некоторой ненулевой цифры, за которой следуют только буквы, и их количество равно значению этой цифры.
Надо сделать без String, а только с помощью Char.Буду очень благодарен.
Вот есть эта задача только со стрингом:
Код:
const
  n: set of char = ['1'..'9'];
 
var
  s: string;
  i, a, b: integer;
  p: boolean;
 
begin
  p := false;
  write('Введите строку: ');
  readln(s);
  for i := 2 to length(s) do
    if s[1] in n then begin
      p := true;
      if s[i] in n then begin
        p := false;
        break;
      end;
    end;
  
  if p = false then writeln('Нет') else
  if p = true then begin
    val(s[1], a, b);
    if (length(s) - 1) = a then writeln('Да')
    else writeln('Нет');
  end;
end.
zeil94 вне форума Ответить с цитированием
Старый 19.12.2012, 21:52   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Стринг можно рассмотреть как массив чаров
Код:
uses
  crt;
const
  digits: set of char = ['0'..'9'];
  abc: set of char = ['a'..'z', 'A'..'Z'];
 var 
  MyString: array[1..255] of char;
  ch: char;
  i, j, k: integer;
begin
  write('input string: ');
  k := 0;
  repeat
    ch := readkey;
    if ch in digits + abc then begin
      inc(k);
      MyString[k] := ch;
      write(ch);
    end;
  until ch = #13;
  writeln;
  val(MyString[1], j, i);
  if (i > 0) or (j = 0) or (j <> k-1) then begin
    writeln('NO');
    readln;
    exit
  end;
  for i := 2 to k do 
    if not (MyString[i] in abc) then begin
      writeln('NO');
      readln;
      exit
    end;
  writeln('YES');
  readln  
end.
eoln вне форума Ответить с цитированием
Старый 19.12.2012, 23:03   #3
zeil94
 
Регистрация: 13.12.2012
Сообщений: 8
По умолчанию

Спасибо, все супер) а можно как то сделать также только без readkey??
zeil94 вне форума Ответить с цитированием
Старый 20.12.2012, 10:12   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

напишите вместо ch := ReadKey;
Код:
Read(ch);
или ReadLn(ch), по желанию (поведение при вводе будет чуть другим)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить, какое количество цифр числа надо исправить, чтобы исправленное совпадало с обращенным к заданному числу M Krusad Паскаль, Turbo Pascal, PascalABC.NET 2 08.10.2012 12:54
определить все двузначные числа сумма квадратов цифр которых кратна числу 15 [Pascal] mrRastom Помощь студентам 5 16.12.2010 09:47
Подсчитать количество букв "А" в предложении и общее количество букв.В тексте из файла несколько строк. kvas91 Общие вопросы C/C++ 3 14.11.2010 16:51
Подсчитать количество слов и количество букв MDSIQ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.11.2010 16:57
Найти два числа,сумма каких равняется сумме всех других чисел, которые остались! Помогите будьте людьми! Snake08 Паскаль, Turbo Pascal, PascalABC.NET 4 08.12.2008 18:33