Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2008, 19:12   #1
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию Задача с файлами.

Дан текстовый файл (во вложении) на английском языке. Текс из него нужно скопировать в другой текстовый файл и в этом втором файле перед началом каждой нечетной строки вставить количество знаков препинания ( . , ; ! ? " ) в этом файле.
Вложения
Тип файла: txt lab10.txt (11.0 Кб, 153 просмотров)
bygoga вне форума Ответить с цитированием
Старый 01.12.2008, 19:22   #2
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

Вставлять перед началом каждой нечетной строки колличество знаков препинания во всем файле или для данной строки? и считать общее колличество знаков препинания или считать колличтво запятых, точек...?
Викдон вне форума Ответить с цитированием
Старый 01.12.2008, 19:47   #3
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
uses crt;
var n,i:integer;
    f,f1:text;
    ch:char;

begin
assign(f,'c:\lab10.txt');
reset(f);
assign(f1,'c:\lab10Out.txt');
rewrite(f1);
n:=0;
while not eof(f) do
 begin
   read(f,ch);
   if (ch=',') or (ch='.') or (ch='!') or (ch='?')or (ch=';')or (ch=#39) then inc(n);
 end;
close(f);
assign(f,'c:\lab10.txt');
reset(f);
i:=1;
while not eof(f) do
 begin
 if i mod 2 =1 then write(f1,n);
 repeat
  read(f,ch);
  write(f1,ch);
 until ch='.';
 read(f,ch);
 write(f1,ch);
 if ch =' ' then inc(i)
    else i:=2;
 end;
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.

Последний раз редактировалось alex_fcsm; 02.12.2008 в 19:37.
alex_fcsm вне форума Ответить с цитированием
Старый 03.12.2008, 14:27   #4
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию

Перед началом КАЖДОЙ нечетной строки нужно вставить количество знаков препинания, которые есть именно в этой строке.
bygoga вне форума Ответить с цитированием
Старый 03.12.2008, 14:48   #5
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

а разве не так?
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 03.12.2008, 15:36   #6
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию

Твоя прога пишет кол-во знаков препинания не в данной строке, а во всем файле, и лепит их где попало.
bygoga вне форума Ответить с цитированием
Старый 03.12.2008, 15:53   #7
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Цитата:
Сообщение от bygoga Посмотреть сообщение
Дан текстовый файл (во вложении) на английском языке. Текс из него нужно скопировать в другой текстовый файл и в этом втором файле перед началом каждой нечетной строки вставить количество знаков препинания ( . , ; ! ? " ) в этом файле.
Ставит перед нечетным предложением, а символы подсчитывает во всем файле как и написано
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 03.12.2008, 15:58   #8
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Несложно переделать было бы желание

Код:
uses crt;
var n,i:integer;
    f,f1:text;
    ch:char;
    s:string;

begin
assign(f,'c:\lab10.txt');
reset(f);
assign(f1,'c:\lab10Out.txt');
rewrite(f1);
n:=0;
while not eof(f) do
 begin
   read(f,ch);
   if (ch=',') or (ch='.') or (ch='!') or (ch='?')or (ch=';')or (ch=#39) then inc(n);
 end;
close(f);
assign(f,'c:\lab10.txt');
reset(f);
i:=1;
while not eof(f) do
 begin
 if i mod 2=1 then begin
                    write(f1,n);
                    write(f1,' ');
                   end;
 readln(f,s);
 writeln(f1,s);
 inc(i);
 end;
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 03.12.2008, 16:09   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот нормальный код, только учтите, что программа понимает под строкой массив длиной 255 символов. И если Вы не развернете блокнот на всю ширину, Вы увидите искаженную картину.
Код:
uses crt;
const zn=['.',',',';',':','?','!'];
var n,i,k:integer;
    f,f1:text;
    s,s1:string;
begin
assign(f,'lab10.txt');
reset(f);
assign(f1,'lab10Out.txt');
rewrite(f1);
n:=0;
while not eof(f) do
 begin
   inc(n);
   readln(f,s);
   if odd(n) then
     begin
       k:=0;
       for i:=1 to length(s) do
       if s[i] in zn then k:=k+1;
       str(k,s1);
       insert(s1,s,1);
       writeln(f1,s);
     end
   else writeln(f1,s);
  end;
close(f);
close(f1);
writeln('Fail lab10Out zapisan!');
readln
end.
Вот пример этого файла.
Вложения
Тип файла: txt LAB10OUT.TXT (11.0 Кб, 151 просмотров)

Последний раз редактировалось puporev; 03.12.2008 в 16:14.
puporev вне форума Ответить с цитированием
Старый 05.12.2008, 21:45   #10
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию

Всем спасибо, особенно puporev!
bygoga вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача на работу с файлами и строками MiH@N Помощь студентам 8 24.06.2008 00:44
Задача с текстовыми файлами SpeedMaster Паскаль, Turbo Pascal, PascalABC.NET 4 02.04.2007 15:43
Задача с файлами Наташа Общие вопросы C/C++ 4 05.01.2007 20:23