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

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

Задать свой вопрос
1 ответ
1-ая программка предназначена ТОЛЬКО для 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. 3-я программка также реализуема в хоть какой версии 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 lt;= 3 then begin если введено больше 2-ух пробелов ms[j] := Copy(s, p, i - p); p := i + 1 end end; if j lt; 3 then ms[3] := Copy(s, p, n - p + 1); Writeln(ms[1] + + ms[3] + + ms[2]) end. Все три программы опробованы и результаты их работы схожи: Введите три слова через пробел: Зебра полосатая лошадь Зебра лошадка полосатая
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт