profile
Размещено 5 лет назад по предмету Информатика от sidtim

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

  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.

    Третья программа также реализуема в любой версии 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.

    Все три программы опробованы и результаты их работы одинаковы:

    Введите три слова через пробел: Зебра полосатая лошадь
    Зебра лошадь полосатая



Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.