IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Работа со строками, Первый опыт...
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 64
Пол: Мужской

Репутация: -  0  +


Суть задачи следующая: Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв. Между соседними словами – не менее одного пробела, а за последним словом – точка. Напечатать все слова, отличные от последнего слова, преобразовав следующим образом: если слово нечетной длины, то удалить среднюю букву.

Пока не в недоумении как решить задачу... Вот найду я длину строки, как дальше поступать? Что нужно сделать, чтобы "вычленить" последнее слово и после сделать некоторые действия:
1) то, что осталось от строки, сделать преобразования
2) сравнивать новую строку с последним словом
3) как выкручиваться из случаев, когда общее количество символов превышает 255 без подключения каких-либо сторонних модулей?

Пока дошел до этого:

Var
st:string;
a,b: string;
i,j,k: integer;

begin
clrscr;
{Введи последовательность слов}
writeln('Write you words: ');
readln(st);
k:=1;
{Работаем с исходной строкой, пока она больше 0}
while length(st)>0 do
begin
{Ищем те случаи, когда строка оканчивается на пробел или точку}
k:=pos(' ',st);
if k=0 then k:=pos('.',st);
{когда нашли - переносим}
a:=copy(st,1,k-1);
{удаляем слово из последовательности}
delete(st,1,k);
{Если количество букв в слове нечетное - исключаем среднюю букву}
if length(a) mod 2<>0 then
begin
k:=(length(a)div 2)+1;
delete(a,k,1);
end;
end;
{Вывод результата}
for i:=1 to length(a) do
begin
write(a[i]);
end;
readln;
end.



Сообщение отредактировано: Relrin -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 6:36
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name