Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Файлы (http://www.tehnari.ru/f41/t49136/)

RadMan 20.03.2011 17:12

Файлы
 
Дано целое число N и текстовый файл с именем Name1, содержащий один абзац текста, выровненный по левому краю. Отформатировать текст так, чтобы его ширина не превосходила N позиций, и выровнять текст по левому краю. Пробелы в конце строк удалить. Сохранить отформатированный текст в новом текстовом файле с именем Name2.
помогите(

Vladimir_S 20.03.2011 18:12

Эх, знать бы язык программирования, на котором нужно выполнить задание! Как бы здорово...
Но это всё пустые мечты, понимаю.
Ну что же, лет через пять-восемь к нам обещали заглянуть экстрасенсы, тогда и узнаем.
А пока - увы...

RadMan 20.03.2011 18:12

О простите, Паскаль.............

Vladimir_S 20.03.2011 19:27

Цитата:

Сообщение от RadMan (Сообщение 488768)
О простите, Паскаль.............

Тогда - пожалуйста. Не уверен, правда, что Вашему преподавателю понравится такой способ (через вспомогательный файл), но задачу эта программа решает. Естественно, пути к файлам можете прописать свои:
Код:

VAR
 f1,f2,f3:TEXT;
 N,L:Byte;
 S:String;
 C:Char;

BEGIN
 Assign(f1,'D:\Name1');
 ReSet(f1);
 Assign(f3,'D:\Name3');
 ReWrite(f3);
 Repeat
  Repeat
  Read(f1,C);
  If C<>' ' then Write(f3,C)  else WriteLn(f3);
  Until (C=' ') or (EoLn(f1)) or Eof(f1);
 Until Eof(f1);
 Close(f1);
 Close(f3);
 Write('N= ');
 ReadLn(N);
 Assign(f2,'D:\Name2');
 ReWrite(f2);
 ReSet(f3);
 ReadLn(f3,S);
 Write(f2,S);
 Repeat
  L:=Length(S);
  Repeat
  ReadLn(f3,S);
  L:=L+Length(S)+1;
  If L<=N then Write(f2,' '+S);
  Until (L>N) or (EoF(f3));
  If (not EoF(f3)) then
  begin
    WriteLn(f2);
    Write(f2,S);
  end;
 Until EoF(f3);
 Close(f3);
 Erase(f3);
 Close(f2);
END.


RadMan 20.03.2011 19:33

а зачем вспомогательный наме3?

Vladimir_S 20.03.2011 19:48

Цитата:

Сообщение от RadMan (Сообщение 488800)
а зачем вспомогательный наме3?

А вот зачем.
Программа работает так:
Все слова из файла Name1 переписываются во вспомогательный файл Name3, в котором каждое слово располагается на своей отдельной строке. Затем считываются слова из Name3 и в Name2 из них формируются строки нужной длины. В конце программы файл с именем Name3 уничтожается.
Вы можете посмотреть на него, закомментарив строку Erase(f3). Тогда он не уничтожится.

RadMan 20.03.2011 19:52

я не совсем понимаю как правильно вписываю..абзац..это значит текст примерно так вписывать

555555555555555555555
5555555555555555555555
555555555555555555555
а потом если ввожу например н=10 то он должен сделать
5555555555
55555555555
55555555555
.........



так??

Vladimir_S 20.03.2011 20:03

Цитата:

Сообщение от RadMan (Сообщение 488823)
я не совсем понимаю как правильно вписываю..абзац..это значит текст примерно так вписывать

555555555555555555555
5555555555555555555555
555555555555555555555
а потом если ввожу например н=10 то он должен сделать
5555555555
55555555555
55555555555
.........



так??

Так, да не совсем. Всё-таки речь идет о тексте, состоящем из отдельных слов, разделенных пробелами. Т.е. пусть исходный текст такой:
Код:

Гнев, богиня, воспой Ахиллеса, Пелеева сына,
Грозный, который ахеянам тысячи бедствий соделал:
Многие души могучие славных героев низринул
В мрачный Аид и самих распростер их в корысть плотоядным
Птицам окрестным и псам (совершалася Зевсова воля),
С оного дня, как, воздвигшие спор, воспылали враждою
Пастырь народов Атрид и герой Ахиллес благородный.
Кто ж от богов бессмертных подвиг их к враждебному спору?

При форматировании все слова должны сохраниться, только строки изменить длину. Например, после ограничения в 20 символов должно получиться:
Код:

Гнев, богиня,
воспой Ахиллеса,
Пелеева сына,
Грозный, который
ахеянам тысячи
бедствий соделал:
Многие души могучие
славных героев низринул
В мрачный Аид и самих
распростер их в корысть
плотоядным Птицам
окрестным и псам
(совершалася Зевсова
воля), С оного дня,
как, воздвигшие спор,
воспылали враждою
Пастырь народов Атрид
и герой Ахиллес
благородный. Кто ж от
богов бессмертных
подвиг их к
враждебному спору?


RadMan 20.03.2011 20:10

ага сделалось, а как если выровнить после форматировния по правому краю

Vladimir_S 20.03.2011 20:11

Цитата:

Сообщение от RadMan (Сообщение 488844)
ага сделалось, а как если выровнить после форматировния по правому краю

А надо?


Часовой пояс GMT +4, время: 07:43.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.