Программа


{ 16.13.в
!!! Ввод текста с клавиатуры
    Конец строки - [Enter]
    Конец текста - F6 или [Ctrl]+[Z] для IBM-совместимых систем
    Маркер конца текста вводить в отдельной строке }
PROGRAM Changer(input,putput);
CONST QuantityChar=79; { Максимальное число символов в строке }
      QuantityString=10; { Масимальное число строк в тексте }
TYPE Str=packed array [1..QuantityChar] of char; { Строка }
     RefStr=^Str; { Ссылка на строку }
     TextType=array [1..QuantityString] of RefStr; { Тип - текст }
VAR Text:TextType;  { Текст }
    String1,String2:1..QuantityString; { Номера переставляемых строк }
PROCEDURE InputText(var Text:TextType); { Процедура ввода текста }
  Var i:1..QuantityString;  { Счетчик строк }
      j:1..QuantityChar;    { Счетчик символов в строке }
  Begin
    WriteLn('ВЕДИТЕ ТЕКСТ');  { Вывод приглашения }
    for i:=1 to QuantityString do  { Цикл ввода строк }
      if not EOF { Проверка достижения конца файла }
      then begin  { Ввод строки }
             New(Text[i]); { Создание переменной }
             for j:=1 to QuantityChar do { Цикл ввода строки }
               if not EOLn  { Проверка достижения конца строки }
               then Read(Text[i]^[j]) { Ввод символа }
               else Text[i]^[j]:=' '; { Добавление пробелов в конец строки }
             ReadLn { Пропуск конца строки }
           end
      else Text[i]:=nil  { Сброс значения ячейки }
  End;
PROCEDURE OutputText(Text:TextType);  { Процедура вывода текста }
  Var i:1..QuantityString;  { Счетчик строк }
      j:1..QuantityChar;    { Счетчик символов в строке }
  Begin
    for i:=1 to QuantityString do  { Цикл вывода строк }
      if Text[i]<>nil then { Проверка наличия строки }
      begin  { Вывод строки }
        for j:=1 to QuantityChar do { Цикл вывода строки }
          Write(Text[i]^[j]); { Вывод символа }
        WriteLn { Вывод конца строки }
      end
  End;
PROCEDURE ChangeString(var Text:TextType;S1,S2:integer);
                                              { Процедура перестановки строк }
  Var Buf:RefStr;  { Буферная ссылка }
  Begin
    if (Text[S1]<>nil)and(Text[S2]<>nil) then { Проверка наличия строк }
    begin { Перестановка ссылок: }
      Buf:=Text[S1];
      Text[S1]:=Text[S2];
      Text[S2]:=Buf
    end
  End;
BEGIN
  WriteLn;  { Пропуск строки }
  InputText(Text);     { Ввод текста }
  WriteLn;  { Пропуск строки }
  Write('Введите номера переставляемых строк ');   { Вывод приглашения }
  ReadLn(String1,String2);  { Ввод номеров переставляемых строк строк }
  WriteLn('ИСХОДНЫЙ ТЕКСТ:');  { Вывод заголовка }
  WriteLn('---------------');
  OutputText(Text);    { Вывод текста }
  ChangeString(Text,String1,String2);  { Перестановка строк }
  WriteLn;  { Пропуск строки }
  WriteLn('МОДИФИЦИРОВАННЫЙ ТЕКСТ:');  { Вывод заголовка }
  WriteLn('-----------------------');
  OutputText(Text);    { Вывод текста }
END.

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию