Автор Тема: Обработка строк!  (Прочитано 1947 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн djdoka

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Обработка строк!
« : 02 Июня 2011, 22:14:58 »
Привет все ребят! замучился с этой задачей, можете кто чем помочь?
(turbo pascal)
Рассматривается непустая строка,содержащая не более 80 символов.Каждый символ строки может быть малой английской буквой, цифрой и одним из знаков + (плюс), - (минус), * ( звездочка). Группой букв будет называться такая совокупность последовательно расположенных букв, которой непосредственно не предшествует и за которой непосредственно не следует буква. Аналогично определяется группа знаков и группа цифр. Требуется написать программу, которая находит и печатает все группы букв, содержащие сочетание английских букв 'mn'. Если в строке нет групп букв, содержащих согласные английские буквы, то напечатать сообщение "В строке нет ни одной искомой группы букв". Если в строке нет ни одной группы букв, то напечатать сообщение: "В строке нет ни одной группы букв". Исходная строка вводится с клавиатуры.

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Обработка строк!
« Ответ #1 : 03 Июня 2011, 18:21:24 »
Будем считать, что в тексте только оговоренные символы. Для простоты.
Выставь:
1. начало текста программы
2. описание: символьной S - здесь строка, R - тоже символьная, сюда будем собирать группу,
    L - здесь будет длина строка (посмотри оператор определения длины строки)
    массив символьных констант K(13) [+ - * 0 1 2 3 4 5 6 7 8 9)
    Здесь целые индексы:
    IN - индекс для "В строке нет ни одной искомой группы букв". (0 - не встретили, 1 - встретили)
    IG -  индекс для "В строке нет ни одной группы букв" (0 - не встретили, 1 - встретили).
3. Напиши ввод строки
4. Вычисли длину L строки S (оператор)
5. Напиши оператор выделения с этой строки S одного символа с первой позиции,
    одного символа со второй позиции (это потом используем при организации цикла)
Это будет начало. Откорректируем и пойдём писать дальше.

Замечание о некорректности постановки. Ели группа начинается с первой позиции - это группа или нет.
По определению нет. Тоже в конце. Выясни. Удачи.


Оффлайн djdoka

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Обработка строк!
« Ответ #2 : 05 Июня 2011, 20:05:45 »
что то не особо понял ): вот например аналогичная задача

я понял как с палиндромами решить:

 Рассматривается непустая строка, содержащая не более 80 символов. Каждый символ строки может быть малой английской буквой, цифрой или одним из знаков +(плюс), –(минус), *(звёздочка). Группой цифр будет называться такая совокупность последовательных цифр, которой непосредственно не предшествует и за которой  непосредственно не следует цифра. Аналогично определяется группа знаков и группа букв. Палиндромом будет называться такая группа цифр, которая слева-направо читается так же как и справа-налево(12321).
Требуется написать такую программу, которая находит и печатает все такие группы цифр, если палиндромов нет, то напечатать сообщение; «В строке нет ни одного палиндрома». Если в строке нет ни одной группы цыфр «В строке нет ни одной группы цифр». Исходная строка вводится с клавиатуры.

program ctroki;
uses crt;
label 1;
const
 numb='123456789';
var
 msv:string[80];
 ms:string[80];
 n,j,k,m,r,i,l,f:integer;

begin
 textbackground(9);
 clrscr;
 gotoxy(30,3);
 textcolor(14);
 writeln('Vveite stroku');
 gotoxy(14,8);
 textcolor(10);
 readln(msv);
 n:=length(msv);
 r:=0;
 l:=0;

 for i:=1 to n do
 begin
  k:=pos(msv,numb);

   if k>0 then
      begin
       ms:=ms+msv;
       f:=1;
       l:=1;
      end

   else
    begin
     if f>0 then
      begin
      f:=0;
      k:=length(ms);
      m:=k div 2;
      for j:=1 to m do
       begin
        if ms[j]=ms[k] then
        begin
         k:=k-1;
         r:=1;
        end
        else goto 1
       end;

      textcolor(14);
      writeln(ms);
      1:  delete(ms,1,length(ms));
      end;
    end;
  end;
  gotoxy(30,10);
  textcolor(14);
 if l<1 then writeln('V CTROKE NET GRUPP CIFR');
 gotoxy(30,11);
 textcolor(14);
 if r<1 then writeln('v ctroke net palindromov');
  readkey;
end.


а вот с этой не особо понял =\

 

Помогите организовать текстовый файл, состоящий из n строк ...

Автор bifshtex

Ответов: 33
Просмотров: 5847
Последний ответ 04 Января 2010, 23:05:38
от bifshtex
Написал поразрядную сортировку односвязного списка строк

Автор holloloh

Ответов: 0
Просмотров: 1569
Последний ответ 05 Октября 2011, 23:09:44
от holloloh
Обработка текста!

Автор lelia222

Ответов: 7
Просмотров: 3173
Последний ответ 29 Октября 2009, 19:51:20
от InfStudent