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

С клавиатуры вводится строчка, содержащая три слова, разделённые пробелом. Напишите программку, которая меняет местами 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:


Последние вопросы
Помогите пожалуйста написать Сочинение Овчинникова "победитель'

Литература.

Здравствуйте. Нужен цитатный план испытания лётчика в лесу главы2-13 по повести

Разные вопросы.

Я хочу найти решение и ответ для этой задачи и получить

Математика.

Здравствуйте Меня зовут Виталий, я AdOps-аналитик компании  Adfinity.pro Заинтересовал ваш проект obrazovalka.com Думаю сможем увеличить

Разные вопросы.

мне очень срочно нужно сочинение по рассказу экспонат номер по дной

Литература.

мне очень срочно нужно сочинение по рассказу экспонат номер по дной

Литература.

В семье из трех человек три электронных устройства: ноутбук, планшет и

Разные вопросы.

Жаркыраган кашка маш жаралгандан ашка маш табышмак жообу менен

Кыргыз тили.

За лето подруги прочитали 48 книг.Причем Оля прочитала в 3 раза

Математика.

Периметр равнобедренного треугольника ABC (AB=BC) равен 34 см. Периметр треугольника ABM,

Разные вопросы.

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

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

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

Войти на сайт