Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 00:10   #1
anbroider
Пользователь
 
Регистрация: 14.12.2012
Сообщений: 14
По умолчанию Turbo Pascal 7.0 Пара не понятных мне задач.Строки.

Вот несколько заданий, прошу выслать код
1.В заданном тексте удалить из текста пропуски , подсчитать длину сформированного текста/
Код:
 Оригинал: У заданому тексті видалити з тексту пропуски і підрахувати довжину сформованого тексту.
2.Определить самое длинное слово в тексте, учитывая что слова разделены одним пропуском /
Код:
Оригинал: Визначити щонайдовше слово в тексті. Вважати, що слова в тексті відокремлені один від одного одним пропуском.
Если появится человек готовый помочь, буду премного благодарен.
anbroider вне форума Ответить с цитированием
Старый 19.12.2012, 01:26   #2
anbroider
Пользователь
 
Регистрация: 14.12.2012
Сообщений: 14
По умолчанию

Небольшой ап. Прошу помочь.
anbroider вне форума Ответить с цитированием
Старый 19.12.2012, 07:26   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Самое длинное слово давайте возьмем у TinMan'a (не забудем сказать ему спасибо) - тыц
Poma][a вне форума Ответить с цитированием
Старый 19.12.2012, 08:31   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

по первому заданию.
если под пропусками понимаются два и более пробела подряд, то это удалить не просто, а ОЧЕНЬ просто (s - исходная строка):
Код:
var s : string;
begin
  WriteLn('zadaite vash tekst: '); Readln(s);

  { удалить "пропуски"}
  while Pos('  ',s)>0 do Delete(s, Pos('  ',s), 1);

  {выдать полученную строку на экран}
  WriteLn('Tekst: ', s);

  {выдать длину полученной строки на экран}
  WriteLn('dovjina = ', Length(s));
 
   Readln
end.
всё! это готовый код.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.12.2012, 11:47   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

ну а если и один пробел считать пропуском то
Код:
{ удалить "пропуски"}
  while Pos(' ',s)>0 do Delete(s, Pos(' ',s), 1);
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 19.12.2012, 15:47   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Эм.. 5 копеек :
Функция Pos сама по-себе не очень эффективна, а тут еще 2 раза её вызывать.. При массиве строк это может дать о себе знать..
Так что можно так :
Код:
var
    t : Word;
..
    t := Pos ('  ', s);
    while t <> 0 do begin
        Delete (s, t, 1);
        t := Pos ('  ', s)
    end;
Хотя, конечно, две лишние строчки, тож не хорошо..
Poma][a вне форума Ответить с цитированием
Старый 19.12.2012, 21:03   #7
anbroider
Пользователь
 
Регистрация: 14.12.2012
Сообщений: 14
По умолчанию

Спасибо всем.
anbroider вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Trubo Pascal 7.0 Пара не понятных мне задач. anbroider Помощь студентам 4 14.12.2012 23:43
Напишите мне задачи на Turbo Pascal sufik Помощь студентам 3 26.12.2011 22:06
пара задач в Pascal Wodewill Помощь студентам 3 07.12.2011 21:41