Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
522 / 398 / 213
Регистрация: 28.07.2011
Сообщений: 2,212
1

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

23.11.2012, 20:15. Показов 2300. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача:
В тексте найти все слова, у которых буква встречается более одного раза. Записать их в новый текст. В этом тексте слова упорядочить по возрастанию длины слова.

//дополнение к задаче
1. Текст стандартного типа String ввести с клавиатуры или считать из текстового файла.
2. Между словами могут быть различные разделители (пробел, запятая, точка и т.д.), которые необходимо задать во множестве.
3. Вывести исходный текст и текст, преобразованный по условию задачи.


Пытался сделать сам, но ничего не получилось(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2012, 20:15
Ответы с готовыми решениями:

Найти в тексте слова, в которых первая буква слева встречается более одного раза
Здраствуйте вот есть задачка, немогу ие решить :(.Найти в тексте слова, в которых первая буква...

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

Найти количество слов, в которых заданная буква встречается более одного раза
Помогите пожалуйста. Дано срока.В заданной строке определить количество слов, в которых заданная...

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

9
522 / 398 / 213
Регистрация: 28.07.2011
Сообщений: 2,212
28.11.2012, 21:24  [ТС] 2
нужна помощь
0
522 / 398 / 213
Регистрация: 28.07.2011
Сообщений: 2,212
30.11.2012, 16:27  [ТС] 3
вверх
0
522 / 398 / 213
Регистрация: 28.07.2011
Сообщений: 2,212
02.12.2012, 20:21  [ТС] 4
неужели никто не знает как проверить есть ли в слове 2 одинаковые буквы?
нужно как-то цикл в цикл загнать, только я не знаю как

Добавлено через 22 часа 59 минут
и опять вверх(

Добавлено через 39 минут
вообщем начал делать лабу эту
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
program string12;
uses crt;
var t:string;
a:array[1..255] of string;
i,j,k,kb,sch,ksl,k2:integer;
ch:char;
mn:set of char;
begin
clrscr;
mn:=[',','.',' ','!',';',':'];
writeln('Vvedi text');
readln(t);
t:=t+'.';
kb:=0;ksl:=0;
for i:=1 to length(t) do
if not(t[i] in mn) then inc(kb)
else
if kb>0 then
begin
inc(ksl);
for j:=i-kb to i-1 do
for k:=j+1 to i do
if t[j]=t[k] then
begin
inc(sch);
write('slovo nomer ',ksl, ',v nem bukv=',kb,',povtor bukva-',t[j],' ona v slove=',i,' v stroke:=',j,' i ',j-kb+i);
writeln;
end;
if sch>2 then
begin
write(' V etom slove - "');for k:=j-kb to j-1 do write(t[k]);write('" bolse 2 odinakovih');
end;
sch:=0;
kb:=0;
end;
readkey;
end.
подскажите как правильно вывести, у меня тут неправильна формула
какая буква в слове по счету
и какая буква по счету в строке, это не надо, но для себя

хм, и у меня что-то неправильно
0
522 / 398 / 213
Регистрация: 28.07.2011
Сообщений: 2,212
09.12.2012, 18:57  [ТС] 5
вверх
первую часть сделал, не знаю как удалить лишние буквы
процедурку для строки пожалуйста
0
522 / 398 / 213
Регистрация: 28.07.2011
Сообщений: 2,212
20.12.2012, 18:06  [ТС] 6
эм, вверх?
0
522 / 398 / 213
Регистрация: 28.07.2011
Сообщений: 2,212
23.12.2012, 21:08  [ТС] 7
все еще нужна помощь -_-
0
50 / 50 / 41
Регистрация: 20.08.2012
Сообщений: 123
23.12.2012, 22:48 8
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
70
var
 a: array ['a'..'z'] of byte;
 a2: array [1..200] of string;
 i,j: integer;
 s,slovo, sout, sout2: string;
 c: char;
 
procedure sbros;
var
 c: char;
begin
 for c:='a' to 'z' do
  a[c]:=0;
end;
 
procedure poisk(var as: string);
var
 i: integer;
begin
slovo:='';
while as<>'' do
begin
 if as[1] in ['a'..'z'] then
 begin
  slovo:=slovo+as[1];
  delete(as,1,1);
 end
 else
 begin
  delete(as,1,1);
  break;
 end;
end;
end;
 
 
begin
 sout:='';
 write('Vvedite text: ');
 readln(s);
 for i:= 1 to 200 do
  a2[i]:='';
 
 while s<>'' do
 begin
 sbros;
 poisk(s);
 for i:=1 to length(slovo) do
 begin
  inc(a[slovo[i]]);
  if a[slovo[i]]>1 then
  begin
   sout:=sout+slovo+' ';
   break;
  end;
 end;
 end;
 
 while sout<>'' do
 begin
  poisk(sout);
  a2[length(slovo)]:=a2[length(slovo)]+slovo+' ';
 end;
 
 for i:= 1 to 200 do
  sout2:=sout2+a2[i];
 writeln;
 writeln(sout2);
 readln;
end.
правда работает только для английских символов, сойдет?
1
522 / 398 / 213
Регистрация: 28.07.2011
Сообщений: 2,212
23.12.2012, 23:28  [ТС] 9
какой-то способ странный)
но спасибо, попробую разобраться)

но в идеале было бы как я писал в постах выше
вложить while друг в друга, чтобы удалялось внутри них, сам без понятия как это толком реализовать, поэтому и прошу вас
0
13107 / 5888 / 1707
Регистрация: 19.09.2009
Сообщений: 8,808
25.12.2012, 16:14 10
Предложу такое решение:
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
70
71
72
73
74
75
76
77
78
program Project1;
 
const
  //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Наибольшее количество слов.
  M = 100;
type
  //Запись для хранения сведений о слове.
  TInfo = record
    SWord : String; //Слово.
    Len : Integer; //Длина слова.
  end;
var
  S : String;
  Arr : array[1..M] of TInfo; //Массив слов.
  Info : TInfo;
  Da : set of Char;
  i, j, k, Len, LenW : Integer;
  F : Boolean;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
    S := UpperCase(S); //Приводим буквы к верхнему регистру. Работает только для латиницы.
    
    //Находим слова, в которых есть повторы букв.
    Len := Length(S);
    LenW := 0; //Длина очередного слова.
    Da := []; //Множество букв в очередном слове.
    F := False; //Есть ли в текущем слове повторяющиеся буквы.
    j := 0; //Индекс для массива слов.
    for i := 1 to Len do begin //Перебор символов строки.
      if not (S[i] in D) then begin //Если символ не является разделителем.
        Inc(LenW); //Учитываем очередную букву в длине слова.
        if S[i] in Da then F := True; //Проверяем, есть ли в слове такая же буква.
        Da := Da + [S[i]]; //Добавляем букву во множество.
        if (i = Len) or (S[i + 1] in D) then begin //Отслеживаем конец слова.
          //Если в слове есть повторы букв, то добавляем его в массив.
          if F then begin
            Inc(j);
            Arr[j].SWord := Copy(S, i - LenW + 1, LenW);
            Arr[j].Len := LenW;
          end;
          LenW := 0; //Сброс длины слова.
          Da := []; //Обнуление множества букв.
          F := False; //Сброс флага.
        end;
      end;
    end;
 
    //Теперь сортируем массив по неубыванию (нестрогому возрастанию) длин слов.
    //Сортировка методом вставок.
    for i := 1 to j do begin
      k := i;
      Info := Arr[k];
      while (k > 1) and (Arr[k - 1].Len > Info.Len) do begin
        Arr[k] := Arr[k - 1];
        Dec(k);
      end;
      Arr[k] := Info;
    end;
 
    //Распечатка результата.
    if j > 0 then begin
      Writeln('Перечень слов, в которых есть повторы букв, в порядке возрастания длин:');
      for i := 1 to j do begin
        if i > 1 then Write(', ');
        Write(Arr[i].SWord);
      end;
      Writeln;
    end else
      Writeln('В тексте нет ни одного слова с повторящимися буквами.');
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
0
25.12.2012, 16:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2012, 16:14
Помогаю со студенческими работами здесь

Напечатать все слова, в которых первая буква слова входит в него более одного раза.
Решите пожалуйсто задачу на Си Напечатать все слова, в которых первая буква слова входит в него...

В заданной строке найти количество слов, в которых заданная буква встречается более одного раза.
Помогите пожалуйста. Дано срока.В заданной строке найти количество слов, в которых заданная буква...

Выведите на экран все слова из К букв, в которых буква "Ы" встречается более 1 раза, и подсчитайте их количество
Выведите на экран все слова из К букв, в которых буква &quot;Ы&quot; встречается более 1 раза, и подсчитайте...

Подсчитать количество слов, у которых первая буква встречается более одного раза
Введите строку символов, разделенных пробелами. Подсчитайте количество слов, у которых первая буква...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru