Новые сообщения · Правила  
  • Страница 1 из 1
  • 1
Форум ПРОГРАММИСТОВ » КУРС ОПР - ПАСКАЛЬ » Лабораторные работы » Лабораторная работа №10 (Работа с файлами)
Лабораторная работа №10
Тема - ФАЙЛЫ. Цель работы - изучение методов обработки, сохранения, создания файлов.

1. Дан текстовый файл. Вывести количество содержащихся в нем символов и строк (маркеры концов строк EOLN и конца файла EOF при подсчете количества символов не учитывать).

2. Даны два текстовых файла с именами Name1 и Name2. Создать новый текстовый файл с именем Name3, являющийся объединением содержимого файлов Name1 и Name2 (в указанном порядке).

3. Даны два текстовых файла с именами Name1 и Name2. Добавить в конец файла Name1 содержимое файла Name2.

4. Дано число k (< 10) и текстовый файл, содержащий более k строк. Удалить из файла первые и последние k строк.

5. Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла.

6. Дано число k и текстовый файл. Удалить из файла строку с номером k (строки нумеруются от 0). Если строки с таким номером нет, то оставить файл без изменений.

7. Дан текстовый файл. Создать символьный файл, содержащий все знаки препинания, встретившиеся в текстовом файле (в том же порядке).

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

9. Дан текстовый файл. Найти количество абзацев в тексте, если каждый абзац начинается с красной строки (5 пробелов). Пустые строки между абзацами не учитывать.

10. Дано целое число N и текстовый файл. Создать файл, содержащий все слова длины N из исходного файла (знаки препинания, расположенные в начале и в конце слов, не учитывать). Если исходный файл не содержит слов длины N, оставить результирующий файл пустым.

11. Дан текстовый файл. Вывести первое и последнее слово текста наибольшей длины (с учетом знаков препинания, расположенных в начале и в конце слов).

12. Дана некоторая буква и текстовый файл. Создать файл, содержащий все слова из исходного файла, начинающиеся и оканчивающиеся этой буквой (как прописной, так и строчной). Знаки препинания, расположенные в начале и в конце слов, не учитывать. Если исходный файл не содержит подходящих слов, оставить результирующий файл пустым.

13. Дано число N и текстовый файл. Удалить из файла абзац с номером N (абзацы выделяются с помощью красной строки (5 пробелов) и нумеруются от 1). Пустые строки между абзацами не учитывать и не удалять. Если абзац с данным номером отсутствует, то оставить файл без изменений.

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

15. Дан текстовый файл, содержащий слова паразиты (ну, короче и т.п.) Удалить из текстового файла эти слова и создать новый файл без этих слов.

16. Дана функция y=sin(x), диапазон аргумента от a до b c шагом 0.01. Создать текстовый файл, содержащий в каждой строке запись типа: sin(x)=y подставляя вместо x значение аргумента а вместо y - соответствующее значение функции. Например: sin(3.14)=1 для каждого значения аргумента из указанного диапазона с заданным шагом.

17. Даны два текстовых файла. Составить третий файл, состоящий из слов, которые встречаются и в первом файле и во втором.
1 | Автор: admin | 2014-11-04, 22:12   |  Репутация: [ + 22 ]
5. Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла. 
Код
Program Lab10;
Var x,n:text; {файловая переменная}
      s:string; {строковая переменная}
      y,k,m:byte;{ числовая переменная }
Begin
      write('Введите "k": ');readln(k);
      Assign(x,'vhod.txt');Reset(x);
      While not Eof(x) do  
      Begin
        readln(x,s); {Чтение из текстового файла}
        inc(m); {увеличивает переменную "m" на единицу }
      End;
      Close(x); {Закрывает текстовый файл 'x'}
      Reset(x);{Окрытие текстового файла 'x'}
      Assign(n,'vuhod.txt');{Назначает файловой переменной имя внешнего файла.}
      Rewrite(n);{устанавливает файл с именем n в начальное состояние режима записи}
      While not Eof(x) do {пока файл не закончится выполнять}
      Begin   
        readln(x,s);{Чтение из текстового файла}
        inc(y); {увеличивает переменную 'y' на единицу }
        if m-y<k then writeln(n,s); {Если количество строк меньше заданного "k"   
                     вывести "s" строки во второй текстовый файл "n"}
      End;
      Close(n); {Закрывает текстовый файл 'n'}
      writeln('Результат в файле "vuhod.txt"');
      readln;
End.



Selena
2 | Автор: Selena | 2014-11-05, 14:38 | Изменено: Selena - Ср, 2014-11-05, 19:36   |  Репутация: [ + 2 ]
8. Дан текстовый файл. Найти количество абзацев в тексте, если абзацы отделяются друг от друга одной или несколькими пустыми строками. 

Код
Program Mr_Pozitiv;
  //('*****************************************************');
  //('*        laba #10  file: text.pas == ver.1.0        *');
  //('*                     exercise                      *');
  //('*   Malevanny V. A.  Group I-14-1 Date: 05/11/14    *');
  //('*****************************************************');
var f :text; s :string; i :integer; b :boolean;
begin
   Assign(f,'text.txt');
   Reset(f);
   Readln(f,s);
   if s='' then b:=false else b:=true;
  if b then i:=1 else i:=0;
  while not eof(f) do
     begin
       Readln(f,s);
       if not(b) and (s<>'') then inc(i);
       if s='' then b:=false else b:=true;
       end;
   writeln('Количество абзацев: ',i);
   close(f);
end.


perfect ;)
3 | Автор: Mr_Pozitiv | 2014-11-05, 22:30   |  Репутация: [ + 6 ]
3. Даны два текстовых файла с именами Name1 и Name2. Добавить в конец файла Name1 содержимое файла Name2.
Код

program AlenaKit10;
var  
T1,T2:text;
text:string;
begin
Assign(T1,'C:\PABCWork.NET\Name1.txt');
Assign(T2,'C:\PABCWork.NET\Name2.txt');

begin
   if FileExists('C:\PABCWork.NET\Name1.txt') then  
  begin
Append(T1);
Reset(T2);
while not EOF(T2) do  
begin  
readln(T2,text);
writeln(T1,text);
end;
Close(T1);
Close(T2);

end
   else writeln('Файл поврежден или удален,проверьте наличие и целостность файла Name1.txt')

end;
end.


до выполнения программы

после выполнения



AlenaKit♥
4 | Автор: AlenaKit | 2014-11-05, 23:58   |  Репутация: [ + 12 ]

1. Дан текстовый файл. Вывести количество содержащихся в нем символов и строк (маркеры концов строк EOLN и конца файла EOF при подсчете количества символов не учитывать). 
Код
program dimeshion;
      {('**************************************************');
       ('*     laba #10 file: di_10.pas == ver1.0         *');
       ('*                   laba #10                     *');
       ('*    Bazaliy E.V. Group: I-14-1 Date: 09/11/14   *');
       ('**************************************************');}
uses crt;
var tx1: text; s1,str: string; KolStr,KolSymb: integer;
begin
       clrscr;
       writeln('Введите имя файла:');
       readln(s1);
       assign(tx1,s1);
       reset(tx1);
       KolStr:=0; KolSymb:=0;
       while not Eof(tx1) do
       begin
       readln(tx1,str);
       KolStr:= KolStr+1;
       KolSymb:=KolSymb+length(str);
       end;
       close(tx1);
       writeln('Количество строк в файле: ',KolStr);
       writeln('Количество символов в файле: ',KolSymb);
       writeln('Press enter.');
       readln;
       end.


5 | Автор: dimeshion | 2014-11-09, 15:56 | Изменено: dimeshion - Вс, 2014-11-09, 17:28   |  Репутация: [ + 2 ]
Код
Program ira_butenko97
Var b1,b2:text;
s:string;
i,k,n,c:byte;
Begin
write('Введите количество удаляемых строк (k<10) ');
readln(k);
writeln;
Assign(b1,'d:\butenko.txt');
Rewrite (b1);
writeln (b1,'aaaaaaaaaaaaaaaaaaaa');
writeln (b1,'bbbbbbbbbbbbbbbbbbbb');
writeln (b1,'cccccccccccccccccccc');
writeln (b1,'dddddddddddddddddddd');
writeln (b1,'iiiiiiiiiiiiiiiiiiii');
writeln (b1,'ffffffffffffffffffff');
writeln (b1,'gggggggggggggggggggg');
writeln (b1,'lalalalalalalalalal');
writeln (b1,'ededeeeededededede');
writeln (b1,'yttytytt');
writeln (b1,'zazazazazazazazaz');
writeln (b1,'tytytytytytytyttyyt');
writeln (b1,'jjjjjj');
writeln (b1,'qqqqqqqq');
Close(b1);
Reset(b1);
While not Eof(b1) do
Begin
readln(b1,s);
inc(n);
End;
Close(b1);
Reset(b1);
Assign(b2,'d:\ira.txt');
Rewrite(b2);
repeat
readln(b1,s);
inc(c);
if c>k then begin
writeln(b2,s);
end;
n:=n-1;
until n=k;
Close(b1);
Erase(b1);
Close(b2);
Rename(b2,'d:\butenko.txt');
writeln('Результат в файле "d:\butenko.txt"');
readln;
End.


 Дано число k (< 10) и текстовый файл, содержащий более k строк. Удалить из файла первые и последние k строк.
6 | Автор: ira_butenko97 | 2014-11-16, 14:11   |  Репутация: [ + 4 ]
6. Дано число k и текстовый файл. Удалить из файла строку с номером k (строки нумеруются от 0). Если строки с таким номером нет, то оставить файл без изменений. 
Код
Program ELMpr_La10;
var
     f1,f2:text;
     i,k:integer;
     s:string;
begin
     assign(f1, 'input.txt');
     Reset(f1);
     While not Eof(f1) do
       Begin
         readln(f1,s);
         inc(i);
       End;
     close(f1);
     write('Номер строки, которую нужно удалить: ');
     readln(k);
     if k<=i then
       Begin
         Assign(f2,'output.txt');
         Rewrite(f2);
         Reset(f1);
         i:=0;
         While not Eof(f1) do
           Begin
             readln(f1,s);
             if k<>(i+1) then writeln(f2,s);
             inc(i);
           End;
         close(f1);
         close(f2);
         erase(f1);
         rename(f2, 'input.txt');
       End
     else writeln('В файле нет этой строки');
end.



El_Magnifico with <3
7 | Автор: El_MAgnifico | 2014-11-20, 18:20 | Изменено: El_MAgnifico - Чт, 2014-11-20, 23:27   |  Репутация: [ + 8 ]
14. Дан текстовый файл, содержащий слова, которые могут начинаться или заканчиваться гласными или согласными. Создать новый файл на основе заданного, удалив из него все слова начинающиеся или заканчивающиеся  гласными буквами.


Код
var
output,input:text;              
s,s1:string;      
i:integer;           
q,x:set of char;   
begin
q:=['b','c','d','f','g','h','k','l','m','n','p','q','r','s','t','v','w','z',
'B','C','D','F','G','H','K','L','M','N','P','Q','R','S','T','V','W','Z',
'Б','В','Г','Д','Ж','З','Й','К','Л','М','Н','П','Р','С','Т','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ь',
'б','в','г','д','ж','з','й','к','л','м','н','п','р','с','т','ф','ч','ц','ч','ш','щ','ъ','ь'];    
x:=[' ',',','!',';','.',':','?'];                    
assign(output, 'output.txt');                    
rewrite(output);
assign(input, 'input.txt');                    
reset(input);
while not eof(input) do
begin
readln(input,s);                    
for i:=1 to length(s) do                    
if (s [i]in x) or (i=length(s))                    
then                    
begin
if (i=length(s))and(not(s[i]in x))                    
then s1:=s1+s[i];                    
if (s1[1] in q) and (s1[length(s1)] in q)                     
then writeln(output,s1);                    
s1:='';                    
end
else                    
s1:=s1+s[i];
end;
close(input);                    
close(output);                    
writeln('Программа завершена. Результаты действий записаны в "output.txt"')                    
end.

8 | Автор: Bun_Frith | 2014-11-21, 00:43   |  Репутация: [ + 4 ]
15.Дан текстовый файл, содержащий слова паразиты (ну, короче и т.п.) Удалить из текстового файла эти слова и создать новый файл без этих слов.
Код
Program OlgaFrolova;
var
TX,TX2:text;
s,str:string;
i,j,k,v:byte;
Begin
Assign (TX2,'E:\Result.txt');
rewrite(TX2);
Assign(TX,'E:\SLOVA.txt');
reset(TX);
while not Eof(TX) do
begin
     Readln(TX,s);
repeat
      i:=pos('блин',s);
      j:= pos('ну',s);
      k:=pos('типа',s);
      v:=pos('короче',s);
      if (i<>0) then delete(s,i,4);
      if (j<>0) then delete(s,j,2);
      if (k<>0) then delete (s,k,4);
      if (v<>0) then delete (s,v,6);
      until (i=0) and (j=0)and (k=0) and (v=0);
      writeln(TX2,s);
      end;
      close(TX2);
      close(TX);
      writeln('Результат в файле "Result"');
      end.



25101996
9 | Автор: OlgaFrolova | 2014-11-22, 16:02   |  Репутация: [ + 0 ]
1. Дан текстовый файл. Вывести количество содержащихся в нем символов и строк (маркеры концов строк EOLN и конца файла EOF при подсчете количества символов не учитывать).  

Код
program dimeshion;
uses crt;
var tx1: text; s1,str: string; KolStr,KolSymb: integer;
begin
      clrscr;
      writeln('Введите имя файла:');
      readln(s1);
      assign(tx1,s1);
      reset(tx1);
      KolStr:=0; KolSymb:=0;
      while not Eof(tx1) do
      begin
      readln(tx1,str);
      KolSymb:=Kolsymb+length(str);
      inc(KolStr);
      end;
      close(tx1);
      writeln('Количество строк в файле: ',KolStr);
      writeln('Количество символов в файле: ',KolSymb);
      writeln('Press any key.');
      readkey;
      end.


10 | Автор: dimeshion | 2014-11-23, 22:42   |  Репутация: [ + 2 ]
9. Дан текстовый файл. Найти количество абзацев в тексте, если каждый абзац
начинается с красной строки (5 пробелов). Пустые строки между абзацами
не учитывать.

Код
Program qwerty159;
Var
a: text;
s: string;
i: byte;
Begin
Assign(a,'d:\123.txt');
Reset(a);
i:=0;
While not Eof(a) do begin
Readln(a,s);
if copy(s,1,5)<>'' then  
Inc(i);
end;
Close(a);
Writeln(i);
Readln;
end.

11 | Автор: @qwerty159 | 2014-11-23, 22:49   |  Репутация: [ + 0 ]
Код
Program _10;
   Var a,b,h,x,y:real;
         Begin
           Assign(Output,'ttt.txt');
           Rewrite(Output);
           Readln(a, b);
           x:=a; h:=0.01;
           while x<=b do
             Begin
                y:=sin(x);
                writeln('sin(',x:0:3,')=',y:0:5);
                x:=x+h;
             End;
           Close(Output)
         End.
16. Дана функция y=sin(x), диапазон аргумента от a до b c шагом 0.01. Создать текстовый файл, содержащий в каждой строке запись типа: sin(x)=y подставляя вместо x значение аргумента а вместо y - соответствующее значение функции. Например: sin(3.14)=1 для каждого значения аргумента из указанного диапазона с заданным шагом. 

12 | Автор: torres | 2014-11-24, 21:46   |  Репутация: [ + 0 ]
Задание 2. Даны два текстовых файла с именами Name1 и Name2. Создать новый текстовый файл с именем Name3, являющийся объединением содержимого файлов Name1 и Name2 (в указанном порядке). 


Код
Var
Z1, Z2, Z3:text;
text:string;

Begin
Assign(Z1, 'C:\PABCWork.NET\OPR\Name1.txt');
Assign(Z2, 'C:\PABCWork.NET\OPR\Name2.txt');
Assign(Z3, 'C:\PABCWork.NET\OPR\Name3.txt');

Begin
  Append(Z3);
  Reset(Z1);
  While not EOF(Z1) do
  Begin
    Readln(Z1, text);
    Writeln(Z3,Text);
      End;
  Close(Z1);
  Reset(Z2);
  While not EOF(Z2) do
   Begin
    Readln(Z2, text);
    Writeln(Z3,Text);
   End;
Close(Z2);
Close(Z3);
End;
end.


Файлы до запуска программы: 



Файлы после запуска программы: 

13 | Автор: beznoschenko | 2014-11-25, 19:15   |  Репутация: [ + 2 ]
9. Дан текстовый файл. Найти количество абзацев в тексте, если каждый абзац
начинается с красной строки (5 пробелов). Пустые строки между абзацами
не учитывать.

Код
Program qwerty159;
uses crt;
Var
    a: text;
    s, b, k: string;
    i: byte;
Begin
    Assign (a, 'd:\123.txt');
    reset(a);
    i:=0;
    k:='     ';
    While not Eof(a) do
       begin
          Readln(a, s);
          b:=copy(s, 0, 5);
          if (b = k) then
             begin
             inc(i);
             end;
          writeln(s);
       end;
    close(a);
    clrscr;
    writeln(i);
    readln;
end.


14 | Автор: @qwerty159 | 2014-11-25, 22:39   |  Репутация: [ + 0 ]
10. Дано целое число N и текстовый файл. Создать файл, содержащий все слова длины N из исходного файла (знаки препинания, расположенные в начале и в конце слов, не учитывать). Если исходный файл не содержит слов длины N, оставить результирующий файл пустым.
Код

const limits=[#0..#32,'.',',',':',';','!','?','"'];
var
output,input:text;
s:string;
len,і,n,back:byte;
begin
writeln('Введите длинну слов');
readln(len);
assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output);
while not(eof(input)) do begin
readln(input,s);
і:=1;
n:=0;
while(i<=length(s)) do begin
while(i<=length(s)) and (s[i] in limits) do inc(i);
if i<=length(s) then begin
back:=i;
while(i<=length(s)) and not(s[i] in limits) do inc(i);
inc(n);
if (length(copy(s, back, i-back))=len) then writeln(output,copy(s, back, i-back));
end;
end;
end;
close(input);
close(output);
end.


15 | Автор: Awesome | 2014-11-26, 18:19   |  Репутация: [ + 2 ]
15 | Автор: Awesome | 2014-11-26, 18:19   |  Репутация: [ + 2 ]
program laba;
var
Tx:text;
Sf:text;
sm,pr: String;
 i,b:byte;
Begin 
Assign (Sf,'D:\Result.txt');

Assign(Tx,'D:\primer.txt'); 
rewrite(Sf);
Reset(Tx); 
while not Eof(TX) do
 begin
     Readln(TX,sm);
     b := Length(sm);
    for i := 1 to Length(sm) do
      begin
        if sm = '!' then pr += '!';
        if sm = '.' then pr += '.';
        if sm = ':' then pr += ':';
        if sm = '-' then pr += '-';
        if sm = ',' then pr += ',';
        if sm = '?' then pr += '?';
        if sm = ';' then pr += ';';
        if sm
= '"' then pr += '"';
      end;   
    end;
    writeln(sm);
    writeln(pr);
  writeln(Sf,pr);
 close(Sf);
 close(TX);
 writeln('Результат в файле "Result"');
end.


Ирина Зазноба
16 | Автор: iren456 | 2014-11-28, 19:03 | Изменено: iren456 - Сб, 2014-11-29, 23:39   |  Репутация: [ + 0 ]
11. Дан текстовый файл. Вывести первое и последнее слово текста наибольшей длины (с учетом знаков препинания, расположенных в начале и в конце слов).
Код
var s,s2,s1,s3:string;
i:integer;
f:textfile;
begin
assignfile(f,'1.txt');
reset(f);
read(f,s);
s:=s+' ';
for i:=1 to length(s) do begin
if s[i]<>' ' then   
s1:=s1+s [i]else begin
if length(s1)>=length(s2) then begin
s2:='';
s2:=s1;
s1:='';
end else
s1:='';
end;
end;
s1:='';
for i:=1 to length(s) do begin
if s[i]<>' ' then   
s1:=s1+s [i]else begin
if (length(s1)>length(s3)) and (s1<>s2) then begin
s3:='';
s3:=s1;
s1:='';
end else
s1:='';
end;
end;
writeln(s);
writeln(s3);
writeln(s2);
end.

17 | Автор: Forzorezor | 2014-11-28, 20:20 | Изменено: Forzorezor - Пт, 2014-11-28, 20:55   |  Репутация: [ + 4 ]
17. Даны два текстовых файла. Составить третий файл, состоящий из слов, которые встречаются и в первом файле и во втором.

Код
Program ProjectX;
const
     n = 9;
var
     mas1: array[1..n] of string;
     mas2: array[1..n] of string;
     W1,W2,W3: text;
     st1,st2: string;
     t,r: integer;
begin
     assign(W1, 'C:\Users\user\Desktop\File 1.txt');{Начало работы с файлами}
     reset(W1);
     assign(W2, 'C:\Users\user\Desktop\File 2.txt');
     reset(W2);
     assign(W3, 'C:\Users\user\Desktop\File 3.txt');
     rewrite(W3);                    {Открываем File 3 для записи }
     for t:=1 to n do {Проверяем строки File 1}
begin
     readln(W1, st1);
     mas1[t]:=st1;
     end;
     for r:=1 to n do {Проверяем строки File 2}
begin
     readln(W2, st2);
     mas2[r]:=st2;
     end;
     for t:=1 to n do
       for r:=1 to n do
       if mas1 [t]= mas2 [r]then writeln(W3, mas1[t]); {Запись содержимого File 1 и File 2 в File 3}
     close(W1);
     close(W2);
     close(W3);
end.




http://195.208.237.170/WDE....a10.pas
18 | Автор: stx | 2014-12-01, 11:34 | Изменено: stx - Пн, 2014-12-01, 11:36   |  Репутация: [ + 2 ]
Форум ПРОГРАММИСТОВ » КУРС ОПР - ПАСКАЛЬ » Лабораторные работы » Лабораторная работа №10 (Работа с файлами)
  • Страница 1 из 1
  • 1
Поиск: