Введение

Линейные алгоритмы

Алгоритмы с ветвлением

Алгоритмы с повторением

Одномерный массив (вектор)

Двумерный массив (матрица)

Пользовательские процедуры и функции

Строки

Множества

Записи

Файлы
маркированный список

справочные материалы

маркированный список

теоретические вопросы

маркированный список

задачи, решения, программы

Графика

На главную

              

Задания.

Раздаточный материал

 

I. Ответить на следующие вопросы:

а) Верно ли, что элементы файла должны быть одного типа и что файл отличается от массива только тем, что размер (количество элементов) файла произволен, а размер массива фиксирован

б) Можно ли, считав из файла пятый элемент, затем сразу же считать второй элемент? А какой можно?

в) Верно ли, что, считав из файла пятый элемент, затем уже никогда нельзя считать второй?

г) В какое место файла можно добавлять новые элементы: в начало, в середину. в конец, куда угодно, никуда?

д)Если не перезаписывать файл заново, то значения каких его элементов можно менять: только первого, только последнего, каких угодно, никаких?

е) Если не перезаписывать файл заново, то какие его элементы можно удалять из файла: только первого, только последнего, каких угодно, никаких?

ж) Верно ли, что нельзя одновременно считывать из файла и записывать в него?

з) Верно ли, что, начав считывать из файла, затем уже никогда нельзя записать в него? А наоборот?

и) Можно ли сравнивать файлы?

 

 

2. var

         f:file of integer;

         x,y:integer;

Пусть файл f содержит 2 элемента -3 и 7. Определить, какое значение будет иметь переменная у после выполнения следующих операторов:

а) reset (f); read(f,y);

      if not eof(f) then read(f,y);

       if not eof(f) then read(f,y);

 б) reset (f); y:=0;

      while not eof(f) do

              begin read(f,x);

                          y:=y+x; end;

в) reset (f); y:=1;

        repeat

               read(f,x); y:=y*x;

        until eof(f);

 

3. а) Type Serii=file of real;

 Описать функцию Otriz(s), подсчитывающую сумму отрицательных элементов в серии s.

б) Type letters=file of 'a'..'z';

 Описать процедуру append(f,g,h) от трех файлов типа letters, которая записывает в файл f сначала все элементы  файла g, а затем - все элементы файла h.

в) Type text=file of char;

 Описать логическую функцию eg(t1,t2), проверяющую тексты  t1 и t2 на равенство.

 г) Type Stroka=pasked array [1..100] of char;

                  Text=file of char;

 Описать процедуру zifr(s,t), которая записывает в текст t все цифры из строки s.

 

4. var f:file of integer;

              i:integer;

Определить содержимое файла f после выполнения следующих операторов:

а) rewrite(f);

     if eof(f) then write(f,1) else write(f,2);

     if eof(f) then write(f,3) else write(f,4);

б) rewrite(f);

    for i:=3 downto 1 do  write(f,sqr(i));

 

5. Описать процедуру:

а) addl(t,c), добавляющую литеру с в начало текста t.

б) addlast(t,c), добавляющую литеру с в конец текста t.

в) double(t), удваивающую в тексте t каждую цифру.

г) replace(t,c), заменяющую последнюю литеру непустого текста t на литеру с.

д) next(t),заменяющую в тексте t каждую цифру на следующую по величине цифру (9 заменить на 0).

е) delete(t), удаляющую из текста t все литеры "+" и "-".

ж) del(t), удаляющую из текста t предпоследний элемент, если такой есть.

з) first(t), оставляющие в тексте t только первые вхождения каждой литеры.

 

Решения (ответы)

 

1. б) Нет, шестой.

    в) Неверно, повторное чтение файла.

    г)  В конец.

    д) Никаких.

    ж) Да, исключение нитипизированные файлы.

    и) Да

 

2.а) 7;  б) 10; в) 21.

 

3. а) function Otriz(var s:Serii):real;

             var sum, x: real;

           begin

             reset(s);sum:=0;

           while not eof(s) do begin

              read(s,x);

               if x<0 then sum:=sum+x; end;

                    Otriz:=sum;

            end;

       в)  function eg(var t1,t2:text):boolean;

             var c1,c2: char; ok: boolean;

           begin

             reset(t1); reset(t2); ok:=true;

           while (not eof(t1)) and (not eof(t2)) and (ok) do begin

              read(t1,c1); read(t2,c2);

              ok:=c1:=c2; end;

              eg:=ok and eof(t1) and eof(t2);

            end;

       г)  procedure zifr(var s:Stroka; var t:text);

               var i:integer;

            begin

                rewrite(t);

              for i:=1 to 100 do

                if  s[i] in ['0'..'9'] then write(t, s[i]);

             end;

 

4. а)  1, 3

       б)  9, 4, 1.

 

5. a)   procedure addl(var t:text; c:char);

                  var d:char;  s:text; {Вспомогательный файл}

             begin  {Копирование s в t}

                reset(t); rewrite(s);

              while not eof(t) do begin

                read(t,d); write(s,d); end; {Запись c и s в t}

                reset(t); rewrite(s);

                write(t,c);

              while not eof(t) do begin

                read(s,d); write(t,d); end;

              end;

Сайт создан в системе uCoz