Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > > >
Восстановить пароль Регистрация
 
XEHK
Форумчанин
4 / 4 / 0
Регистрация: 23.03.2011
Сообщений: 69
13.07.2011, 01:33     Найти в тексте слова, в которых вторая буква справа встречается более одного раза.   #1
Здраствуйте, нужна помощь в такой задачке: вводитса строка в строке слова разделяющиеся пробелом в конце стоит точка надо вивести на екран слова в каторих предпоследнея буква входит в нево ищераз. Например ввели папа брат вивело тока папа
 Комментарий модератора Mawrat
Название темы изменено модератором. Новое название отражает содержание задачи.
AdAgent
Объявления
13.07.2011, 01:33    Найти в тексте слова, в которых вторая буква справа встречается более одного раза.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2011, 01:33    Найти в тексте слова, в которых вторая буква справа встречается более одного раза.

Посмотрите здесь:

Turbo Pascal Вывести на экран слова, в которых встречается буква b.

Turbo Pascal Вывести те слова в которых буква "е" встречается три раза

Turbo Pascal Найти в тексте слова, в которых первая буква слева встречается более одного раза

Turbo Pascal Для каждого символа заданного текста указать, сколько раз он встречается в тексте. Сообщение об одном символе должно печататься не более одного раза.

Turbo Pascal Множества. Вывести на печать слова, в которых первая буква слова встречается в нём ещё раз

Turbo Pascal Сколько значений элементов в массиве А встречается более одного раза?

Turbo Pascal Напишите программу, выясняющую сколько раз вторая буква слова X встречается в слове Y на чётных местах

Turbo Pascal Найти количество слов, в которых заданная буква встречается более одного раза

Turbo Pascal В тексте найти все слова, у которых буква встречается более одного раза

Turbo Pascal Типизированный файл: Найти строки, в которых все символы заданной подстроки входят не более одного раза

Mawrat
Форумчанин
11768 / 5054 / 244
Регистрация: 19.09.2009
Сообщений: 7,810
13.07.2011, 02:15     Найти в тексте слова, в которых вторая буква справа встречается более одного раза.   #2
Код 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
program Project1;
 
const
  //Множество разделителей слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
  S, sW : String;
  i, j, Len : Integer;
  Ch : Char;
  Da : set of Char;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    Writeln('Перечень слов, в которых вторая буква справа присутствует более одного раза:');
    Len := Length(S);
    Ch := '*';
    sW := '';
    Da := [];
    j := 0;
    //Перебор символов строки в направлении справа-налево.
    for i := Len downto 1 do begin
      //Пропускаем разделители.
      if S[i] in D then Continue;
      //Номер буквы в слове, отсчитывая справа.
      Inc(j);
      if j = 2 then
        Ch := S[i] //Запоминаем букву, которая является второй справа в слове.
      else
        Da := Da + [ S[i] ]; //Добавляем во множество все буквы слова, кроме второй справа.
      //Составляем само слово.
      sW := S[i] + sW;
      //Отслеживаем начало слова.
      if (i = 1) or (S[i - 1] in D) then begin
        //Распечатываем слова, в которых вторая буква справа присутствует более одного раза.
        if (j > 1) and (Ch in Da) then Writeln(sW);
        sW := '';
        Da := [];
        j := 0;
      end;
    end;
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
В алгоритме заглавный и строчный варианты одной и той же буквы считаются различными.
XEHK
Форумчанин
4 / 4 / 0
Регистрация: 23.03.2011
Сообщений: 69
13.07.2011, 02:23  [ТС]     Найти в тексте слова, в которых вторая буква справа встречается более одного раза.   #3
Цитата Сообщение от Mawrat Посмотреть сообщение
Код 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
program Project1;
 
const
  //Множество разделителей слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
  S, sW : String;
  i, j, Len : Integer;
  Ch : Char;
  Da : set of Char;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    Writeln('Перечень слов, в которых вторая буква справа присутствует более одного раза:');
    Len := Length(S);
    Ch := '*';
    sW := '';
    Da := [];
    j := 0;
    //Перебор символов строки в направлении справа-налево.
    for i := Len downto 1 do begin
      //Пропускаем разделители.
      if S[i] in D then Continue;
      //Номер буквы в слове, отсчитывая справа.
      Inc(j);
      if j = 2 then
        Ch := S[i] //Запоминаем букву, которая является второй справа в слове.
      else
        Da := Da + [ S[i] ]; //Добавляем во множество все буквы слова, кроме второй справа.
      //Составляем само слово.
      sW := S[i] + sW;
      //Отслеживаем начало слова.
      if (i = 1) or (S[i - 1] in D) then begin
        //Распечатываем слова, в которых вторая буква справа присутствует более одного раза.
        if (j > 1) and (Ch in Da) then Writeln(sW);
        sW := '';
        Da := [];
        j := 0;
      end;
    end;
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
В алгоритме заглавный и строчный варианты одной и той же буквы считаются различными.
Спасибоя вроде не все понял но вот к примеру если ето вторая з конца буква то там j нада сменить?
Mawrat
Форумчанин
11768 / 5054 / 244
Регистрация: 19.09.2009
Сообщений: 7,810
13.07.2011, 02:32     Найти в тексте слова, в которых вторая буква справа встречается более одного раза.   #4
Цитата Сообщение от XEHK Посмотреть сообщение
вот к примеру если ето вторая з конца буква то там j нада сменить?
Нет - там ничего менять не надо. Это программа распечатывает те слова, в которых вторая с конца буква присутствует более одного раза.
---
Если надо поменять номер буквы - например, чтобы распечатывались те слова, в которых третья от конца буква присутствует более одного раза, надо поменять только две строки:
в этом случае потребуется заменить:
Код Pascal
1
2
3
      if j = 2 then
...
        if (j > 1) and (Ch in Da) then Writeln(sW);
на:
Код Pascal
1
2
3
      if j = 3 then
...
        if (j > 2) and (Ch in Da) then Writeln(sW);
---
Можно немного поменять условия, чтобы получить внешнее единообразие:
Код 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
program Project1;
 
const
  //Множество разделителей слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
  S, sW : String;
  i, j, Len : Integer;
  Ch : Char;
  Da : set of Char;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    Writeln('Перечень слов, в которых вторая буква справа присутствует более одного раза:');
    Len := Length(S);
    Ch := '*';
    sW := '';
    Da := [];
    j := 0;
    //Перебор символов строки в направлении справа-налево.
    for i := Len downto 1 do begin
      //Пропускаем разделители.
      if S[i] in D then Continue;
      //Номер буквы в слове, отсчитывая справа.
      Inc(j);
      if j = 2 then
        Ch := S[i] //Запоминаем букву, которая является второй справа в слове.
      else
        Da := Da + [ S[i] ]; //Добавляем во множество все буквы слова, кроме второй справа.
      //Составляем само слово.
      sW := S[i] + sW;
      //Отслеживаем начало слова.
      if (i = 1) or (S[i - 1] in D) then begin
        //Распечатываем слова, в которых вторая буква справа присутствует более одного раза.
        if (j >= 2) and (Ch in Da) then Writeln(sW);
        sW := '';
        Da := [];
        j := 0;
      end;
    end;
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
В этом варианте, если понадобится сменить номер буквы с 2 на 3, то надо будет заменить:
Код Pascal
1
2
3
      if j = 2 then
...
        if (j >= 2) and (Ch in Da) then Writeln(sW);
на:
Код Pascal
1
2
3
      if j = 3 then
...
        if (j >= 3) and (Ch in Da) then Writeln(sW);
XEHK
Форумчанин
4 / 4 / 0
Регистрация: 23.03.2011
Сообщений: 69
13.07.2011, 02:35  [ТС]     Найти в тексте слова, в которых вторая буква справа встречается более одного раза.   #5
теперь понятно, большое спасибо
Yandex
Объявления
13.07.2011, 02:35    Найти в тексте слова, в которых вторая буква справа встречается более одного раза.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему
Опции темы

Текущее время: 19:46. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.