Страница 1 из 1

Работа со строками

Добавлено: 16 янв 2007, 22:05
Колядин Максим
Да, задачи на первый-то взгляд лёгкие....
1)Дан текст. Посчитать количество слов, заканчивающихся на заданную букву и перенести их в другую строку, написав через запятую. Вывести полученную строку на экран.
2)Дан текст. Посчитать количество слов в тексте.
Заранее спасибо.

Re: Работа со строками

Добавлено: 16 янв 2007, 22:44
Хыиуду
Откуда берется текст? Из файла, из Мемо, откуда-то еще?
Как разбивать строку на слова - где-то обсуждалось (по-моему Cade спрашивал, а Somewhere отвечал).
стало быть (изображаю общую идею, думаю, разберешься)

Код: Выделить всё

wordscount:=0;
zadannayabukva='A';
for i:=0 или 1 (в зависимости от нумерации) to textlinescount do
begin
  s:=text[i];
  s_out:='';
  while s<>'' do
  begin
    s1:={взять слово из строки s};
    inc(wordscount);
    if s1[length(s1)]=zadannayabukva
       then s_out:=s_out+s1+', ';
  end;
  delete(s_out,length(s_out),2);// удаляем последнюю запятую и пробел
  writeln(s_out);
end;

Re: Работа со строками

Добавлено: 17 янв 2007, 03:00
Колядин Максим
Спасибо, разобрался

Re: Работа со строками

Добавлено: 29 янв 2007, 02:50
Oleg_Rus
Хыиуду, а не проще ли будет заранее поставить условие сравнения с Zadannayabukva

if (text=Zadannayabukva) and (Text[i+1] = ' ') Then
// забивай в в строку

мне кажется так будет и проще, и понятней...

Re: Работа со строками

Добавлено: 30 янв 2007, 10:20
Хыиуду
Можно и так. Тогда надо еще проверять не только пробел, но и некоторые знаки препинания. Например, запятая или точка после буквенного символа однозначно указывает на окончание слова, а дефис или апостроф являются частями слова (кое-где, д'Артаньян). И еще сделать проверку, не является ли буква последней в строке. А то ведь падать будет с эксепшном...
if (text=Zadannayabukva) and
((i=length(text)) or (pos(Text[i+1],' !?.,')<>0)
Then // забивай в в строку

Re: Работа со строками

Добавлено: 01 фев 2007, 04:30
Oleg_Rus
Точно... так будет и красивее и более наглядно

Re: Работа со строками

Добавлено: 01 фев 2007, 10:11
Хыиуду
Oleg_Rus писал(а):Точно... так будет и красивее и более наглядно
Ну... не скажу, что красивее и более наглядно, зато правильнее и более надежно :)