Показать сообщение отдельно

  #2068  
Старый 24.08.2008, 18:24
Dober'man
Banned
Регистрация: 16.07.2007
Сообщений: 79
С нами: 9905879

Репутация: 337
По умолчанию

LoneWolf666 делал как то подобие такой проги, только без добавления процентов к стипендии. Здесь процент успеваемости студентов... А так всё тоже самое, 15 минут его покавырять и всё =)
Код:
uses crt;
type studrec=record
          group: byte;
          surname: string[20];
          name: string[20];
          oc: array[1..3]of 2..5;
      end;
    foolsrec=record
          group: byte;
          surname: string[20];
          name: string[20];
          average: real;
    end;
    file_typ1 = file of studrec; file_typ2 = file of foolsrec;
    var f1: file_typ1; f2: file_typ2;
    namefile1, namefile2: string[12];
    s: studrec; fs: foolsrec;
    i,nomrec: integer;
procedure read_data(var s: studrec);
begin
  with s do
    begin
      writeln('Okonchanie vvoda - 0, kak n gruppi');
      write('N gruppi: '); readln(group);
      if group<>0 then
        begin
          write('Familia: '); readln(surname);
          write('Imia:    '); readln(name);
          writeln('Ocenki: '); for i:=1 to 3 do read(oc[i]);
        end;
    end;
end;
procedure copy_data(s: studrec; var fs: foolsrec);
begin
  with fs do
  begin
    group:=s.group; surname:=s.surname; name:=s.name;
    average:=(s.oc[1]+s.oc[2]+s.oc[3])/3;
  end;
end;
procedure write_list(var f: file_typ2);
begin
  reset(f); seek(f,0);
  writeln('Ploho uchashiesia: ');
  writeln('Gruppa','Familia':16,'Imia':8,'Sredniy bal':18);
  while not eof(f) do
    begin
      read(f,fs);
      with fs do writeln(group:4,surname:15,name:10,average:16:2);
    end;
end;
procedure create_file(var f: file_typ1; var n: integer);
begin
  n:=0; rewrite(f); read_data(s);
  while s.group<>0 do
    begin
      write(f,s); inc(n);
      read_data(s);
    end;
  close(f);
end;
procedure write_data(var f1: file_typ1; var f2: file_typ2; n: integer);
var priz: char; k: integer;
begin
  reset(f1); rewrite(f2); k:=0;
  while not eof(f2) do
    begin
      read(f1,s);
      priz:='n';
      for i:=1 to 3 do if (s.oc[i]>=2) and (s.oc[i]<=3) then
      priz:='y';
      if priz='y' then
        begin copy_data(s,fs); write(f2,fs) end
      else inc(k);
    end;
  close(f1); close(f2);
  clrscr; writeln('Na "4" i "5" uchatsia ',k/n*100:3:0,'% studentov');
  end;
  begin
    write('Vvedite imia faila obshey vedomosti: '); readln(namefile1);
    assign(f1,namefile1);
    create_file(f1,nomrec);
    write('Vvedite imia faila vedomosti zadolzhnikov: ');
    readln(namefile2);
    assign(f2,namefile2);
    write_data(f1,f2,nomrec);
    write_list(f2);
end.
 
Ответить с цитированием