С клавиатуры вводится строчка, содержащая три слова, разделённые пробелом. Напишите программу,
С клавиатуры вводится строчка, содержащая три слова, разделённые пробелом. Напишите программку, которая меняет местами 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.
Все три программы опробованы и результаты их работы схожи:
Введите три слова через пробел: Зебра полосатая лошадь
Зебра лошадка полосатая
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Помогите пожалуйста написать Сочинение Овчинникова "победитель'
Литература.
Здравствуйте. Нужен цитатный план испытания лётчика в лесу главы2-13 по повести
Разные вопросы.
Я хочу найти решение и ответ для этой задачи и получить
Математика.
Здравствуйте
Меня зовут Виталий, я AdOps-аналитик компании Adfinity.pro
Заинтересовал ваш проект obrazovalka.com
Думаю сможем увеличить
Разные вопросы.
мне очень срочно нужно сочинение по рассказу экспонат номер по дной
Литература.
мне очень срочно нужно сочинение по рассказу экспонат номер по дной
Литература.
В семье из трех человек три электронных устройства: ноутбук, планшет и
Разные вопросы.
Жаркыраган кашка маш жаралгандан ашка маш табышмак жообу менен
Кыргыз тили.
За лето подруги прочитали 48 книг.Причем Оля прочитала в 3 раза
Математика.
Периметр равнобедренного треугольника ABC (AB=BC) равен 34 см. Периметр треугольника ABM,
Разные вопросы.
Облако тегов