Program FILES; Uses Crt; Var f : Text; Width, n, i, j, LastSpace, NewSpaceCount : Byte; s : Array [1..100] Of String; IsSpace : Boolean; Begin ClrScr; Assign(f, 'Input.txt'); // создаем идентификатор для файла Reset(f); // открываем файл для чтения ReadLn(f, Width); // считываем первую строку в переменную Width n := 0; // оннулируем кол-во строк Repeat // в этом цикле считываем все строки в массив строк s[] Inc(n); // увеличиваем n на один с каждой строкой ReadLn(f, s[n]) // считываем в s[n] новую строку Until EOF(f); // делаем цикл до конца файла Close(f); // закрываем файл For i := 1 To n Do // прохожимся по всем строкам в массиве S[] Begin If (Length(s[i]) <> 0) Then // если строка не нулевой длины, то работаем с ней Begin IsSpace := true; // делаем равным тру, чтобы в следующем цикле у нас выполнялось условие, пока мы считаем пробелы LastSpace := 0; // опять же, оннулируем переменную, чтобы в следующем цикле заново считать пробелы строчке For j := 1 To Length(s[i]) Do // в цикле проходим по всей строчке s[i] Begin If (s[i][j] = ' ') And (IsSpace = True) Then // если очередной символ равен пробелу, то считаем его Begin LastSpace := j; // тут мы его считаем, т.е. у нас получается кол-во пробелов в переменной LastPage End Else If (s[i][j] <> ' ') Then // Если же пробелы кончились, то мы уже не считаем больше, Begin IsSpace := False; //... т.е. делаем переменную равным фолс, чтобы сверху та штука не считала пробелы End; End; If LastSpace <> 0 Then // и вот тут, если мы насчитали скока-нить пробелов, то тут мы: Begin NewSpaceCount := LastSpace div 2; // ищем половину от насчитанных пробелов Delete(s[i], 1, NewSpaceCount); // удаляем половину пробелов сначала строки For j := Length(s[i]) To Width Do // а тут мы добавляем в конец строки тоже половину пробелов Begin s[i] := s[i] + ' '; // вот тут по одному за каждый шаг End; End; End; End; Assign(f, 'Output.txt'); // опять идентификатор на выходной файл ReWrite(f); // новый файл создаем, если еще не создан и перезаписыаем, если он уже есть WriteLn(f, Width); // пишем опять нашу длину первой строчкой For i := 1 To n Do // пишем все наши строчки опять в файл Begin If i = n Then // если последняя строчка, то мы без Ln пишем, чтобы не перешло на следующую строку в файле, а было все как в оригинале Write(f, s[i]) Else WriteLn(f, s[i]); // тут наоборот End; Close(f); // закрываем файл WriteLn('See results in Output.txt...'); readln; End.