Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
S2dent
52 / 50 / 24
Регистрация: 10.05.2009
Сообщений: 216
#1

Удаление лишних пробелов. Динамическая память - Pascal

10.05.2009, 12:31. Просмотров 2109. Ответов 20
Метки нет (Все метки)

Здравствуйте господа эксперты! Прошу помощи в решении следующей задачи:Убрать из текста лишние пробелы, т.е. там, где они встречаются больше одного раза, оставить один пробел Вот мой получившийся код:
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
{$R-}
program lab16;
type Mas=array[1..1] of string;
     DinMas=^Mas;
 
procedure InputData(var a:DinMas; var n:integer);
var FileIn:text;
    NameFile:string;
begin
  write('Введите имя входного файла ');
  readln(NameFile);
  assign(FileIn,NameFile);
  GetMem(a,SizeOf(string)*n);
  {$I-}
  reset(FileIn);
  {$I+}
  if IOResult<>0 then
    begin
      writeln('Ошибка! Файл ',NameFile,' не найден!');
      readln;
      halt;
    end;
    n:=0;
    while not Eof(FileIn) do
      begin
        inc(n);
        readln(FileIn,a^[n]);
      end;
      Close(FileIn);
end;
 
procedure DeleteSpacesInString(var S:string);
var p,i:integer;
begin
  for i:=1 to length(S) do
    begin
      repeat
        p:=Pos('  ',S);
        if p>0 then Delete(S,p,1);
      until p=0;
      if S[1]=' ' then Delete(S,1,1);
        if S[length(S)]=' ' then Delete(S,length(S),1);
    end;
end;
 
procedure DeleteSpacesInMas(var a:DinMas; n:integer);
var i:integer;
begin
  for i:=1 to n do
    DeleteSpacesInString(a^[i]);
end;
 
procedure OutputData(a:DinMas; n:integer);
var FileOut:text;
    NameFile:string;
    i:integer;
begin
  write('Введите имя выходного файла ');
  readln(NameFile);
  assign(FileOut,NameFile);
  rewrite(FileOut);
  for i:=1 to n do
    writeln(FileOut,a^[i]);
    FreeMem(a,SizeOf(string)*n);
    Close(FileOut);
end;
 
var a:DinMas;
    n:integer;
begin
  InputData(a,n);
  DeleteSpacesInMas(a,n);
  OutputData(a,n);
end.
Препод сказал, что ошибка в выделении памяти.. Думаю нужно считывать файл дважды, для определения в нем количества строк, а затем выделения памяти, но не знаю как это организовать.. Помогите пожалуйста. Заранее огромное спасибо!!!
http://www.cyberforum.ru/pascal/thread27377.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2009, 12:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Удаление лишних пробелов. Динамическая память (Pascal):

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

Динамическая память.
Создать массив в динамической памяти A(n). Получить новый массив из...

Динамическая память
Cоставить программу, которая вставляет в непустой список L новый элемент F...

Динамическая память
Ввести массив А. В массив В перенести все элементы массива А, имеющие значение...

Динамическая память
Помогите пожалуйста! Заполнить файл f целыми числами, полученными с помощью...

20
MiniMin
68 / 24 / 2
Регистрация: 16.05.2009
Сообщений: 73
16.05.2009, 22:06 #21
0
16.05.2009, 22:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2009, 22:06
Привет! Вот еще темы с решениями:

Динамическая память.
2 Задачи: Сформировать стек. Анализируя стек, сформировать списки: a) Букв...

Динамическая память
Добрейший всем вечерочек!) Товарищи, помогите пожалуйста с задачей: Решить...

динамическая память!!!!
Помагите решить задачу с помащью динамической памяти!!! Создайте и обработайте...

динамическая память
Уважаемые эксперты написал программу но со статическими переменными , а...


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

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

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