С клавиатуры вводится строчка, содержащая три слова, разделённые пробелом. Напишите программу,
С клавиатуры вводится строчка, содержащая три слова, разделённые пробелом. Напишите программку, которая меняет местами 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
Статьи
Информатика
Статьи
Последние вопросы
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
Облако тегов