Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/22: Рейтинг темы: голосов - 22, средняя оценка - 4.68
1 / 1 / 0
Регистрация: 06.04.2011
Сообщений: 117
1

Символьный файл содержит пробелы. Сжать этот файл (убрать пробелы)

08.05.2011, 13:31. Показов 4107. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
всем привет!
уважаемые, не могли бы вы помочь с задачкой?
Символьный файл содержит пробелы. Сжать этот файл (убрать пробелы).
заранее огромное спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.05.2011, 13:31
Ответы с готовыми решениями:

Символьный файл содержит пробелы. Сжать этот файл (убрать пробелы)
Символьный файл содержит пробелы. Сжать этот файл (убрать пробелы). В текстовом файле, написать...

Символьный файл содержит пробелы. Сжать этот файл (убрать пробелы)
Символьный файл содержит пробелы. Сжать этот файл (убрать пробелы). Помогите с написанием...

Символьный файл содержит пробелы. Сжать этот файл (убрать пробелы)
Символьный файл содержит пробелы. Сжать этот файл (убрать пробелы).

Сжать файл (убрать пробелы)
#include <cstdlib> #include <iostream> #include <string> #include <fstream> #define n 50...

14
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.05.2011, 14:27 2
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
uses crt;
var f:file of char;
    a:char;
    n,i,j,k:integer;
begin
clrscr;
randomize;
assign(f,'file1');
rewrite(f);
write('Количество символов n=');
readln(n);
writeln('Введите ',n,' символов, в том числе пробелы');
for i:=1 to n do
 begin
  write('символ ',i,'=');
  readln(a);
  write(f,a);
 end;
writeln('Исходный файл:');
reset(f);
while not eof(f) do
 begin
  read(f,a);
  write(a,' ');
 end;
writeln;
close(f);
reset(f);
k:=0;i:=0;
while i<=filesize(f)-2-k do{проверяем до предпоследнего}
  begin
  seek(f,i);
  read(f,a);
  if a=' ' then{если пробел}
   begin
    k:=k+1;{считаем}
    for j:=i to filesize(f)-2 do{сдвигаем конец файла на 1 вверх}
     begin
      seek(f,j+1);
      read(f,a);
      seek(f,j);
      write(f,a);
    end;
   end
  else i:=i+1;
 end;
seek(f,filesize(f)-k-1);{проверяем последний из неудаленных}
read(f,a);
if a=' ' then k:=k+1;{если пробел, добавляем удаленных}
seek(f,filesize(f)-k);{встаем в последний}
truncate(f);{обрезаем файл}
close(f);
reset(f);
if filesize(f)=0 then write('Все элементы удалены')
else
 begin
  writeln('Измененный файл:');
  reset(f);
  for i:=0 to filesize(f)-1 do
   begin
    read(f,a);
    write(a,' ');
   end;
 end;
close(f);
readln
end.
0
1 / 1 / 0
Регистрация: 06.04.2011
Сообщений: 117
05.06.2011, 16:02  [ТС] 3
добрый день!
уважаемые программисты, не могли бы вы помочь? есть тут у меня программка, так вот хотелось бы ее немного подсократить.
вот условие:
Символьный файл содержит пробелы. Сжать этот файл (убрать пробелы).
А вот программка:
Код
Program My10;
uses crt;
var f:file of char;
a:char;
n,i,j,k:integer;
begin
clrscr;
randomize;
assign(f,'file1');
rewrite(f);
write('Количество символов n=');
readln(n);
writeln('Введите ',n,' символов, в том числе пробелы');
for i:=1 to n do
begin
write('символ ',i,'=');
readln(a);
write(f,a);
end;
writeln('Исходный файл:');
reset(f);
while not eof(f) do
begin
read(f,a);
write(a,' ');
end;
writeln;
close(f);
reset(f);
k:=0;i:=0;
while i<=filesize(f)-2-k do{проверяем до предпоследнего}
begin
seek(f,i);
read(f,a);
if a=' ' then{если пробел}
begin
k:=k+1;{считаем}
for j:=i to filesize(f)-2 do{сдвигаем конец файла на 1 вверх}
begin
seek(f,j+1);
read(f,a);
seek(f,j);
write(f,a);
end;
end
else i:=i+1;
end;
seek(f,filesize(f)-k-1);{проверяем последний из неудаленных}
read(f,a);
if a=' ' then k:=k+1;{если пробел, добавляем удаленных}
seek(f,filesize(f)-k);{встаем в последний}
truncate(f);{обрезаем файл}
close(f);
reset(f);
if filesize(f)=0 then write('Все элементы удалены')
else
begin
writeln('Измененный файл:');
reset(f);
for i:=0 to filesize(f)-1 do
begin
read(f,a);
write(a,' ');
end;
end;
close(f);
readln
end.
длинноватая она получилась, был бы очень благодарен, если бы мне помогли ее укоротить
0
Mobile Software Engineer
Эксперт С++
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
05.06.2011, 16:06 4
тоесть нужно в файле поудалять пробелы?
0
1 / 1 / 0
Регистрация: 06.04.2011
Сообщений: 117
05.06.2011, 16:13  [ТС] 5
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
тоесть нужно в файле поудалять пробелы?
да. сама программа у меня есть, я выше ее написал, она работает, но просто длинная, а мне надо, чтоб была покороче)))
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
05.06.2011, 16:49 6
F. Alonso, Когда будешь сам писать программы, а не сдирать, то может и короче напишешь.
Вот что на твой просветленный взгляд здесь лишнее?
0
1 / 1 / 0
Регистрация: 06.04.2011
Сообщений: 117
05.06.2011, 16:50  [ТС] 7
Puporev, лишнего тут ничего, но нужно сократить, потому и прошу) разве нельзя ее просто укоротить?
0
Mobile Software Engineer
Эксперт С++
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
05.06.2011, 16:54 8
Цитата Сообщение от F. Alonso Посмотреть сообщение
randomize;
зачем?)
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
05.06.2011, 16:55 9
Нет, нельзя.

Добавлено через 49 секунд
Убери
uses crt;
clrscr;
randomize;
очень укоротится....
0
Mobile Software Engineer
Эксперт С++
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
05.06.2011, 16:55 10
Цитата Сообщение от F. Alonso Посмотреть сообщение
разве нельзя ее просто укоротить
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var f:file of char;
a:char;
n,i:integer;
begin
assign(f,'file1');
rewrite(f);
write('Количество символов n=');
readln(n);
writeln('Введите ',n,' символов, в том числе пробелы');
for i:=1 to n do
begin
write('символ ',i,'=');
readln(a);
write(f,a);
end;
writeln('Исходный файл:');
reset(f);
while not eof(f) do
begin
read(f,a);
write(a,' ');
end;
end.
просто укоротил)
можно еще вот так
Pascal
1
2
3
4
5
6
var f:file of char;
a:char;
n,i:integer;
begin
...........
end.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
05.06.2011, 16:59 11
Не, чтобы коротко и вроде правильно нужно не не удалять пробелы, а просто при просмотре их не выводить...
0
Mobile Software Engineer
Эксперт С++
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
05.06.2011, 17:05 12
Puporev,

Добавлено через 2 минуты
создайте обычный текстовый файл и считываете символы, но как строку(string), а потом просто удалите из неё пробелы
0
298 / 298 / 150
Регистрация: 07.05.2011
Сообщений: 592
05.06.2011, 17:24 13
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
Program My10;
{ Символьный файл содержит пробелы. Сжать этот файл (убрать пробелы). }
uses 
  crt;
var 
  f:file of char;
  a:char;
  n,i,j,k:integer;
  s: string;
begin
  clrscr;
  assign(f,'file1');
  rewrite(f);
 
  write('Количество символов n=');
  readln(n);
  for i:= 1 to n do
    begin
      readln(a);
      write(f,a);
    end;
 
  writeln('Исходный файл:');
  seek(f,0);
  while not eof(f) do
    begin
      read(f,a);
      write(a);
    end;
  writeln;
 
  n:= filesize(f);
  i:=0;
  j:=0;
  
  while i<n do{проверяем до последнего}
    begin
      seek(f,i);
      read(f,a);
      if a<>' ' then{если не пробел}
        begin
          seek(f,j);
          write(f,a);
          inc(j);
        end;
      inc(i);
    end;
  truncate(f);{обрезаем файл}
 
  seek(f,0);
  if eof(f) then 
    write('Все элементы удалены')
  else
    begin
      writeln('Измененный файл:');
      for i:=0 to filesize(f)-1 do
        begin
          read(f,a);
          write(a);
        end;
    end;
  writeln;
  close(f);
  readln
end.
Добавлено через 1 минуту
Проверено в PascalABC.Net. К сожалению, Вы не указали автора изначальной программы, авторские права, etc.
0
1 / 1 / 0
Регистрация: 06.04.2011
Сообщений: 117
05.06.2011, 17:26  [ТС] 14
lamed, спасибо огромное!

Добавлено через 1 минуту
Цитата Сообщение от lamed Посмотреть сообщение
Проверено в PascalABC.Net. К сожалению, Вы не указали автора изначальной программы, авторские права, etc.
не понял.
0
298 / 298 / 150
Регистрация: 07.05.2011
Сообщений: 592
05.06.2011, 17:29 15
Вопрос возник из-за Вашей полемики в форуме. Если авторство Ваше - принимайте поздравления. Если она откуда-то скачана, принято ссылаться на автора или сайт или учебник.
0
05.06.2011, 17:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2011, 17:29
Помогаю со студенческими работами здесь

Символьный файл содержит пробелы. Нужно сосчитать его без прробелов
Доброго времени суток! Не пойму, как можно сосчитать символьную строку без пробелов. Например,...

Открыть файл, путь к которому содержит пробелы и передается в переменной
Public LogFileName '... private sub '... ' програмка задает имя и путь к файлу с произвольным...

Убрать лишние(повторяющиеся) пробелы, и записать в файл
помоги, пожалуйста, доработать программу Надо убрать лишние(повторяющиеся) пробелы, и записать в...

Даны натуральное , символьный файл и текстовый файл . Файл содержит 30 слов , каждое из которых будем называть ключевым
Добрый день, помогите пожалуйста сделать вот такую программу. Даны натуральное k , символьный файл...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru