Регистрация
Войти
Стать экспертом Правила
Информатика

Самое - самое Вводится строка состоящая из слов, разделенных пробелами. Напишите программу, которая ищет самое длинное слово и выводит его на экран. В случае, когда таких слов будет неКак узнать сколько программа выводит любое из них.Пожалуйста Пожалуйста посчитайте!Нужно срочно

ОТВЕТЫ

Первая программа предназначена ТОЛЬКО для Pascal.ABC, в другой среде она работать не будет. Она самая короткая и простая. Метод Split разбивает исходную строку на слова по символу пробела и формирует динамический массив. Что бы мы ни вводили, мы всегда будем получать в результате то, что требовалось. (понятно, что если слов будет меньше трех, будем получать то, что ввели).

var

 s: string;

 ms: array of string;

begin

 Write('Введите три слова через пробел: ');

 Readln(s);

 ms := s.Split(' ');

 Writeln(ms[0] + ' ' + ms[2] + ' ' + ms[1])

end.

Вторая программа реализуется в любой версии Pascal. Её недостаток в том, что она правильно работает только тогда, когда введена фраза из трех слов, разделенных пробелом. Это простейший линейный алгоритм.

var

 s, s1, s2, s3: string;

 n, p: integer;

begin

 Write('Введите три слова через пробел: ');

 Readln(s);

 n := Length(s);

 p := Pos(' ', s);

 s1 := Copy(s, 1, p - 1);

 s3 := Copy(s, p + 1, n - p);

 p := Pos(' ', s3);

 s2 := Copy(s3, 1, p - 1);

 n := Length(s3);

 s3 := Copy(s3, p + 1, n - p);

 Writeln(s1 + ' ' + s3 + ' ' + s2)

end.

Третья программа также реализуема в любой версии Pascal и содержит "классический" способ работы со строкой, состоящий в последовательном анализе каждого символа. Имеет защиту на случай, если слов будет больше или меньше трех.

var

 s: string;

 ms: array[1..3] of string;

 i, n, p, j: integer;

begin

 Write('Введите три слова через пробел: ');

 Readln(s);

 {

 Алгоритм: Просматриваем все символы строки начиная с позиции p

 и при обнаружении пробела в позиции q заносим в массив очередное слово,

 копируя q-p символов, начиная с p. Затем заносим в p значение q+1

 и продолжаем просмотр. При старте принимаем p=1

 }

 p := 1; j := 0; n := Length(s);

 for i := 1 to n do

   if s[i] = ' ' then

   begin

     j := j + 1;

     if j <= 3 then begin{ если введено больше двух пробелов }

       ms[j] := Copy(s, p, i - p);

       p := i + 1

     end

   end;

 if j < 3 then ms[3] := Copy(s, p, n - p + 1);

 Writeln(ms[1] + ' ' + ms[3] + ' ' + ms[2])

end.

Все три программы опробованы и результаты их работы одинаковы:

Введите три слова через пробел: Зебра полосатая лошадь

Зебра лошадь полосатая

588
Контакты
Реклама на сайте
Спрошу
О проекте
Новым пользователям
Новым экспертам