Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/26: Рейтинг темы: голосов - 26, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 16

Разбить строку на слова

19.12.2012, 00:12. Показов 5050. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ввести строку маленькими латинскими буквами слова разделены запятой или пробелом в конце точка.
если слово не равно последнему и начинается на гласную а заканчивается на согласную вывести его.

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
uses crt;
Const
 gl=['a','e','i','o','u','y'];                                                               
 sogl=['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','z'];     
 Var
   i,k: integer;
   s,s1,razd1,razd,slovo : string;
begin
  k:=0;
  razd1:= ',';                                                                    
  razd:=' ';                                                                       
  slovo:='';
  writeln('vvedite predlojenie');
  readln(s);
  for i:=length(s) downto 1 do                                                     
  begin
    if k<=0 then
    begin
      if (s[i]=razd) or (s[i]=razd1) then
      begin
        s1:=copy(s,i+1,length(s)-i-1);
        delete(s,i+1,length(s)-i);
        k:=k+1;
      end;
     end;
  end;
  for i:=1 to length(s) do
    begin
    if (pos(s[i],razd1)=0) or (pos(s[i],razd)=0) then                           
    slovo:=slovo+s[i]
    else
    begin
      if (slovo<>s1) and (slovo[1] in gl) and (slovo[length(slovo)] in sogl) then  
      begin
        write(slovo,' ');                                                              
        slovo:='';
      end
      else
      slovo:='';
    end;
  end;
end.
проблема в том что не могу одновременно сделать разделитель и пробел и запятую
Pascal
1
if (pos(s[i],razd1)=0) or (pos(s[i],razd)=0) then
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.12.2012, 00:12
Ответы с готовыми решениями:

Разбить строку на слова
что то типа такого должно получиться... text: 'я знаю язык паскаль' результат: я знаю язык паскаль --------

Введенную строку текста, заканчивающуюся точкой, разбить на отдельные слова
Введенную строку текста, заканчивающуюся точкой, разбить на отдельные слова, т.е. вывести каждое слово в отдельную строку.

Разбить строку на отдельные слова
Задание: Строка содержит не более 10 слов, разделённых пробельными символами (пробелы, символы табуляции). Написать программу, которая...

4
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
19.12.2012, 09:30
Можно сделать так:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
program Project1;
 
const
  //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Множество гласных букв.
  Da = [
    //Русские гласные буквы.
    'А', 'Я', 'О', 'Ё', 'Ы', 'И', 'Э', 'Е', 'У', 'Ю',
    'а', 'я', 'о', 'ё', 'ы', 'и', 'э', 'е', 'у', 'ю',
    //Гласные буквы латиницы.
    'A', 'E', 'I', 'O', 'U', 'Y',
    'a', 'e', 'i', 'o', 'u', 'y'
  ];
  //Множество согласных букв.
  Db = [
    //Русские согласные буквы.
    'Б', 'В', 'Г', 'Д', 'Й', 'Ж', 'З', 'К', 'Л', 'М', 'Н', 'П',
    'Р', 'С', 'Т', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ',
    'б', 'в', 'г', 'д', 'й', 'ж', 'з', 'к', 'л', 'м', 'н', 'п',
    'р', 'с', 'т', 'ф', 'х', 'ц', 'ч', 'ш', 'щ',
    //Согласные буквы латиницы.
    'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P',
    'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Z',
    'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p',
    'q', 'r', 's', 't', 'v', 'w', 'x', 'z'
  ];
var
  S, Sw, Slw : String;
  i, Len, LenW, Cnt : Integer;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    Len := Length(S);
    Slw := ''; //Последнее слово в строке.
    LenW := 0; //Длина очередного слова.
    Cnt := 0; //Счётчик искомых слов.
    //Перебор символов строки справа-налево.
    for i := Len downto 1 do begin
      //Если символ не является разделителем.
      if not (S[i] in D) then begin
        //Учитываем очередную букву в длине слова.
        Inc(LenW);
        //Отслеживаем начало слова.
        if (i = 1) or (S[i - 1] in D) then begin
          //Выделяем очередное слово.
          Sw := Copy(S, i, LenW);
          //Запоминаем последнее слово в тексте.
          if Slw = '' then Slw := Sw;
          //Если слово начинается на гласную, а заканчивается на согласную
          //и это слово отличается от последнего в тексте, то распечатываем его.
          if (S[i] in Da) and (S[i + LenW - 1] in Db) and (Sw <> Slw) then begin
            Inc(Cnt);
            if Cnt > 1 then Write(', ');
            Write(Sw);
          end;
          LenW := 0; //Сброс длины слова.
        end;
      end;
    end;
    Writeln;
    Writeln('Всего искомых слов: ', Cnt);
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
Здесь искомые слова распечатываются в обратной последовательности: от конца текста - к началу.
0
 Аватар для Paster Fob
296 / 274 / 194
Регистрация: 03.05.2012
Сообщений: 570
19.12.2012, 13:20
функция возвращает последнее слово в строке,
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Const
  gl=['a','e','i','o','u','y'];
  sep=[' ',',','.','!','?',':',';',];
 
function findword(var arg:string):string;
var
  i:integer;
  s:string;
begin
  s:='';
  i:=length(arg);
  while arg[i] in sep do
    dec(i);
  while not (arg[i] in sep) do begin
    s:=arg[i]+s;
    dec(i);
  end;
  findword:=s;
end;
 
Var
   i,k:integer;
   s,st,word:string;
begin
  writeln('введите предложение');
  readln(s);
  if s[length(s)]<>'.' then
    s:=s+'.';
  st:='';
  word:=findword(s);
  k:=0;
  for i:=1 to length(s) do
    if not (s[i] in sep) then
      st:=st+s[i]
    else begin
      if length(st)>0 then begin
        if (st<>word) and (st[1] in gl)
        and (not (st[length(st)] in gl)) then begin
          writeln(st);
          inc(k);
        end;
      end;
      st:='';
    end;
    if k=0 then writeln('условие задания не выполняется');
  readln
end.
0
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 16
19.12.2012, 18:57  [ТС]
а мой код кто может поправить?=))
0
 Аватар для Paster Fob
296 / 274 / 194
Регистрация: 03.05.2012
Сообщений: 570
19.12.2012, 21:18
Цитата Сообщение от floreNz Посмотреть сообщение
а мой код кто может поправить?=))
что касается твоего кода.
Убери множество согласных,оставь только гласные.Сделай ещё одно множество разделителей.и решишь свою проблему.
Поиск последнего слова в твоём коде не правильный.Если например текст закончится тремя точками '...' ,что тогда?
Свой код я писал на основе твоего.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2012, 21:18
Помогаю со студенческими работами здесь

Разбить два предложения на слова и сравнить эти слова (совпадающие вывести)
разбить два предложения на слова и сравнить эти слова(совпадающие вывести) Прошу написать более разборчиво чем есть.. if...

Разбить строку на слова (strtok) и сравнить эти слова со словом из Edit-a
Доброго времени суток, господа! Есть строка, её нужно разбить на слова и сравнить эти слова со словом из Edit'a Программа виснет, что...

Разбить строку на слова, добавить эти слова в массив строк
Привет всем! Понадобилось решить одну простенькую задачку: Разбить строку на слова, добавить эти слова в массив строк, вывести...

Разбить строку на слова и вставить эти слова в ячейки на листе
Подскажите как в Excel разбить строку на слова. Например: есть фраза &quot;Шла собака по роялю&quot; и эту фразу надо разбить на слова и...

Строка: Строку разбить на слова и слова запихнуть в массив char.
Вобщем пока нужно: 1) строку разбить на слова и слова запихнуть в масив char. но у меня почему то вообще не то записывает в масив, хоча...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru