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

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


курсовая работа Работа с файлами в среде Паскаль

Информация:

Тип работы: курсовая работа. Добавлен: 31.10.2012. Сдан: 2012. Страниц: 20. Уникальность по antiplagiat.ru: < 30%

Описание (план):


?ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
 
ФИЛИАЛ ГОСУДАРСТВЕННОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА УПРАВЛЕНИЯ
В Г.ОБНИНСКЕ
 
Кафедра управления в экономических и социальных системах
 
 
 
 
 
Курсовой проект.
 
по дисциплине «Компьютерная подготовка»
на тему «Работа с файлами в среде Паскаль».
 
 
 
 
 
 
 
Выполнила студентка
очной формы обучения
специальности «Менеджмент организации»
специализации «Финансовый менеджмент»
I курса                                                              ____________     Оникиенко А.Н.
 
Руководитель                                                    ____________    Виноградова Е.А.
 
 
 
 
 
Обнинск - 2008
 
 
 
 
 
 
 
Оглавление
 
I. Теоретическая часть                                                                 3
1.1. Основные процедуры для работы с файлами                       3
1.2. Текстовые файлы                                                                    5
1.3. Типизированные файлы                                                           8
II.                  Практическая часть                                                                  10

Основные процедуры для работы с файлами
 
Введение файлового типа в язык ПАСКАЛЬ вызвано необходимостью обеспечить возможность работы с периферийными (внешними) устройствами ЭВМ, предназначенными для ввода, вывода и хранения данных.
Файл определяет упорядоченную совокупность произвольного числа однотипных компонент.
Общее свойство массива, множества и записи заключается в том, что количество их компонент определено на этапе написания программы, тогда как количество компонент файла в тексте программы не определяется и может быть произвольным.
Понятие файла достаточно широко. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати, клавиатура или другие устройства.
При работе с файлами выполняются операции ввода - вывода. Операция ввода означает перепись данных с внешнего устройства (из входного файла) в основную память ЭВМ, операция вывода - это пересылка данных из основной памяти на внешнее устройство (в выходной файл).
Файлы на внешних устройствах часто называют физическими файлами.
С файловой системой TURBO PASCAL связано понятие буфера ввода - вывода. Ввод и вывод данных осуществляется через буфер. Буфер - это область в памяти, которая выделяется для каждого файла. При записи в файл вся информация сначала направляется в буфер и там накапливается до тех пор, пока весь объем буфера не будет заполнен. Только после этого или после специальной команды сброса происходит передача данных на внешнее устройство. При чтении из файла данные вначале считываются в буфер, причем данных считывается не столько, сколько запрашивается, а сколько поместится в буфер.
Внешняя память                            Оперативная память
 
 
 
 
 
Механизм буферизации позволяет более быстро и эффективно обмениваться информацией с внешними устройствами. Для работы с файлами в программе необходимо определить файловую переменную. Файловые переменные, которые описаны в программе, называют логическими файлами.
Все основные процедуры и функции, обеспечивающие ввод - вывод данных, работают только с логическими файлами. Физический файл должен быть связан с логическим до выполнения процедур открытия файлов.
    TURBO PASCAL вводит ряд процедур и функций, применимых для любых типов файлов: Assign, Reset, Rewrite, Close, Rename, Erase, Eof, IOResult.
 
Процедура Assign
Assign (var f; FileName: String) связывает логический файл f с физическим файлом, полное имя которого задано в строке FileName. Будучи однажды установленной, связь между файловой переменной и физическим файлом сохраняется до следующего вызова Assign с той же файловой переменной f.
 
Процедура Reset
Reset (var f) открывает логический файл f для последующего чтения данных или, как говорят, открывает входной файл. Только после открытия файла становится возможным чтение данных. После успешного выполнения процедуры Reset файл готов к чтению из него первого элемента. Эта процедура фиксирует размер буфера файла. Процедура может применяться многократно к одному и тому же файлу. Если файл до этого был открыт, то он автоматически предварительно закрывается. Повторный вызов Reset переустановит последовательность чтения вновь на самый первый элемент файла, при этом потеря данных исключена.
 
Процедура ReWrite
ReWrite(var f) открывает логический файл f для последующей записи данных (открывает выходной файл). После успешного выполнения этой процедуры файл готов к записи в него первого элемента. Процедура также фиксирует размер буфера файла. Повторное обращение к ReWrite сотрет текущее содержимое файла и подготовит его к заполнению с первого элемента.
 
Процедура Close
Close (var f) закрывает открытый до этого логический файл. Вызов процедуры Close необходим при завершении работы с файлом.
Если по какой-то причине процедура Close не будет выполнена, файл все же будет создан на внешнем устройстве, но содержимое последнего буфера в него не будет перенесено, поэтому процедура особенно важна для файлов открытых для записи. Закрытие файла гарантирует сохранность и полноту заполнения. Однако попытка закрыть уже закрытый (или еще не открытый) файл вызовет сбой программы. Для входных файлов использование оператора закрытия файла необязательно.
 
Логическая функция EOF
EOF (var f): Boolean возвращает значение True , когда чтении достигнут конец файла. Это означает, что уже прочитан последний элемент в файле или файл после открытия оказался пуст. Иначе возвращает False.

Текстовые файлы
 
Особое место в языке ПАСКАЛЬ занимают текстовые файлы, компоненты которых имеют символьный тип. Для описания текстовых файлов в языке определен стандартный тип Тext, например
 
Var
    t: Text;
 
Текстовые файлы представляют собой последовательность строк, а строки - последовательность символов. Строки имеют переменную длину, каждая строка завершается признаком конца строки (символ ASCII #13).
При записи в текстовый файл чисел, строк и логических значений они преобразуются в символьный (текстовый) вид. При чтении чисел и строк они автоматически преобразуются из текстового представления в машинное.
Другими словами, при вводе мы имеем дело с текстовым потоком. При пустом буфере оператор ввода инициирует передачу очередной порции текста в буфер (длина порции равна размеру буфера). По умолчанию значение размера буфера для текстового файла равно 128 байт. Если буфер не исчерпан, то передача данных ведется непосредственно из буфера.
Итак, в буфере имеется информация в текстовой форме. Далее по определенным правилам выделяется подстрока, представляющая значение очередной вводимой переменной. Эта подстрока преобразуется к типу вводимой переменной (если это возможно) и полученное значение (его машинное представление) заносится в поле вводимой переменной.
При выводе преобразуется форма представления значения выводимых переменных из машинной в строковую и полученная строка переносится в буфер. Если при этом буфер окажется заполненным, то произойдет перенос на диск.
 
Процедуры и функции для текстовых файлов
 
Процедура Append
Append (var f: Text) служит для специального открытия выходных файлов. Она применима к уже существующим физическим файлам и открывает их для дозаписи в конец файла, т.е. файл не стирается, как при вызове ReWrite. Новый файл может быть создан только процедурой ReWrite. Если Append применяется к несуществующему файлу, то возникает ошибка времени исполнения. А в остальном процедура Append ничем не отличаются от процедуры ReWrite.
 
Процедура Flush
Flush (var f: Text) применяется к открытым выходным файлам. Данные для записи накапливаются в буфере файла и только после полного его заполнения записываются в физический файл. Она же принудительно записывает данные из буфера в файл независимо от степени его заполнения. Процедура не закрывает файл и не влияет на последовательность вывода.
 
Функция EOLn 
EOLn (var f: Text): Boolean возвращает True, если текущая позиция в файле – конец строки или конец файла, и False, если нет.
 
Функция SeekEOLn
SeekEOLn (var f: Text): Boolean возвращает значение True, если до конца строки остались только пробелы.
 
Функция SeekEOF
SeekEOF (var f: Text): Boolean возвращает значение True, если до конца файла остались строки, заполненные пробелами.
 
Операции ввода-вывода в текстовые файлы
 
Ввод и вывод числовой и текстовой информации в Турбо Паскале осуществляется процедурами:
ввод -              Read(f,x) или Read(f,x1,x2,...,xn) и
              Readln(f,x) или Readln(f,x1,x2,...,xn);
вывод - Write(f,x) или Write(f,x1,x2,...,xn) и
              Writeln(f,x) или Writeln(f,x1,x2,...,xn).
 
Readln(f) - пропускает строку до начала следующей;
Writeln(f) - завершает строку файла, в которую производится запись, признаком конца строки и переходит к началу следующей.
Для работы с текстовыми файлами введена расширенная форма операторов ввода и вывода.
Оператор Read(f,x1,x2,...Xn) эквивалентен группе операторов
Begin
Read(f,x1);
Read(f,x2);
...........
Read(f,xn)
end;
Здесь f - текстовый файл, а переменные x1, x2,...xn могут быть либо переменными целого, действительного или символьного типа, либо строкой. При чтении значений переменных из файла они преобразуются из текстового представления в машинное.
При вводе из текстового файла, необходимо помнить правила чтения значений переменных. Когда вводятся числовые значения, два числа считаются разделенными, если между ними есть хотя бы один пробел, символ(ы) табуляции или символ(ы) конца строки.
Если читается символьное значение, то в соответствующую переменную запишется очередной символ за последним введенным до этого. Здесь уже нет никаких разделителей:
И, наконец, ввод строк. Начало строки идет сразу за последним, введенным до этого символом (с первой позиции, если соответствующая строчная переменная стоит первой в списке ввода). Считывается количество символов, равное объявленной длине строки. Но, если во время считывания попался символ 13 (конец строки), то чтение строки прекращается. Сам символ 13 (конец строки) служит разделителем строк и в переменную никогда не считывается.
Процедура ReadLn считывает значения в текущей строке и переводит позицию на начало следующей строки, даже, если в текущей строке остались непрочитанные данные.
Оператор Write(f,x1,x2,...xn) эквивалентен группе операторов
Begin
Write(f,x1);
Write(f,x2);
...........
Write(f,xn)
end;
Здесь f - также текстовый файл, но переменные x1,x2,...xn могут быть целого, действительного, символьного, логического типа или строкой. При записи значений переменных в файл они преобразуются из внутреннего представления в текстовый.
Процедура Write выводит данные в текущую строку и не закрывает ее, т.е. следующие данные запишутся в ту же строку. Формально во внешнем файле размер строки не ограничен.
Процедура WriteLn выводит именно строку данных и закрывает ее: приписывает символ 13 в ее конец (точнее, символы 13 и 10). Это автоматически открывает следующую строку.
Список вывода Write или WriteLn может содержать константы, переменные, выражения, вызовы функций - лишь бы они имели соответствующие типы и были разделены запятыми. Все, что стоит в кавычках или является строковыми (символьными) константами, выведется в том виде, в каком представлено.
 
Обмен с текстовым файлом более медленный из-за преобразования из текстового формата в формат, соответствующий типу вводимой переменной. Однако их легко создавать средствами любого текстового редактора, и с ними удобно работать, так как это визуальные файлы.
 

Типизированные файлы
 
Типизированный файл - это файл с объявленным типом его компонент. Другими словами, типизированный файл имеет очень четкую структуру. Между записями нет никаких разделителей. Перед первым обращением к процедурам ввода-вывода указатель файла стоит перед первой записью с номером 0.
Компонентные файлы состоят из машинных представлений значений переменных, они хранят данные в том же виде, что и память ЭВМ (т.е. в машинном формате). Значит, при вводе из файла не требуется преобразование формата, а, следовательно, операции обмена выполняются намного быстрее. Но, в отличие от текстового файла, типизированный файл создается только программой и его невозможно читать без предварительного перекомпилирования в текстовый файл.
При открытии файла резервируется буфер. Размер буфера кратен длине записи. При чтении, если буфер пуст, то инициируется чтение с диска, такого количества записей, сколько вмещает буфер. Затем из буфера запись переносится в поле вводимой переменной. Если при инициации чтения буфер не пуст, то происходит пересылка записи из буфера в память. При выводе данные накапливаются в буфере и только при полном заполнении буфера происходит перенос из буфера на диск.
Компонентами файла могут быть все скалярные типы, а из структурированных - массивы, множества, записи. Но конструкция "файл файлов" недопустима.
Все операции над компонентными файлами производятся с помощью стандартных процедур:
Reset, Rewrite, Read, Write, Close.
Для типизированных файлов обе процедуры Reset и ReWrite устанавливают режим «чтение/запись», т.е. независимо от выбора процедуры открытия, файл открывается и для чтения, и для записи. Если процедурой ReWrite открывается ранее существовавший файл, то он стирается.
Для ввода - вывода используются процедуры:
Read(f,X);
Write(f,X);
Где f - имя логического файла, Х - либо переменная, либо массив, либо строка, либо множество, либо запись с таким же описанием, какое имеет компонента файла.
Выполнение процедуры Read(f,X) состоит в чтении с внешнего устройства одной компоненты файла и запись ее в X. Повторное применение процедуры Read(f,X) обеспечит чтение следующей компоненты файла и запись ее в X.
Выполнение процедуры Write(f,X) состоит в записи X на внешнее устройство как одной компоненты. Повторное применение этой процедуры обеспечит запись X как следующей компоненты файла.
Для работы с компонентными файлами введена расширенная форма операторов ввода и вывода:
Read(f,X1,X2,...XN)
Write(f,X1,X2,...XN)
Здесь f - компонентный файл, а переменные Х1, Х2,...ХN должны иметь тот-же тип, что и объявленный тип компонент файла f.
 
Используются следующие процедуры и функции для прямого доступа к компонентам типизированного файла.
 
FileSize
FileSize (var f): LongInt возвращает число записей компонентов в открытом файле f.
 
FilePos
FilePos (var f): LongInt  возвращает номер записи компонента в открытом файле f, предшествующий тому, который будет считан или записан последующей операцией ввода-вывода.
 
Seek
Seek (var f; N: LongInt) устанавливает текущим компонентом в открытом файле f компонент с номером N, отсчитанным от нулевого (доступ к первой записи Seek(f, 0)). Назначенный компонент будет считан или записан последующей операцией ввода-вывода.
 

                                         Практическая часть.
 
 
Описать структуру с именем WORKER, содержащую следующие поля:
?      NAME – фамилия и инициалы работника;
?      POST – название занимаемой должности;
?      YEAR – год поступления на работу;
?      ZARPL – массив ежемесячных зарплат за год
 
 
1. написать программу, выполняющую следующие действия:
?      Ввод с клавиатуры данных в массив TABL, состоящих из 10 структур типа WORKER.
?      Запись о сотруднике с максимальной среднемесячной зарплатой сдвинуть в конец массива
?      Сортирует записи в порядке возрастания среднемесячной зарплаты
?      Вывод на дисплей информации о работниках, зарплата которых из месяца в месяц неуклонно повышалась.
?      Если таких работников нет, то вывести соответствующее сообщение
 
 
2. Создать типизированный файл TABL, состоящий из 10 структур типа WORKER.
?      отсортировать записи в файле в порядке возрастания среднемесячных зарплат
?      Вывести в новый типизированный файл информацию о работниках, зарплата которых из месяца в месяц неуклонно повышалась.
?      Если таких работников нет, вывести соответствующее сообщение.
?      Запись о сотруднике с максимальной среднемесячной зарплатой сдвинуть в конец файла.
 
 
 
 
3.  Создать текстовый файл TABL, состоящий из 10 структур типа WORKER.
?      Вывести в новый текстовый файл информацию о работниках, зарплата которых из месяца в месяц неуклонно повышалась.
?      Если таких работников нет, вывести соответствующее сообщение.
?      Ввести в файл записи о поступивших на работу в конец файла ( любое количество).
 
 
 
 
 
 
1. написать программу, выполняющую следующие действия:
?      Ввод с клавиатуры данных в массив TABL, состоящих из 10 структур типа WORKER.
?      Запись о сотруднике с максимальной среднемесячной зарплатой сдвинуть в конец массива
?      Сортирует записи в порядке возрастания среднемесячной зарплаты
?      Вывод на дисплей информации о работниках, зарплата которых из месяца в месяц неуклонно повышалась.
?      Если таких работников нет, то вывести соответствующее сообщение
 
program ex1;
uses crt;
const n=10; m=12;
type
worker=record
  name: string [10];
  post: string [15];
  year: integer;
  zrpl: array [1..m] of integer;
end;
var
z: worker;
w: array [1..n] of worker;
b: array [1..n] of integer;      {massiv srednemes zarpl}
i, j, y, Fa, max, nmax, F, x, q: integer;
function sr ( T:worker): integer;
var
s: integer;
ii:integer;
begin
s:= 0;
for ii:= 1 to m do
s:= s+ T.zrpl[ii];
sr:= s div m; {writeln ('sr=', sr:2);}   end;
begin
clrscr;   textcolor (white);
for i:= 1 to n do begin
writeln ('vvedite familii');
readln ( w[i].name);
writeln ('vvedite dolgnost');
readln (w[i].post);
writeln ('vvedite god postypleniya');
readln (w[i].year);
writeln ('vvedite v poslednee pole  ', m, ' zarplat');
for j:= 1 to m do
readln ( w[i].zrpl[j]);  {  b[i]:=0;}
                                 b[i]:=sr(w[i]);
                    writeln (' srednyaya', b[i]:2);
                                 readln;
end;
max:=b[1];
nmax:=1;
for i:=2 to n do
    if b[i]>max then begin
    max:=b[i];
    nmax:=i;
    end;
writeln ('max=', nmax);
q:=n-nmax;           {kol-vo sdvigov ravno}
for i := 1 to q do
begin
              x:=b[n];           
              z:=w[n];
                  for j:= n downto 2 do
begin
                  b[j]:=b[j-1];
                  w[j]:=w[j-1];
end;
   
 
    b[1]:= x;
    w[1]:=z;
end;
   for i:=1 to n do
   write (w[i].name,'   ', b[i]:2, '   ');
   writeln;
for i:= 1 to n do 
begin
for j:= 1 to n-1 do
begin
if b[j] > b[j+1] then
begin
y:= b[j];
b[j]:= b[j+1];
b[j+1]:=y;
z:= w[j];
w[j]:= w[j+1];
w[j+1]:= z;
end;
end;
end;
textcolor (blue);
writeln ( ' spisok sotrydnikov po vozr sr zarpl' );
for i:= 1 to n do
writeln ( w[i].name,'   ', b[i]);
Fa:=0;
for i:= 1 to n do begin
F:=0;
for j:= 1 to m-1 do
if w[i].zrpl[j] >= w[i].zrpl[j+1] then F:=1;
if F=0 then begin textcolor (red);
                   writeln ( 'zrpl rastet');
                   writeln (w[i].name); Fa:=1;
             end;
                 end;
                  if Fa=0 then
begin
                                textcolor (green);
              writeln ('net rabotnikov y kogo zarplata povishaeysya');
end;
readkey;
end.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2. Создать типизированный файл TABL, состоящий из 10 структур типа WORKER.
 
program ex2_0;
uses crt;
const n=10; m=12;
fout='f:\work.tip';
type
worker=record
  name: string [10];
  post: string [15];
  year: integer;
  zrpl: array [1..m] of integer;
end;
var
tabl: file of worker;
w: worker;
i, j: integer;
begin
clrscr;   textcolor (white);
assign (tabl, fout);
rewrite (tabl);
              for i:= 1 to n do
      begin
writeln ('vvedite familii');
readln ( w.name);
writeln ('vvedite dolgnost');
readln (w.post);
writeln ('vvedite god postypleniya');
readln (w.year);
writeln ('vvedite v poslednee pole  ', m, ' zarplat');
for j:= 1 to m do
readln ( w.zrpl[j]); 
write (tabl,w);
      end;
close (tabl);
end.
 
 
    
 
 
 
 
2.1. отсортировать записи в файле в порядке возрастания среднемесячных зарплат
 
 
 
program ex2_1;
uses crt;
const n=10; m=12;
fout='f:\work.tip';
type
worker=record
  name: string [10];
  post: string [15];
  year: integer;
  zrpl: array [1..m] of integer;
end;
var
tabl: file of worker;
z: worker;
w: array [ 1..n] of worker;
i, j, b: integer;
function sr ( T:worker): integer;
var s: integer;
i:integer;
begin
     s:= 0;
     for i:= 1 to m do
     s:= s+ T.zrpl[i];
     sr:= s div m;
end;
begin
clrscr;   textcolor (white);
assign (tabl, fout);
reset (tabl);
i:=1;
while not eof (tabl) do  begin
read (tabl, w [i]);
i:= i+1;
end;
for j:= 1 to n-1 do
for i:= 1 to n-j do
if sr (w[i]) > sr (w[i+1]) then
begin
                z:= w[i];
                w[i]:= w[i+1];
                w[i+1]:= z;
end;
for i:= 1 to n do
begin
b:=sr(w[i]);
                  writeln (' srednyaya  ', b:2);   
end;
close (tabl);
rewrite (tabl);
for i:= 1 to n do
write (tabl, w[i]);
close (tabl);
readkey;
end.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2.2 Вывести в новый типизированный файл информацию о работниках, зарплата которых из месяца в месяц неуклонно повышалась.
Если таких работников нет, вывести соответствующее сообщение.
 
 
program ex2_2;
uses crt;
const n=10; m:=12;
  fin='f:\work.tip';
  fout='f:\over.tip';
type
worker=record
  name: string [10];
  post: string [15];
  year: integer;
  zrpl: array [1..m] of integer;
end;
var
tabl, ov: file of worker;
w:array [1..n] of worker;
i, j, Fa, F: integer;
begin
clrscr;
assign (tabl, fin);
assign (ov, fout);
reset (tabl);
rewrite (ov);
writeln ( ' spisok sotrydnikov po vozr sr zarpl' );
                  :=1;
while not eof (tabl) do 
begin
read (tabl, w[i] );
i:= i+1;
end;
Fa:=0;
for i:= 1 to n do
begin
F:=0;
for j:= 1 to m-1 do
if w[i].zrpl[j] >= w[i].zrpl[j+1] then F:=1;
if F=0 then
begin
textcolor (red);
                          writeln ( 'zrpl rastet');
                          writeln (w[i].name); Fa:=1;
                          write ( ov, w[i]);
             end;
      end;
if Fa=0 then
begin
textcolor (green);
writeln ('no');
              end;
              else
writeln ('new=  ', filesize(ov));
close (tabl);
close (ov);
readkey;
end.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2.3 Запись о сотруднике с максимальной среднемесячной зарплатой сдвинуть в конец файла.
 
 
program ex2_3;
uses crt;
const n=10; m=12;
fout='f:\work.tip';
type
worker=record
  name: string [10];
  post: string [15];
  year: integer;
  zrpl: array [1..m] of integer;
end;
var
tabl: file of worker;
wк: array [1..n] of integer;
z, w, x: worker;
b: array [1..m] of integer;
i, j, max, nmax: integer;
function sr ( T:worker): integer;
var s: integer;
i:integer;
begin
s:= 0;
for i:= 1 to m do
s:= s+ T.zrpl[i];
sr:= s div m;   
end;
begin
clrscr;   textcolor (white);
assign (tabl, fout);
reset (tabl); 
i:=1;
while not eof (tabl)  do
begin
read (tabl, w);
                            b[i]:=sr(w);
                                writeln (' srednyaya  ', w.name:6,  b[i]:2);
i:=i+1;
end;
max:=b[1];
nmax:=1;
for i:=2 to n do
                  if b[i]>max then
begin
                                max:=b[i];
                                nmax:=i;
                  end;
writeln ('  nmax=', nmax);
                close (tabl);
              if nmax< n then
begin
reset (tabl);
for i := 1 to n-nmax do
begin
seek(tabl, n-1);
                                          read (tabl, w);
                                          x:= w;
                                             textcolor (red);
                                              for j:= n-1 downto 1 do
begin
                                                           seek (tabl, j-1); read ( tabl, z);
                                                           seek (tabl, j); write (tabl, z);
                  end;
                                             seek (tabl, 0); write ( tabl, x);
             end;
             close( tabl);
      end;
      reset (tabl);
      while not eof(tabl) do
begin
                               read ( tabl, w);
                               writeln (w.name);
                               writeln;
                 end;
                close (tabl);
readkey;
end.
 
 
 
 
 
 
 
 
 
 
3.  Создать текстовый файл TABL, состоящий из 10 структур типа WORKER.
 
3.1. вывести в новый текстовый файл информацию о работниках, зарплата которых из месяца в месяц неуклонно повышалась.
   Если таких работников нет, вывести соответствующее сообщение.
 
program ex3_1;
uses crt;
const n=10; m=12;
fin='e:\k3_0y.dat'; 
{ fin='e:\k3_0n.dat';}
fout='e:\over.dat';
type
worker=record
  name: string [7];
  post: string [6];
  year: integer;
  zrpl: array [1..m] of integer;
end;
var
tabl, ov: text;
w: worker;
i, j, Fa, F: integer;
begin
clrscr;
assign (tabl, fin);
assign (ov, fout);
reset (tabl);
rewrite (ov);
writeln ( ' spisok sotrydnikov po vozr sr zarpl' );
                   Fa:=0;
while not eof (tabl) do 
begin
                        f:=0;
                    readln (tabl,w.name,w.post,w.year);
                      writeln (w.name,w.post,w.year);
            for j:= 1 to m do   
begin
                                      read (tabl, w.zrpl[j]);
                                      readln(tabl);
writeln (w.zrpl[j]);
end;
for j:= 1 to m-1 do
      if w.zrpl[j] >= w.zrpl[j+1] then F:=1;
      if F=0 then
begin
textcolor (red);
                           writeln ( 'zrpl rastet');
                           writeln (w.name);
Fa:=1;
                                      writeln ( ov, w.name:7, w.post:6, w.year:2);
                                      for j:= 1 to m do
                                     write ( tabl, w.zrpl[j]:2)
                                end;
        end;
        if Fa=0 then begin
        textcolor (green); writeln ('no');  end;
        close (tabl);
         close (ov);
   readkey;
end.
 
Исходные:
 
 
Фамилия
должность
год
                           зарплата
Сидоров
кассир
1996
4000
4000
4000
4500
4500
4300
4500
4600
5000
5000
5000
5000
Петров
продавец
2008
4500
4500
4700
4700
5000
5000
5500
5500
6000
6000
6500
6500
Иванов
продавец
2000
4500
4500
4700
4700
5000
4500
4500
5500
5000
5000
5500
5500
Каблуков
менеджер
1999
7000
7000
7500
7500
8000
8000
8500
8500
8500
8000
8000
8000
Смирнов
кассир
2006
4000
4000
4000
4500
4500
4300
4500
4600
6000
6000
6000
6500
Стрельцов
продавец
2000
4000
4000
4000
4500
4500
4300
4500
4600
5000
5000
5000
5000
Матвеев
менеджер
1997
7000
7500
7500
7500
8000
8000
8500
8500
8500
9000
9000
9000
Соколов
консультант
2005
3000
3500
3500
5000
4500
4500
5000
4000
5000
5500
5500
5000
Дубов
кассир
2002
5000
5500
5500
5500
6000
6000
6000
6500
6500
6000
7000
7000
Скворцов
консультант
1998
4000
4000
5000
5000
5500
5500
5500
5500
6000
6000
6000
6000
 
Результат:
Зарплата растёт из месяца в месяц
Петров
Матвеев
Скворцов
 
 
 
 
 
 
 
3.2   Ввести в файл записи о поступивших на работу в конец файла ( любое количество).
 
program ex3_2;
uses crt;
const n=10; m=12;

fin='f:\k3_0y.dat';

type

worker=record

  name: string [7];

  post: string [6];

  year: integer;

  zrpl: array [1..m] of integer;

end;

var

tabl: text;

w: worker;

i, j, Fa, F: integer;

begin

clrscr;

assign (tabl, fin);

append (tabl);

writeln ( ' vvedite polja novogo cotrydnika' );

writeln ('vvedite familii');

readln ( w.name);

writeln ('vvedite dolgnost');

readln{ (w.post);

writeln ('vvedite god postypleniya');

readln ( w.year);

writeln ('vvedite v poslednee pole', m, 'zarplat');

for j:= 1 to m do

readln ( {w.zrpl[j]);

      write (tabl,w.name,w.post,w.year);

                 for j:= 1 to m do

                   write (tabl,w.zrpl[j]);

                  close (tabl);

readkey;

end.

 

 

 

1

 




и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.