Главная » 2008 » Декабрь » 10 » КС1108 Л/Р 4
КС1108 Л/Р 4
19:01
Всем, кому надо выкладываю код своей лабы.
Соотв., думаю, догодаетесь что и где поменять.
Все выстроено по принципу:

  • В главной части идет выбор действия + реализована возможность повторения
  • 4 Функции, нужно полностью переписать runFile исходя из условий варианта
  • Переписать функции eItem и oItem
  • Изменить саму запись и переменны изменить в фукнциях

Code

program Laba4;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type

{Описание нашей записи}

  STUDENTS = record
  fio : string[255];
  b : array[1..5] of integer;
  group : string[15];
  end;

{Используемые переменные}

var
  sfile: file of STUDENTS; // Переменная файла
  action : integer; // Выбранное действие
  flag : boolean; // Переменная-флаг
  s: char; // Символьная переменная

procedure eItem(var s : STUDENTS);
{Процедура ввода данных в запись}
begin
  writeln('Enter student FIO');
  readln(s.fio);
  writeln('Enter student GROUP');
  readln(s.group);
  writeln('Enter student BALL1');
  readln(s.b[1]);
  writeln('Enter student BALL2');
  readln(s.b[2]);
  writeln('Enter student BALL3');
  readln(s.b[3]);
  writeln('Enter student BALL4');
  readln(s.b[4]);
  writeln('Enter student BALL5');
  readln(s.b[5]);
end;
procedure oItem(s : STUDENTS);
{Процедура вывода данных из записи}
begin
  writeln('');
  writeln('Student ', s.fio);
  writeln(' Gruop : ', s.group);
  writeln(' B1 : ', s.b[1]);
  writeln(' B2 : ', s.b[2]);
  writeln(' B3 : ', s.b[3]);
  writeln(' B4 : ', s.b[4]);
  writeln(' B5 : ', s.b[5]);
  writeln(' SB : ',round((s.b[1]+s.b[2]+s.b[3]+s.b[4]+s.b[5])/5));
end;

procedure newFile();
{Процедура создания нового файла}
var
  fname : string[100];
  student : STUDENTS;
begin

  writeln('Enter new file name:');
  readln(fname);

  assign(sfile,fname);
  rewrite(sfile);
  s := 'y';
  while( (s='y') or (s='Y')) do
  begin
  eItem(student);
  writeln('Add another student, Y/N ?');
  write(sfile, student);
  readln(s);
  end;

  close(sfile);

end;

{ Функция просмотра списка студентов }

procedure viewFile();
{Процедура просмотра файла}
var
  fname : string[100];
  student : STUDENTS;
begin

  writeln('Enter new file name:');
  readln(fname);

  assign(sfile,fname);
  reset(sfile);
  while( not eof(sfile)) do
  begin
  read(sfile, student);
  oItem(student);
  end;
  close(sfile);

end;

{ Функция добавления студентов }

procedure addItem();
{Процедура добавления записей в файл}
var
  fname : string[100];
  student : STUDENTS;
  st : array of STUDENTS;
  i: integer;
begin

  writeln('Enter new file name:');
  readln(fname);

  assign(sfile,fname);
  reset(sfile);
  while(not eof(sfile)) do
  begin
  setlength(st, length(st)+1);
  read(sfile,st[length(st)-1]);
  end;
  close(sfile);
  rewrite(sfile);
  for i := 0 to length(st) - 1 do
  begin
  write(sfile, st[i]);
  end;

  s := 'y';
  while( (s='y') or (s='Y')) do
  begin
  eItem(student);
  writeln('Add another student, Y/N ?');
  write(sfile, student);
  readln(s);
  end;

  close(sfile);

end;

procedure runFile();
{Процедура выполнения файла, выполнения - значит проведение действий указанных в задании}
var
  fname : string[100];
  st : array of STUDENTS;
  s : STUDENTS;
  i,j: integer;
begin
  writeln('Enter new file name:');
  readln(fname);

  assign(sfile,fname);
  reset(sfile);
  while(not eof(sfile)) do
  begin
  setlength(st, length(st)+1);
  read(sfile,st[length(st)-1]);
  end;
  close(sfile);

  for i := 0 to length(st) - 1 do
  begin
  for j := 0 to length(st) - 1 - i do
  begin
  if(AnsiCompareStr(st[j].group,st[j+1].group)>0) then
  begin
  s := st[j];
  st[j] := st[j+1];
  st[j+1] := s;
  end;
  end;
  end;

  for i := 0 to length(st) - 1 do if((st[i].b[1]+st[i].b[2]+st[i].b[3]+st[i].b[4]+st[i].b[5])/5 >= 4) then oItem(st[i]);

end;

begin

{Главная функция, тут происходит выбор нужного действия}

  flag := true;
  while(flag) do
  begin
  s := 'n';
  writeln(' Choose action:');
  writeln('1. New file');
  writeln('2. Add item');
  writeln('3. View file');
  writeln('4. Run file');

  readln(action);
  case action of
  1 : begin newFile(); end;
  2 : begin addItem(); end;
  3 : begin viewFile(); end;
  4 : begin runFile(); end;
  end;
  writeln('');
  writeln('Continue working, Y/N? ');
  readln(s);
  if( (s = 'Y') or (s = 'y') ) then flag := true else flag :=false;
  writeln('');writeln('');writeln('');

  end;
end.
Категория: Coding | Просмотров: 652 | Добавил: DeT | Теги: институт, лабы
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]