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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2008, 18:55   #1
Dexterello
Пользователь
 
Регистрация: 12.07.2008
Сообщений: 18
По умолчанию Строки. Помогите, пожалуйста.

я не совсем в этом шарю, а мне скоро поступать, очень срочно... помогите решить 2 задачи на Turbo Pascal, желательно с комментариями. Буду очень благодарен.

1) Дана строка символов. Распечатать самое длинное слово, начинающееся на букву "К". Если таких слов нет - выдать соответствующее сообщение, а если такое есть, то предполагается, что оно единственное.
2) Дана строка символов. Распечатать самое длинное слово, первые две буквы которого "КО". Если таких слов нет - выдать соответствующее текстовое сообщение.

Заранее огромное спасибо...
Dexterello вне форума Ответить с цитированием
Старый 12.07.2008, 20:31   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Код:
const
  konec = [' ', ',']; //символы по которым определяется конец слова
var
  s, slovo, maxSlovo: string;
  d, i: integer;
begin
  write('s = ');
  readln(s);//вводим слово
  s := ' ' + s + ' ';//добавим пробелы на концах, чтоб работать удобнее было
  maxSlovo :='';//начальное искомое слово
  repeat//НАЧАЛО ПОИСКА
    d := pos(' k', s);//ищем слово 
    delete(s, 1, d);//удаляем всё до этого слова
    for i := 1 to length(s) do
    if s[i] in konec then//ищем признак конца слова
    begin
      slovo := copy(s, 1, i-1);//нашли конец слова - скопируем это слово
      break
    end;
    if length(slovo) > length(maxSlovo) then//проверим длинну
      maxSlovo := slovo//если длиннее максимального, то запомним его
  until d = 0;//КОНЕЦ ПОИСКА
  if length(maxSlovo) = 0 then//если длина нулевая, то
    write('not found') //пишем что нету его
    else write(maxSlovo);//иначе пишем найденное слово
  readln
end.
Вторая по аналогии
eoln вне форума Ответить с цитированием
Старый 12.07.2008, 20:34   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

И уточните задание. Дело в том, что буквы к и о могут быть русскими и английскими, большими и маленькими. Все четыре буквы имеют разные коды и воспринимаются программой как разные буквы. Поэтому когда будете писать программу, учтите это.

Последний раз редактировалось puporev; 12.07.2008 в 20:36.
puporev вне форума Ответить с цитированием
Старый 12.07.2008, 21:02   #4
Dexterello
Пользователь
 
Регистрация: 12.07.2008
Сообщений: 18
По умолчанию

Спасибо огромное...
Dexterello вне форума Ответить с цитированием
Старый 12.07.2008, 21:07   #5
Dexterello
Пользователь
 
Регистрация: 12.07.2008
Сообщений: 18
По умолчанию

только ещё кое-что... мы не слово вводим, а строку...
Dexterello вне форума Ответить с цитированием
Старый 12.07.2008, 21:10   #6
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
только ещё кое-что... мы не слово вводим, а строку...
без разницы
eoln вне форума Ответить с цитированием
Старый 12.07.2008, 21:14   #7
Dexterello
Пользователь
 
Регистрация: 12.07.2008
Сообщений: 18
По умолчанию

2 eoln: нет, извините, это не то... мне нужна строка и потом нужно осуществлять поиск по этой строке... а тут получается ввод одного слова...
Dexterello вне форума Ответить с цитированием
Старый 12.07.2008, 21:15   #8
Dexterello
Пользователь
 
Регистрация: 12.07.2008
Сообщений: 18
По умолчанию

ага. всё, понял. извиняюсь за свою безграмотность...) спасибо большое)
Dexterello вне форума Ответить с цитированием
Старый 13.07.2008, 03:35   #9
Dexterello
Пользователь
 
Регистрация: 12.07.2008
Сообщений: 18
По умолчанию

Помогите ещё с этим, пожалуйста...

Дана строка. Составить одномерный массив из слов, которые отличны от слова INFORMATION. Если таких слов нет, то выдать соответствующее текстовое сообщение.
Dexterello вне форума Ответить с цитированием
Старый 13.07.2008, 11:32   #10
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Почти так же
Код:
const
  konec = [' ', ','];
  NoSlovo = 'INFORMATION';
var
  s, slovo: string;
  d, f, i: integer;
  mas: array[1..250] of string;//статический массив
begin
  write('s = ');
  readln(s);
  s := ' ' + s + ' ';
  f := 0;//величина массива
  repeat
    d := pos(' ', s);//ищем начало слова
    delete(s, 1, d);//удаляем всё до этого слова
    if s = '' then break;//если ничего не осталось прерываем цикл repeat
    for i := 1 to length(s) do
    if s[i] in konec then
    begin
      slovo := copy(s, 1, i-1);
      break
    end;
    if slovo <> NoSlovo then//если слово отлично от 'INFORMATION'
    begin
      inc(f);//передвигаемся к следующей ячейки массива
      mas[f] := slovo//и записываем туда наше слово
    end
  until d = 0;
  if f = 0 then//если массив пустой
    write('not found') else//пишем нет слов
    for i := 1 to f do writeln(mas[i]);//иначе выводим массив
  readln
end.
eoln вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста исправить подправить процедуру (строки) Rumus Помощь студентам 5 02.07.2008 16:50
Строки. Помогите переделать DeeCee Общие вопросы Delphi 9 25.12.2007 22:01
Паскаль, строки, помогите zaraza21 Помощь студентам 4 23.11.2007 14:01