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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2008, 17:13   #1
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию Обработка файлов (Pascal)

Удаление начала каждой строки до второго появления заданного символа

Код:
Program Lb9;
Uses crt;
Var file1,file2,str:string;
    f1,f2:text;
    ch:char;
Begin
clrscr;
write('Input file= ');
readln(file1);
write('Output file= ');
readln(file2);
assign(f1,file1);
reset(f1);
if ioresult<>0 then begin
 write('File not found');
 readln;
end;
assign(f2, file2);
rewrite(f2);
While not eof(f1) do begin
 if eoln (f1)then
  Begin
   Readln(f1,str);
   Writeln;
  End;
While not eof(f1) do begin
 Read(f1,ch);
 Write(ch);
End;
End;
 close(f1);
 close(f2);
End.
Помогите доделать лабу... (не получается)...
Дима82 вне форума Ответить с цитированием
Старый 02.06.2008, 18:01   #2
north
Пользователь Подтвердите свой е-майл
 
Регистрация: 06.11.2007
Сообщений: 68
По умолчанию

Вот программа, которая удаляет начало строки до второго появления символа в строке:
Код:
program Project2;
var
  s1,{заданная строка}
  s,{заданный символ}
  s2:string;

procedure vvod;
begin
  assign(input,'input.txt');
  reset(input);
  readln(s1);
  read(s);
  s2:=s1;
  close(input);
end;

procedure resh;
var
  k:byte;
begin
   k:=0;
   while (k < 2) and (length(s2)>=1) do
   begin
       if s2[1] <> s then   delete(s2,1,1)
       else if (s2[1] = s) and (k=0) then
       begin
           delete(s2,1,1);
           inc(k);
       end
       else inc(k);

   end;
end;

procedure vivod;
begin
  assign(output,'output.txt');
  rewrite(output);
  writeln(s1);
  write(s2);
  close(output);
end;

begin
  vvod;
  resh;
  vivod;
end.
north вне форума Ответить с цитированием
Старый 02.06.2008, 18:07   #3
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию

А, если без процедуры, а то мы это не проходили... Да и надо задать этот символ, т.е. написать на экране дисплея...
Дима82 вне форума Ответить с цитированием
Старый 02.06.2008, 18:10   #4
north
Пользователь Подтвердите свой е-майл
 
Регистрация: 06.11.2007
Сообщений: 68
По умолчанию

Вот(но это только для одной строки):
Код:
program Project2;
var
  s1,{заданная строка}
  s,{заданный символ}
  s2:string;
  k:byte;

begin
  read(s,s1);
  s2:=s1;
  k:=0;
   while (k < 2) and (length(s2)>=1) do
   begin
       if s2[1] <> s then   delete(s2,1,1)
       else if (s2[1] = s) and (k=0) then
       begin
           delete(s2,1,1);
           inc(k);
       end
       else inc(k);
   end;
  writeln(s1);
  write(s2);
end.

Последний раз редактировалось north; 02.06.2008 в 18:12.
north вне форума Ответить с цитированием
Старый 02.06.2008, 18:40   #5
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию

Код:
Program Lb9;
Uses crt;
Var file1,file2,s,s1,s2:string;
    f1,f2:text;
    K:byte;
Begin
clrscr;
write('Input file= ');
readln(file1);
write('Output file= ');
readln(file2);
assign(f1,file1);
reset(f1);
if ioresult<>0 then begin
 write('File not found');
 readln;
end;
assign(f2, file2);
rewrite(f2);
{While not eof(f1) do begin
 if eoln (f1)then
  Begin
   Readln(f1,s);
   Writeln;
  End;
While not eof(f1) do begin
 Read(f1,ch);
 Write(ch);
End;        }
Read(s,s1);
s2:=s1;
K:=0;
 While (K<2) and (length(s2)>=1) do
 Begin
  If s2[1] <> s then delete(s2,1,1)
  else if (s2[1]=s) and (k=0) then
  begin
   delete(s2,1,1);
   inc(k);
  end;
End;
 close(f1);
 close(f2);
End.
Не получается даже с одной строкой...
Дима82 вне форума Ответить с цитированием
Старый 02.06.2008, 18:44   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Чего вы мудрите, если просто нужно 2 раза написать delete, первый раз включая заданный символ, второй раз до него, все записать в новй файл.
Код:
Program Lb9;
Uses crt;
Var file1,file2,str:string;
    f1,f2:text;
    ch:char;
Begin
clrscr;
write('Input file= ');
readln(file1);
write('Output file= ');
readln(file2);
assign(f1,file1);
reset(f1);
if ioresult<>0 then begin
 write('File not found');
 readln;
end;
assign(f2, file2);
rewrite(f2);
write('Vvedite simvol ch=');
readln(ch);
While not eof(f1) do
   begin
     Readln(f1,str);
     delete(str,1,pos(ch,str));
     delete(str,1,pos(ch,str)-1);
     Writeln(f2,str);
  End;
 close(f1);
 close(f2);
End.
puporev вне форума Ответить с цитированием
Старый 02.06.2008, 18:51   #7
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию

Можно вопрос. Что означает "pos"?
Код:
While not eof(f1) do  
   begin  
     Readln(f1,str);   
     delete(str,1,pos(ch,str));   
     delete(str,1,pos(ch,str)-1);   
     Writeln(f2,str);   
  End;
Дима82 вне форума Ответить с цитированием
Старый 02.06.2008, 18:53   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Открой учебник или Help Паскаля и прочитай, стыдно такое спрашивать.
puporev вне форума Ответить с цитированием
Старый 02.06.2008, 18:55   #9
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию

Спасибо...
Дима82 вне форума Ответить с цитированием
Старый 02.06.2008, 21:28   #10
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь: выбор файлов исходя из имени файлов Antik163RUS Помощь студентам 4 19.06.2008 21:20
Помогите с программированием обработки файлов (Pascal) Дима82 Помощь студентам 2 25.05.2008 13:05
Помогите с программированием операций обработки файлов(Pascal) Дима82 Помощь студентам 11 24.05.2008 18:02