С клавиатуры вводится строка, содержащая три слова, разделённые пробелом.Напишите программу, которая меняет местами второе и третье слово.Программу написать в PascalABC.

С клавиатуры вводится строка, содержащая три слова, разделённые пробелом.Напишите программу, которая меняет местами второе и третье слово.Программу написать в PascalABC.
Гость
Ответ(ы) на вопрос:
Гость
Первая программа предназначена ТОЛЬКО для 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. Все три программы опробованы и результаты их работы одинаковы: Введите три слова через пробел: Зебра полосатая лошадь Зебра лошадь полосатая
Не нашли ответ?
Ответить на вопрос
Похожие вопросы