Как найти цифру в строке pascal

0 / 0 / 0

Регистрация: 09.12.2019

Сообщений: 3

1

Поиск чисел в строке

06.02.2020, 16:54. Показов 10171. Ответов 5


Студворк — интернет-сервис помощи студентам

Приветствую. Подскажите, как найти числа в строке.
Вводные данные следующие: вводится строка, которая содержит буквы и цифры, надо найти сумму цифр и сумму чисел.
Т.е. если ввели рандомную строку, для примера: aa55bb6cc77dd8
Надо получить на вывод:
1) Сумму цифр, т.е. результат от 5+5+6+7+7+8
2) Сумму чисел, т.е. результат от 55+6+77+8

Как найти сумму цифр, я разобрался. Но не могу понять, как выделить числа из строки.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

06.02.2020, 16:54

Ответы с готовыми решениями:

Поиск и вывод чисел в строке
Ввести текст, содержащий от 1 до 4 цифровых символов, отображающих целые числа от 1 до 2000. На…

Поиск вещественных чисел в произвольной строке символов
Ребят, всем привет!
Нужна программа на паскале на тему "работа со строковыми переменными". Суть…

Поиск в строке чисел
К примеру есть есть следующая строка: Баланс: 234 руб

Нужно из строки взять только числа и…

Поиск чисел в строке
Есть много строк по типу таких 115017.000,A,5558.44925,N,03802.29021,E,0.0,0.0,171017, нужно найти…

5

Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

06.02.2020, 17:10

2



0



0 / 0 / 0

Регистрация: 09.12.2019

Сообщений: 3

06.02.2020, 17:59

 [ТС]

3

Нахождение суммы цифр я уже сделал, не могу разобраться именно с числами



0



Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

06.02.2020, 19:09

4

Так я дал ссылку, смотри мои последние посты в той теме.



0



JuriiMW

5056 / 2630 / 2345

Регистрация: 10.12.2014

Сообщений: 9,993

07.02.2020, 04:34

5

Pascal
1
2
3
4
5
6
7
8
begin
  var s:=ReadLnString;
  var words:=s.Select(c->Char.IsDigit(c)?c:#32).JoinIntoString.ToWords;
  if words.Count > 0 then
    words.Select(word->word.ToInteger).Sum.Print
  else
    'нетуть!'.Print
end.

Если при наличии отсутствия цифр, устроит ответ 0, то можно так:

Pascal
1
2
3
begin
  ReadLnString.Select(c->Char.IsDigit(c)?c:#32).JoinIntoString.ToIntegers.Sum.Print;
end.

Ой! Это же паскаль без .NET…
В нём вот так:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
  s : String;
  sum, n, i : Integer;
begin
  ReadLn(s);
  sum := 0;
  n := 0;
  for i := 1 to Length(s) do
    if s[i] in ['0'..'9'] then
      n := n * 10 + Ord(s[i]) - 48
    else if n > 0 then
      begin
        inc(sum, n);
        n := 0;
      end;
  if n > 0 then
    inc(sum, n);
  WriteLn(sum);
end.



0



Cyborg Drone

Модератор

9588 / 4908 / 3244

Регистрация: 17.08.2012

Сообщений: 15,337

07.02.2020, 19:59

6

JuriiMW, это не полностью по заданию. Полностью по заданию можно так:

Pascal
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
var
  s: string;
  i, sd, sn, n, k, d: longint;
begin
  writeln('Введите строку:');
  readln(s);
  s := s + ' ';
  for i := 1 to length(s) do
    if s[i] in ['0'..'9'] then
      begin
        inc(k);
        d := ord(s[i]) - ord('0');
        sd := sd + d;
        n := 10 * n + d
      end
    else
      begin
        sn := sn + n;
        n := 0
      end;
  if k > 0 then
    begin
      writeln('Сумма цифр  = ', sd);
      writeln('Сумма чисел = ', sn)
    end
  else writeln('Строка не содержит цифр')
end.



0



На занятии будет рассмотрен Строковый тип данных в Паскаль и примеры работы с ним

Содержание:

  • Символьный тип char в Паскале
    • Основные функции для работы с символами
  • Строковые переменные в Паскаль
  • Функции работы со строками в Pascal
  • Стандартные методы и запросы (pascalAbc.net)
    • Посимвольный ввод до пробела

Символьный тип char в Паскале

Символьной переменной соответствует тип char:

Инициализация символьной переменной:

Основные функции для работы с символами

Функция преобразует целое число, имеющее тип BYTE, в один символ ASCII-кода:

Пример: распечатать двойную кавычку по ее коду в ASCII-таблице

1
2
3
4
5
6
7
var a:char;
    i:byte;
begin
     i:=34; {код, соответствующей символу " в ASCII-таблице}
     a:=chr(i);
     writeln(a)
end.

Функция возвращает порядковый номер символа параметра в таблице ASCII:

Пример: Распечатайте часть таблицы ASCII, конкретнее — символы, соответствующие кодам 32-255

1
2
3
4
5
var i: integer;
begin
     for i:=32 to 255 do
         write(chr(i):3);
end.

Примеры:

var c := 'Ю';
var n := Ord(c); // n := c.Code
Print(n); // 1070
c := Chr(n);
print(c); // Ю

Символьные константы: #код – символ с определенным кодом:

#10 – новая строка (Linux)
#13#10 – новая строка (Windows)
#9 – tab 
Print('a'#10'b');

Методы класса типа char

char.IsLetter(с); // буква ли, boolean
char.IsDigit(с); // десятичное ли число, boolean
char.IsLower(с); // буква нижнего регистра, boolean
char.IsUpper(с); // буква верхнего регистра, boolean
char.IsPunctuation(с); // знак препинания, boolean
 
с := char.ToLower(с) ;
с := char.ToUpper(с);

Операции для типа char

c1 < c2;// сравнение по коду
c1 > c2;
с in ['a','e','i','o','u',’y’]; // c принадлежит гласным
с in ['a'..'z','A'..'Z’]; // c принадлежит английским буквам

Задание:
Запросите ввести два символа. Определите, принадлежат ли символы английским буквам, и если да, то гласные ли это буквы. Преобразуйте в верхний регистр ту букву, код которой меньше.

Пример вывода:

Введите два символа:
u z
u - английская буква, гласная
z - английская буква, не гласная
Буква u в верхнем регистре U

Некоторые выражения:

//c принадлежит диапазону:
c.InRange('a'..'z');  
 
//Трансформация символа в цифру: 
var n := Ord(c)Ord('0');
 
// Увеличение кода символа на n: 
c := Chr(Ord(c) + n);
   // или 
Inc(c,2);

Строковые переменные в Паскаль

Строковые переменные в Паскале имеют тип String

Объявление и инициализация строковой переменной:

1
2
3
4
5
var a:string;
begin
 a:='Привет всем!';
 writeln(a);
end.

Ввод значения строковой переменной с клавиатуры:

1
2
3
4
5
6
var a:string;
begin
 writeln('Введите слово');
 readln(a);
 writeln('Вы ввели слово ',a);
end.

Строка «рассматривается» компилятором, как массив букв:

для компилятора:

s[1]='Б'   s[2]='а'   s[3]='н'   s[4]='к'   s[5]='а'

Важно: Значения строковых переменных всегда заключаются в одинарные кавычки

Функции работы со строками в Pascal

Исходные данные Операция Результат
s1:='Мото';      s2:='роллер'
s3:=s1+s2;
s3=’Мотороллер’
s5:='Мотороллер';
k:=Pos('рол',s5);
k=5
s3:='Мотороллер';
l:=Length(s3);
l=10
s3:='астроном';
s4:=Copy(s3,3,4);
s4= ‘трон’
s5:='Коробочка';
Delete(s5,4,2);
s5=’Корочка’
s6:='Рука'; s7:='баш';
Insert(s7,s6,3);
s6=’Рубашка’
x:=2.73284;
Str(x:4:2,s8);
s8=’2.73′
s8='2.73';
Val(s8,x,Osh);
x=2.73

Пример: Подсчитать кол-во букв «f» в тексте.

Показать решение:

Паскаль PascalAbc.NET
1
2
3
4
5
6
7
8
9
10
11
var s:string[30];
    n,i:integer;
begin
 writeln('введите текст');
 readln(s);
 n:=0;
 for i:=1 to length(s) do
     if s[i]='f' then
        n:=n+1;
 write('в тексте букв f = ',n)
end.
1
2
3
4
5
6
7
8
begin
  var s := readString('введите текст');
  var n := 0;
  foreach var c in s do
    if c = 'f' then
      inc(n);
  Print(n);
end.
 

Операции со строками:

s1 + s2  // конкатенация s1 и s2
s1 += s2  
s1 < s2  // лексикографическое сравнение
  'abcd' < 'aad'
s * n    // конкатенация n копий строки s
s[a:b]       // срез (индексация с 1)
s[a:b:step]  // срез с шагом
s?[3:5]   ;   // безопасный срез (не вызывает ошибок)
s?[a:b:step] // безопасный срез с шагом
s1 in s

String 1. Дан текст. Удалить в нём все слова кот. Выполнить задание двумя способами: используя стандартные функции работы со строками, и, работая со строкой как с массивом символов.

Пример выполнения:

введите строку 
мой кот - хороший кот
Результат: мой  - хороший 

* Задание повышенной сложности: запросить у пользователя ввести подстроку, которую требуется удалить из исходной строки.

String 2. Составить программу проверки, есть ли в тексте буква s. Выдавать true (если найдено) или false (если не найдено).
Примеры использования логического типа (true и false) смотрите здесь.

Пример выполнения:

Введите строку:
Hello world
Результат: false
Введите строку:
Hello students
Результат: true

String 3. Имеется строка текста. Требуется написать программу, которая зашифровывала бы ее в другую строку — заменяя каждый символ текста символом, следующим по порядку в таблице ASCII. Тогда слово КОТ превратится в слово ЛПУ. Требуется составить и программу дешифровки.
Использовать функции для работы с символами: chr и ord pascal.

String 4. Дано предложение, определить количество слов в нём.
Подсказка: считать количество слов по количеству пробелов в строке.

* усложненный вариант: предусмотреть, что в начале или в конце введенной строки введен пробел

Пример: Найти количество цифр в строке.

Показать решение:

Паскаль PascalAbc.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const
  m = ['0'..'9'];
 
var
  s: string;
  i, k: byte;
 
begin
  read(s);
  k := 0;
  for i := 1 to length(s) do
    if s[i] in m then inc(k);
  writeln('цифр  = ', k);
  readln;
end.
1
2
3
4
5
6
7
8
begin
  var s := readString;
  var k := 0;
  foreach var c in s do
    if char.IsDigit(c) then
      k += 1;
  Print($'цифр  = {k}');
end.

Пример: Определить является ли данное слово перевертышем (палиндромом).

Показать решение:

Паскаль PascalAbc.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
var a,b,c:string;
    i:longint;
begin
write('введите слово:');
readln(a);
b:='';
for i:=1 to length(a) do
    b:=a[i]+b;
if a=b then
   write('перевертыш')
   else
   write('не перевертыш');
end.
1
2
3
4
5
6
7
8
9
10
// с помощью среза
begin
  var s := readString;
  var n := s.Length;
  var s1 := s[::-1];
  if s = s1 then
    print('перевертыш')
  else
    print('не перевертыш');
end.

String 5. Составить программу подсчета количества встречаемых в тексте сочетаний букв «ма».

String 6. Определить, встречается ли в тексте сочетание букв «ку».

Пример выполнения:

Введите строку:
Кума
Результат: да
Введите строку:
Дед
Результат: нет

String 7. Заменить данную букву в слове другой буквой (буквы вводит пользователь).

Пример выполнения:

Введите строку:
Барабулька
Введите букву, которую заменить:
а
Введите букву, на которую заменить:
у
Результат: Бурубульку

String 8. Дано предложение, определить количество слов, начинающихся с буквы «к».

String 9. Дано предложение, состоящее из букв и цифр. Определить слово с наибольшим количеством букв (не цифр). В качестве подсказки можете использовать предложенный ниже алгоритм:

Пример выполнения:

Введите строку:
1234567891011слово следующееСлово иСледСлово
Слово с максимальным количеством букв:
следующееСлово 

Алгоритм:

  • После того как строка считывается (вводится), измеряется ее длина (функция length).
  • Далее стока просматривается посимвольно в цикле while или for.
  • Если символ строки входит в множество букв (const letters=['a'..'z'];), то этот символ прибавляется к первому элементу массива слов строки (... array [1..100] of string).
  • Если символ равен пробелу, то увеличиваем счетчик для массива слов и переходим к следующей итерации цикла.
  • String 10. Дано предложение. Расположить слова в нем в порядке возрастания числа букв в словах. В качестве подсказки можете использовать предложенный ниже алгоритм:

    Алгоритм:

  • В цикле до конца длины строки выполняем: если текущий символ строки — не пробел, то формируем элемент массива arrayS (arrayS: array[1..100] of string; строковый массив — будущий массив из слов предложения). Добавляя каждую букву к элементу arrayS[k].
  • При достижении пробела переходим к следующему элементу arrayS[k] и начинаем формировать следующее слово.
  • После того, как массив из всех слов arrayS сформирован: выполняем сортировку массива по длине букв в словах.
  • String 11. Ввести имя, отчество и фамилию. Преобразовать их к формату «фамилия-инициалы».

    Пример:
    
    Введите имя, фамилию и отчество:
    Иван Алибабаевич Попов
    Результат:
    Попов И.А. 
    

    Примечание:
    Использовать функции: Pos, Copy, Delete

    String 12. Программа должна позволять ввести текст, и потом удалять в нем все восклицательные знаки, расположенные непосредственно перед запятой, и выводить измененный текст на экран.

    Пример:

    Входной текст: 
    Алгоритм — это  правила выполнения определенных действий!,
     предписание исполнителю! совершить последовательность действий!, 
    набор команд для компьютера!
    Выходной текст:
    Алгоритм — это  правила выполнения определенных действий, 
    предписание исполнителю! совершить последовательность действий, 
    набор команд для компьютера!
    

    Трудность низкая:
    Программа должна формировать в памяти вторую строковую переменную с измененным текстом, а потом выводить ее на экран.

    Трудность высокая:
    Программа должна преобразовывать исходную строку без использования дополнительных переменных, и затем выводить ее на экран.

    А теперь рассмотрим олимпиадное задание по Паскалю:

    Задача Цезарь: Шифр Цезаря заключается в том, что каждая буква исходной строки заменяется третьей после нее буквой в алфавите, который считается написанным по кругу (все символы текста латинские и прописные).

    * Решить ту же задачу, в которой сдвиг будет не на 3 позиции, а на k, причем отрицательное значение является признаком сдвига влево, положительное — вправо.

    Показать решение:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    var a:char;
        i,n:byte;
        s,s1:string;
    begin
    s1:='';
    readln(s);
    for i:=1 to length(s) do
        begin
         n:=ord(...); 
         n:=n+3;
         if n=123 then n:=97; {в ASCII 120 - x, 97 - a}
         if ...; {в ASCII 121 - y, 98 - b}
         if ...; {в ASCII 122 - z, 99 - c}
         a:=chr(...);
         s1:=...;
         end;
         writeln(s1)
    end.

    Стандартные методы и запросы (pascalAbc.net)

  • CountOf — количество вхождений
  • 'мама мыла раму'.CountOf('м').Print; // 4
  • Contains — содержит ли (логическая)
  • 'мама мыла раму'.Contains('б').Print; // False
  • IndexOf — индекс искомого вхождения
  • 'hello world'.IndexOf('w').Print; // 6
  • Remove — удаление вхождения
  • 'hello world'.Remove(' ').Print; // helloworld
  • Replace — замена вхождений символа на другой символ
  • 'hello world'.Replace('l','L').Print; // heLLo worLd

    и другие…

    Запросы LINQ со строками

    * LINQ (Language Integrated Query) — язык интегрированных запросов

  • Where — Фильтрация массива (последовательности) с условием
  • var sArr:=Arr('aab','bcd','efg');
    sArr.Where(w->w.Contains('b')).Print; // aab bcd
    sArr.Where(w->w.CountOf('a')=2).Print; // aab

    Задания: Предыдущие задания выполнить с использованием стандартных методов и запросов фильтрации.

    Посимвольный ввод до пробела

    Посимвольный ввод удобен для «мгновенной» обработки символов в строке.

    Пример: посимвольно считывать фамилию

    Решение:

    var name: array[1..n] of string;
        c:char;
    ...
    

    посимвольный ввод строк

    Для организации массива символьных строк:

    Пример: посимвольно считывать фамилии и заносить их в массив фамилий

    Решение:
    массив символьных строк

    String 13. Программа должна позволять ввести предложение до точки (.). Необходимо в введенном тексте вместо всех букв «ё» ставить буквы «е». Выполнить, работая со строкой посимвольно: программа должна формировать в памяти вторую строковую переменную с измененным предложением, а потом выводить ее на экран.

    Пример:

    Входной текст: 
    Алгоритм — это  правила выполнения определённых действий.
    Выходной текст:
    Алгоритм — это  правила выполнения определенных действий.
    

    String 14. с клавиатуры вводится число N, обозначающее количество студентов в группе, а затем – N строк, в каждой из которых – информация о студенте в формате:
    <Фамилия> <год рождения> <оценка>

    1. Все данные разделяются одним пробелом. Нужно подсчитать, сколько студентов получили отметку 5.
    2. Вывести фамилии студентов, у которых оценка 2.
    3. Вывести фамилии студентов, родившихся в 1996 году.

    Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

    проверь себя

    program lab3_1;
     
    const
      alf = ['а'..'я', 'А'..'Я'];
     
    var
      text: string;
      k, i, l, q: integer;
      s: array[1..4] of string;
     
    begin
      k := 0;
      writeln('Введите текст:');
      readln(text);
      for i := 1 to length(text) do
      begin
        k := k + 1;
        if (text[k] in alf) then
        begin
          delete(text, k, 1);
          k := k - 1;
        end;
      end;
      
      Text := text + ' ';
      i := 0;
      l := 0;
      q := length(text);
      while q > 0 do 
      begin
        i := i + 1;
        q := q - 1;
        if text[i] <> ' ' then
        begin
          l := l + 1;
          while text[i] <> ' ' do
          begin
            s[l] := s[l] + text[i];
            i := i + 1;
            q := q - 1;
          end;
        end;
      end;
      writeln;
      for i := 1 to l do
        write(s[i], ' ');
      
    end.

    Как найти в определенном предложении всё слова, где присутствуют цифры.
    То есть в итоге вывести количество таких слов.
    Делал вот так но что то не работает

    Function num_count(s:string):integer;
    Var i,num:integer;
    n:0..9;
    word:string;
    begin
    num:=0;
    word:='';
    for i:=1 to Length(S) do //просматриваем всю строку
    begin
    if(S[i]=' ') then    //если пробел то новое слово
      word:=''
    else
    begin
      //если находим цифру то прибавляем счетчик
    if Pos(inttostr(n),word)<>0 then
    num:=num+1;
    word:=word+S[i];
    Continue;
    end;
    
    Result:= num;
    end;end;
    

    задан 15 дек 2011 в 13:18

    zerpico's user avatar

    2

    Вариант выше при пробелах подряд в середине и конце строки ошибается

    А так же использует долгие функции

    Вот приемлимый код по скорости и объему кода

    function num_count(s:string):integer;
    var
      i,num,len:integer;
    
    begin
      num:=0;
      i:=1;
      len:=length(s);
    
       while (i<=len) do
            if (s[i] in ['0'..'9'] )
             then
                begin
                inc(num);
                while ( (s[i] <> ' ') and (i<=len) ) do inc(i);
                end
             else inc(i);
    
      result:= num;
    end;
    

    ответ дан 15 дек 2011 в 16:37

    botanegg's user avatar

    Поправил.

        Function num_count(s:string):integer;
        Var
          i,num:integer;
        begin
    
          num:=0;
    
          i:=1;
    
         While (S[Length(S)]=' ') Do // удаляю пробелы в конце
           Delete(S, Length(S), 1);
    
    // Вместо предыдущего цикла в Delphi можно использовать S:=Trim(S);
    
            While (i<=Length(S)) Do
              Begin
                If (S[i]=' ') Then
                  Begin
                    Repeat // теперь не ошибётся
                      delete(S, 1, 1);
                    Until (S[1]<>' ');
                    i:=1;
                  End;
    
                if (S[i] In ['0'..'9']) then
                  Begin
                    num:=num+1;
                    If (Pos(' ', S)=0) Then
                      Break // можно написать так
                      {Begin // или так
                        Result:= num;
                        Exit;
                      End}
                    Else
                      delete(S, 1, Pos(' ', S));
                    i:=1;
                  End
                Else
                  Inc(i);
              End;
    
          Result:= num;
        end;
    

    Теперь мой вариант не ошибается, если пробелов в центр строки натыкать, хотя достаточно велик по объёму кода (оптимизацией я тут не занимался — написал то, что первое в голову пришло).

    ответ дан 15 дек 2011 в 13:30

    DelphiM0ZG's user avatar

    DelphiM0ZGDelphiM0ZG

    3,03714 серебряных знаков18 бронзовых знаков

    2

    Бывалый
    ***

    Группа: Пользователи
    Сообщений: 198
    Пол: Мужской

    Репутация: -  1  +



    вот что получилось с использованием конечного автомата

    procedure TForm1.Button1Click(Sender: TObject);
    type Mtype=(H,A,B,C,D,E,F,S);
    var S1,S2: string;
    i: integer;
    q: Mtype;
    begin
    S1:=Edit1.text+' ';
    i:=1;
    S2:='';
    q:=H;
    Repeat
    case q of
    H: case S1[i] of
    '.': begin
    q:=B;
    S2:=S2+S1[i];
    Inc(i);
    end;
    '+','-': begin
    q:=A;
    S2:=S2+S1[i];
    Inc(i);
    end;
    '0'..'9': begin
    q:=C;
    S2:=S2+S1[i];
    Inc(i);
    end;
    else begin
    q:=H;
    Inc(i);
    end;
    end;
    B: case S1[i] of
    '0'..'9': begin
    q:=D;
    S2:=S2+S1[i];
    Inc(i);
    end;
    else begin
    q:=H;
    S2:='';
    end;
    end;
    A: case S1[i] of
    '0'..'9': begin
    q:=C;
    S2:=S2+S1[i];
    Inc(i);
    end;
    else begin
    q:=H;
    S2:='';
    end;
    end;
    C: case S1[i] of
    '.': begin
    q:=F;
    S2:=S2+S1[i];
    Inc(i);
    end;
    '0'..'9': begin
    q:=C;
    S2:=S2+S1[i];
    Inc(i);
    end;
    else q:=S;
    end;
    F: case S1[i] of
    '0'..'9': begin
    q:=D;
    S2:=S2+S1[i];
    Inc(i);
    end;
    else q:=S;
    end;
    D: case S1[i] of
    '0'..'9': begin
    q:=D;
    S2:=S2+S1[i];
    Inc(i);
    end;
    else q:=S;
    end;
    end;
    Until q=S;
    Label1.Caption:=S2;

    end;

    а вот как было до этого

    procedure TForm1.Button1Click(Sender: TObject);
    var s,s2: string;
    m,m2,m3,m4,m5,z: sss;
    i,k,j,n: integer;
    f,f2: boolean;
    begin
    Label1.Caption:='';
    s:=Edit1.Text;
    m:=['0'..'9', '+', '-'];
    z:=['+','-'];
    m2:=['0'..'9', '.', ','];
    m3:=[',', '.'];
    m4:=['0'..'9', '+', '-', ',', '.'];
    m5:=['0'..'9'];
    s2:='';
    i:=0;
    n:=0;
    k:=0;
    f:=False;
    f2:=False;
    Repeat
    Inc(i);
    if (S[i] in m) then k:=i;
    if ((S[i] in z) and (S[i+1] in m5)) or ((S[i] in m5) and (S[i+1] in m5)) then f:=True;
    if S[i] in m5 then f2:=True;
    until (((S[i] in m) and (pr(S[i], S[i+1],z)=True)) and (f=True)) or (i=Length(s)) or f2=True;

    f:=False;

    for j:=k to Length(s) do
    begin
    if s[j] in m then begin
    f:=True;
    Break;
    end;
    end;

    k:=j;

    if f=true then begin
    for j:=k to Length (S) do
    begin
    if S[j] in m4 then
    begin
    if (S[j]=',') or (S[j]='.') then n:=n+1;
    if (n=1) then if (S[j] in m5) or (S[j+1] in m5) or (j=Length(S)) then s2:=s2+s[j]
    else break;
    if (n=0) and (S[j] in m) then s2:=s2+s[j];
    if S[j] in m3 then begin
    if pr(S[j],S[j+1],m3)=False then Break; end;
    end;
    if (not (S[j+1] in m2)) or (n>1) then Break;
    end;
    end;

    f:=False;

    for i:=1 to Length(s2) do begin
    if s2[i] in m5 then begin
    f:=True;
    Break;
    end;
    end;

    if (s2='') or (f=False) then Label1.Caption:='net chisla'
    else Label1.Caption:=s2;
    end;

    разница, мягко говоря, огромная smile.gif

    Добавлено через 1 мин.
    IUnknown, спасибо за совет smile.gif

    Понравилась статья? Поделить с друзьями:
  • Как найти девушку по фото инстаграм
  • Как найти список заблокированных в одноклассниках
  • Как исправить затирку между плиткой
  • Как исправить текст в сканированном тексте
  • Как найти ник для одноклассниках