С клавиатуры вводится строка, содержащая три слова, разделённые пробелом.Напишите программу, которая меняет местами второе и третье слово.Программу
5-9 класс
|
написать в 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.
Все три программы опробованы и результаты их работы одинаковы:
Введите три слова через пробел: Зебра полосатая лошадь
Зебра лошадь полосатая
Другие вопросы из категории
тема у нас Организация ветвлений в Паскале. и так, вопрос:
дано трёхзначное число. если сумма цифр числа кратно 3, тогда перевернуть число, иначе обнулить среднюю цифру
очень срочно, кто может
Читайте также
его на цифры. Например, при вводе числа 123 программа должна
вывести 1, 2, 3.
2. Напишите программу, которая вводит возраст человека (число, не
превосходящее 120) и выводит на экран этот возраст со словом «»год,
«года» , «лет» . например «21 год», «22 года», «15 лет»
Помогите пожалуйста !!!!
строках.Вывод результата сопроводите пояснениями
2)Напишите программу ввода трех величин( А,В,С) на одной строке,рассчитайте и выдайте на экран на отдельной строке значение выражения: (А*В)/3,14 +3С.
3)Напишите программу вычисления длины окружности и площади круга одного и того же заданного радиуса R.
Решать на паскале...Помогите пожалуйста(((
программу которая вставит между буквами веденного слова пробелы 3)написать программу вывода на экран деление двух чисел