Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/27: Рейтинг темы: голосов - 27, средняя оценка - 4.89
Zalik
2 / 2 / 0
Регистрация: 24.05.2010
Сообщений: 94
1

Подсчитать количество слов, начинающихся и заканчивающихся на одну и ту же букву.

24.05.2010, 20:45. Просмотров 4928. Ответов 9
Метки нет (Все метки)

Помогите пожалуйста.Дан текст на русском языке. Определить сколько раз встречается в нем самое длинное слово.Дан текст на русском языке. Подсчитать количество слов, начинающихся и заканчивающихся на одну и ту же букву.Дан зашифрованный русский текст. Каждая буква заменяется на следующую за ней (буква я заменяется на а). Получить новый текст, содержащий расшифровку данного текста. Eсли можно на Delphi!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2010, 20:45
Ответы с готовыми решениями:

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

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

Подсчитать количество слов в тексте, начинающихся и заканчивающихся на одну и ту же букву
Разработать программу <<подсчет слов>>. Дан файл,содержащий текст на русском...

Подсчитать в тексте (из файла) количество слов, заканчивающихся на гласную букву
Помогите, зарание спасибо. Дан текст, хранящийся в текстовом файле. Подсчитать...

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

9
Mawrat
12827 / 5735 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
25.05.2010, 00:42 2
Первая задача:
Delphi
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
procedure TForm1.Button1Click(Sender: TObject);
const
  //Множество разделителей слов.
  D = [' ', '.', ',', ':', ';', '!', '?', Char(9), Char(10), Char(13)];
var
  //Исходная строка, слово, первое слово с максимальной длиной.
  StrSrc, StrWordMax : String;
  //Индекс символов в строке, позиция начала слова, позиция конца слова,
  //счётчик слов.
  i, Pos1, Pos2, CntWord : Integer;
  //Длина текущего слова, наибольшая длина слова.
  LenTmp, LenMax : Integer;
begin
  StrSrc := Memo1.Text;
 
  LenTmp := 0;
  LenMax := 0;
 
  StrWordMax := '';
  Pos1 := 0;
  Pos2 := 0;
  for i := 1 to Length(StrSrc) do begin
    //Пропускаем разделители.*)
    if StrSrc[i] in D then Continue;
    //Отслеживаем начало очередного слова.
    if i = 1 then
      Pos1 := i
    else if StrSrc[i - 1] in D then
      Pos1 := i
    ;
    //Отслеживаем конец очередного слова.
    if i = Length(StrSrc) then
      Pos2 := i
    else if StrSrc[i + 1] in D then
      Pos2 := i
    ;
    //Если конец слова найден.
    if Pos2 > 0 then begin
      //Подсчитываем очередное найденное слово.
      Inc(CntWord);
      //Длина очередного слова.
      LenTmp := Pos2 - Pos1 + 1;
      //Уточняем сведения о максимальной длине встретившихся слов.
      if LenTmp > LenMax then begin
        LenMax := LenTmp;
        StrWordMax := Copy(StrSrc, Pos1, LenTmp);
      end;
      //Обнуляем флаг конца слова.
      Pos2 := 0;
    end;
  end;
 
  Memo2.Clear;
 
  //Распечатываем в Мемо2 результаты исследования по длинам слов:
  Memo2.Lines.Add('Максмальная длина слова в тексте = ' + IntToStr(LenMax));
  Memo2.Lines.Add('Первое слово с максимальной длиной: "' + StrWordMax + '".');
 
  //Подсчёт количества слов, совпадающих с первым максимальным по длине словом.
 
  //Переводим буквы слова в верхний регистр.
  StrWordMax := AnsiUpperCase(StrWordMax);
  CntWord := 0;
  Pos1 := 0;
  Pos2 := 0;
  for i := 1 to Length(StrSrc) do begin
    //Пропускаем разделители.*)
    if StrSrc[i] in D then Continue;
    //Отслеживаем начало очередного слова.
    if i = 1 then
      Pos1 := i
    else if StrSrc[i - 1] in D then
      Pos1 := i
    ;
    //Отслеживаем конец очередного слова.
    if i = Length(StrSrc) then
      Pos2 := i
    else if StrSrc[i + 1] in D then
      Pos2 := i
    ;
    //Если конец слова найден.
    if Pos2 > 0 then begin
      //Подсчитываем слова, совпадющие по написанию с первым из самых длинных слов.
      if StrWordMax = AnsiUpperCase( Copy(StrSrc, Pos1, Pos2 - Pos1 + 1) ) then begin
        Inc(CntWord);
      end;
      //Обнуляем флаг конца слова.
      Pos2 := 0;
    end;
  end;
 
  //Распечатываем в Мемо2 результат подсчёта.
  Memo2.Lines.Add('Количество слов, совпадающих по написанию с первым из самых длинных');
  Memo2.Lines.Add('слов (включая самое первое слово с максимальной длиной) = ' + IntToStr(CntWord));
 
end;
Вторая задача:
Delphi
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
procedure TForm1.Button1Click(Sender: TObject);
const
  //Множество разделителей слов.
  D = [' ', '.', ',', ':', ';', '!', '?', '-', Char(9), Char(10), Char(13)];
var
  StrSrc : String;
  i, Pos1, Pos2 : Word;
begin
  StrSrc := Memo1.Text;
 
  Memo2.Clear;
 
  Memo2.Lines.Add('Слова, начинающиеся и заканчивающиеся на одну и ту же букву:');
  //Перебор всех символов строки.
  Pos1 := 0;
  Pos2 := 0;
  for i := 1 to Length(StrSrc) do begin
    //Пропускаем разделители.
    if StrSrc[i] in D then Continue;
    //Отслеживаем начало слова.
    if i = 1 then
      Pos1 := i
    else if StrSrc[i - 1] in D then
      Pos1 := i
    ;
    //Отслеживаем конец слова.
    if i = Length(StrSrc) then
      Pos2 := i
    else if StrSrc[i + 1] in D then
      Pos2 := i
    ;
    //Если конец слова найден.
    if Pos2 > 0 then begin
      if AnsiUpperCase(StrSrc[Pos1]) = AnsiUpperCase(StrSrc[Pos2]) then begin
        //Распечатываем слово.
        Memo2.Lines.Add( Copy(StrSrc, Pos1, Pos2 - Pos1 + 1) );
      end;
      Pos2 := 0;
    end;
  end;
end;
В обеих задачах на форму надо положить 2 компонента типа TMemo и одну кнопку.
2
Zalik
2 / 2 / 0
Регистрация: 24.05.2010
Сообщений: 94
25.05.2010, 06:53  [ТС] 3
Преогромнейшее вам спасибо,но программа не хочет работать.
0
WolfCF
3290 / 1352 / 108
Регистрация: 28.04.2009
Сообщений: 4,823
25.05.2010, 07:23 4
Цитата Сообщение от Zalik Посмотреть сообщение
но программа не хочет работать
а что не так? какие ошибки? компоненты все положили на форму?
1
harmless
145 / 145 / 2
Регистрация: 05.05.2010
Сообщений: 570
25.05.2010, 07:25 5
Есть подозрение, что в Button1.OnClick не указан обработчик.
1
Mawrat
12827 / 5735 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
25.05.2010, 11:35 6
Zalik, для кнопки сначала надо создать обработчик, как правильно заметил Harmless. Т. е. надо положить кнопку на форму, а затем выполнить двойной щелчок мышью по этой кнопке - будет создан обработчик события OnClick. Код этого обработчика надо оформить так, как указано в моих постах.
1
Zalik
2 / 2 / 0
Регистрация: 24.05.2010
Сообщений: 94
25.05.2010, 14:37  [ТС] 7
Mawrat, Большое Вам СПАСИБО!

Добавлено через 2 минуты
Wolf, А как быть с третей задачей?Или я опять что-то путаю?
0
WolfCF
3290 / 1352 / 108
Регистрация: 28.04.2009
Сообщений: 4,823
25.05.2010, 14:39 8
Zalik, какая третья? у вас столько задач,что я уже запутался. создайте лучше новую тему и в ней напишите условие.
1
Zalik
2 / 2 / 0
Регистрация: 24.05.2010
Сообщений: 94
25.05.2010, 14:55  [ТС] 9
Wolf, Дан зашифрованный русский текст. Каждая буква заменяется на следующую за ней (буква я заменяется на а). Получить новый текст, содержащий расшифровку данного текста.
0
Mawrat
12827 / 5735 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
25.05.2010, 15:53 10
По шифрованию:
Delphi
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
//Этот код применим к текстам, записанным согласно кодировочной таблице ANSI: Win-1251 (CP-1251).
procedure TForm1.Button1Click(Sender: TObject);
var
  //StrDec - раскодированный текст, StrEnd - раскодированный текст
  StrDec, StrEnc : String;
  i : Integer;
begin
  //Исходный текст.
  StrDec := Memo1.Text;
 
  //Процесс шифрования.
  SetLength(StrEnc, Length(StrDec));
  for i := 1 to Length(StrDec) do begin
    case StrDec[i] of
      //Буквы: А..Ю -> Б..Я; а..ю -> б..я
      #$C0..#$DE, #$E0..#$FE : StrEnc[i] := Char( Ord(StrDec[i]) + 1 );
      //Буква: Я -> А; я -> а.
      #$DF, #$FF : StrEnc[i] := Char( Ord(StrDec[i]) - $1F );
      //Все остальные символы копируем без изменений.
      else StrEnc[i] := StrDec[i];
    end;
  end;
 
  //Показываем закодированный текст в Мемо2.
  Memo2.Text := StrEnc;
 
  //Зашифрованный текст.
  StrEnc := Memo2.Text;
 
  //Процесс раскодирования текста.
  SetLength(StrDec, Length(StrEnc));
  for i := 1 to Length(StrEnc) do begin
    case StrEnc[i] of
      //Буквы: Б..Я -> А..Ю; б..я -> а..ю.
      #$C1..#$DF, #$E1..#$FF : StrDec[i] := Char( Ord(StrEnc[i]) - 1 );
      //Буква: А -> Я; а -> я.
      #$C0, #$E0 : StrDec[i] := Char( Ord(StrEnc[i]) + $1F );
      //Все остальные символы копируем без изменений.
      else StrDec[i] := StrEnc[i];
    end;
  end;
  
  //Показываем раскодированный текст в Мемо3.
  Memo3.Text := StrDec;
 
end;
Код применим для текстов, записанных в ANSI кодировке: Win-1251 (CP-1251).
2
25.05.2010, 15:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2010, 15:53

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

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

Строки, найти количество слов, заканчивающихся на букву "я"
Составить программу: Дана строка символов, разделенная пробелам, найти кол-во...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru