Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/12: Рейтинг темы: голосов - 12, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 26
1

Откорректировать файл, удаляя пустые строки, пробелы в конце и вначале строк и оставляя между словами по одному пробелу

10.05.2011, 14:31. Просмотров 2241. Ответов 5
Метки нет (Все метки)


Дан текстовый файл Т. Откорректировать его, удаляя пустые строки, пробелы в конце и вначале строк и оставляя между словами по одному пробелу.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
const
 f='text.txt';
 g='aaa.txt';
 
var
 t,a: text;
 st: string;
 
function pr1(x: string): string;
 var i:integer;
 begin
  for i:=1 to length(x) do
   if x[1]=' ' then delete(x,1,1);
  pr1:=x;
 end;
 
 function pr2(x: string): string;
 var i: integer;
 begin
  for i:=1 to length(x) do 
   if st[length(x)]=' ' then delete (x,length(x),1);
  pr2:=x;
 end;
 
function prob(x: string): string;
 var i,j: integer;
 begin
  for i:=1 to length(st) do
  for j:=1 to length(st) do
   if (x[j]=' ') and (x[j+1]=' ') then delete(x,i,1);
  prob:=x;
 end;
 
begin
 assign(t,f);
 assign(a,g);
 reset(t);
 rewrite(a);
 while not eof(t) do
  begin
   readln(t,st);
   if length(st)>0 then
    begin
     st:=pr1(st);
     st:=pr2(st);
     st:=prob(st);
     writeln(a,st);
    end;
  end;
 reset(a);
 rewrite(t);
 while not eof(a) do
  begin
   readln(a,st);
   writeln(t,st);
  end;
 close(t);
 close(a);
end.


При компиляции выдает ошибку. почему??? что не так??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2011, 14:31
Ответы с готовыми решениями:

Отредактировать предложение, удаляя из него лишние пробелы, оставляя только по одному пробелу между словами
Отредактировать предложение, удаляя из него лишние пробелы, оставляя только по одному пробелу между...

Вывод текста на экран дисплея, удаляя лишние пробелы между словами и начиная каждое предложение с новой строки
С помощью текстового редактора создать файл, который содержит текст, длина которого не превышает...

Между словами в тексте оставить по одному пробелу
Помогите решить задачу: Ввести латинский текст заданной длины. Преобразовать текст по следующему...

Программа, задача которой удалить в строке по одному пробелу между словами
я не знаю, что это и не знаю, как это делать, даже идей нет:(( помогите, пожалуйста! заранее...

5
Модератор
62861 / 46907 / 32328
Регистрация: 18.05.2008
Сообщений: 113,658
10.05.2011, 14:43 2
Цитата Сообщение от ПиЛюля Посмотреть сообщение
При компиляции выдает ошибку
Какую? Где?
0
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 26
10.05.2011, 14:49  [ТС] 3
Ошибка времени выполнения: System.IO.FileNotFoundException: Could not find file 'C:\Users\1\Desktop\Универ\Программирование\text.txt'.
Стек:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
at System.IO.StreamReader..ctor(String path, Encoding encoding)
at PABCSystem.PABCSystem.Reset(Text f) in C:\Program Files\PascalABC.NET\lib\PABCSystem.pas:line 3041
at строковый тип.Program.$Main() in C:\Users\1\Desktop\Универ\Программирование\ст��оковый тип.pas:line 37
at строковый тип.Program.Main()
0
Модератор
62861 / 46907 / 32328
Регистрация: 18.05.2008
Сообщений: 113,658
10.05.2011, 14:54 4
Попробуйте так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const
 f='text.txt';
 g='aaa.txt';
 
var
 t,a: text;
 st: string;
 
function pr1(x: string): string;
var i:integer;
begin
if x[1]=' ' then
while x[1]=' ' do
delete(x,1,1);
pr1:=x;
end;
function pr2(x: string): string;
var i: integer;
begin
if x[length(x)]=' ' then
while x[length(x)]=' ' do
delete(x,length(x),1);
pr2:=x;
end;
function prob(x: string): string;
var i,j: integer;
begin
while pos('  ',x)>0 do{здесь везде по 2 пробела}
delete(x,pos('  ',x),1);
prob:=x;
end;
 
begin
assign(t,f);
assign(a,g);
reset(t);
rewrite(a);
while not eof(t) do
 begin
  readln(t,st);
  if length(st)>0 then
    begin
     st:=pr1(st);
     st:=pr2(st);
     st:=prob(st);
     writeln(a,st);
    end;
 end;
close(t);
close(a);
erase(t);
rename(a,f);
writeln('Файл отредактирован');
readln
end.
0
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 26
10.05.2011, 20:48  [ТС] 5
вот что сейчас говорит:
Program1.pas(10) : Переменная 'i' нигде не используется
Program1.pas(18) : Переменная 'i' нигде не используется
Program1.pas(26) : Переменная 'i' нигде не используется
Program1.pas(26) : Переменная 'j' нигде не используется
Program1.pas(36) : Ошибка времени выполнения: Could not find file 'C:\PABCWork.NET\text.txt'.
0
Модератор
62861 / 46907 / 32328
Регистрация: 18.05.2008
Сообщений: 113,658
10.05.2011, 21:35 6
Запустил в .net Выполнить без связи с оболочкой, ни единой ошибки.
Во вложении исходный(копия) и получившийся файл.
Так что выпрямляйте руки...
1
Вложения
Тип файла: txt Копия TEXT.TXT (82 байт, 55 просмотров)
Тип файла: txt text.txt (36 байт, 50 просмотров)
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2011, 21:35

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Буквы ю, ъ, ф, э в строке удвоить, а между словами оставить только по одному пробелу
Пользователь заполняет символьную строку русскими буквами. Буквы ю, ъ, ф, э в ней нужно удвоить, а...

В строке между словами оставить по одному пробелу, слова расположить по возрастанию длины.
Объясните кто нить как работают методы copy, concat.......... они почему то не правильно работают в...

Откорректировать файл, удаляя пустые строки, пробелы в конце и вначале строк и оставляя между словами по одному пробелу
Помогите пожалуйста. Задание. Дан текстовый файл Т. Откорректировать его, удаляя пустые строки,...

Отредактировать предложение, удаляя из него лишние пробелы, оставляя по одному пробелу между словами
Отредактировать предложение, удаляя из него лишние пробелы, оставляя по одному пробелу между...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.