Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
DeathKorps
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 96
#1

Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой - Delphi

02.05.2016, 11:56. Просмотров 744. Ответов 8
Метки нет (Все метки)

1. Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой.
Нагуглил на форуме такой код.Как использовать не понимаю.
Возможно его переделать в функцию ?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  var
  s, a: string;
  i: integer;
begin
  readln(s);
  for i := 1 to length(s) do
  begin
    if s[i] <> ' ' then a := a + s[i];
    if (s[i] = ' ') or (i = length(s)) then
    begin
      if a[1] = a[length(a)] then writeln(a);
      a := '';
    end;
  end;
end.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2016, 11:56
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой (Delphi):

Работа со строковыми переменными. Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой - Delphi
Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой.

Дана строка.Найти в ней те слова, которые начинаются и заканчиваются одной и той же буквой.Вывести эти слова на экране - Delphi
Дана строка.Найти в ней те слова, которые начинаются и заканчиваются одной и той же буквой.Вывести эти слова на экране. Вот код: var ...

Определить количество слов в тексте которые начинаются и оканчиваются одной и той же буквой - Delphi
Помогите пожалуйста. Дан текст.Определить количество слов в тексте которые начинаются и оканчиваются одной и той же буквой и...

Напечатать слова, которые начинаются и заканчиваются одной и той же буквой (консольное приложение) - Delphi
Дана строка, состоящая из*слов, разделенных пробелами (одним или*несколькими). Напечатать все слова, которые удовлетворяют следующему...

Вывести все слова, которые начинаются и заканчиваются буквой А - Delphi
Помогите сделать в delphi7. 1. Вывести все слова, которые начинаются и заканчиваются буквой А (например: анаконда, атмосфера и.т.д.)....

Дана строка символов. Подсчитать, сколько в ней слов, заканчивающихся буквой «я» - Delphi
Дана строка символов. Подсчитать, сколько в ней слов, заканчивающихся буквой «я» Как решить в DELPHI?

8
JIeIIIa
672 / 354 / 62
Регистрация: 23.05.2012
Сообщений: 6,385
02.05.2016, 12:58 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function Words(s: string):string;
var
  res, a: string;
  i: integer;
begin
  res := '';
  for i := 1 to length(s) do
  begin
    if s[i] <> ' ' then a := a + s[i];
    if (s[i] = ' ') or (i = length(s)) then
    begin
      if a[1] = a[length(a)] then res := res + a + ' ';
      a := '';
    end;
  end;
  Words := res;
end;
1
DeathKorps
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 96
02.05.2016, 13:08  [ТС] #3
Можете объяснить что делает код ?
0
JIeIIIa
672 / 354 / 62
Регистрация: 23.05.2012
Сообщений: 6,385
02.05.2016, 13:13 #4
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function Words(s: string):string;
var
  res, a: string;
  i: integer;
begin
  res := '';       //строка для результата
  for i := 1 to length(s) do    //перебираем все буквы в строке s
  begin
    if s[i] <> ' ' then a := a + s[i];    //если текущая буква не пробел, то добавить ее к строке а
    if (s[i] = ' ') or (i = length(s)) then   //если текущая буква пробел или достигнут конец строки
    begin
      if a[1] = a[length(a)] then res := res + a + ' ';    //если первая бука равна последней, то дописать строку а к строке res
      a := '';   //очистить строку а (присваиваем ей пустую строку)
    end;
  end;
  Words := res;   //возвращаем результат функции
end;
1
DeathKorps
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 96
02.05.2016, 13:23  [ТС] #5
Спасибо.Застрял на одной строчке
if a[1] = a[length(a)] если первая буква равна последней не понял почему такой код.У меня в методичке функция Length является количеством символов из которых состоит строка.Какая взаимосвязь тут ?
0
JIeIIIa
672 / 354 / 62
Регистрация: 23.05.2012
Сообщений: 6,385
02.05.2016, 13:25 #6
length(a) - это длина строки = номер последнего символа.
a[length(a)] - это a[<номер последнего символа>]
1
DeathKorps
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 96
02.05.2016, 13:43  [ТС] #7
Туго доходит что то.И проблема в коде.
Delphi
1
2
3
4
5
6
 procedure TForm1.Button1Click(Sender:Object);
var
MyString:Sting;
begin;
MyString:='zik relas saturn kapaz sis'
Edit1.text:=Words(MyString);
Если я ввожу ту строку ,что сейчас в MyString ,то ничего не выводится.Если я введу
MyString:='zak rekord maz' ,то выведется вся строка.
0
JIeIIIa
672 / 354 / 62
Регистрация: 23.05.2012
Сообщений: 6,385
02.05.2016, 13:51 #8
DeathKorps, код с ошибками. Как он компилируется?
Цитата Сообщение от DeathKorps Посмотреть сообщение
procedure TForm1.Button1Click(Sender:Object);
var
MyString:String;
begin
MyString:='zik relas saturn kapaz sis';
Edit1.text:=Words(MyString);
Выводится sis. Все верно. Это единственное слово в предложении с одинаковыми первой и последней буквами.
MyString:='zak rekord maz' - выведена будет пустая строка. Как у Вас "выведется вся строка" не понятно.
0
DeathKorps
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 96
02.05.2016, 14:07  [ТС] #9
Писал от руки смотря на другой компьютер)

Добавлено через 5 минут
блин я вообще туплю.Я подумал,что нужно два слова одно начинается с определенной букв другое слово этой же буквой заканчивается. Но тем не менее так и есть например если я выведу слова Zazor и rareZ они оба появятся в Edit1 если между ними добавлю другие слова, те тоже будут выводиться(Zazor pera mangal rareZ)

Добавлено через 2 минуты
sis и подобные слова не выводятся почему то.

Добавлено через 6 минут
Блин извиняюсь пересмотрел ваш код и понял,что не поставил пробелы
Цитата Сообщение от JIeIIIa Посмотреть сообщение
s[i] <> ' '
Цитата Сообщение от JIeIIIa Посмотреть сообщение
if (s[i] = ' ')
И это привело к ошибке. Arigato за помощь и извиняюсь за то что заставляю тратить время
0
02.05.2016, 14:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2016, 14:07
Привет! Вот еще темы с ответами:

Подсчитать количество строк в файле, которые начинаются и заканчиваются одной и той же литерой - Delphi
помогите написать прогу.... дан текстовый файл, который разбит на не пустые строки., подсчитать количество строк, которые начинаются и...

Найти слова, в которые входит буква, соответствующая заданной, но не является первой/последней буквой слова - Delphi
В начале исходного текста стоит заглавная буква русского алфавита для поиска с символом ':' (например, А:). Далее идет словарь русских слов...

Дана строка. Вывести те слова, которые содержат хотя бы одну букву k - Delphi
Можно использовать функции: copy, concat, length, pos, delete, insert. var Form1: TForm1; str,sl:string; k:integer; ...

Дана строка. Указать те слова, которые содержат хотя бы одну букву с - Delphi
Дана строка. Указать те слова, которые содержат хотя бы одну букву с.


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

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

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