Вы не зарегистрированы

Авторизация



Сообщество преподавателей, повышающих компьютерную грамотность

 

Приглащаю к общению всех коллег, которым интересно разобраться  и делать на компьютере то, что пока не получалось. Создав это сообщество хотелось бы организовать место  для обсуждения и совместного решения конкретных задач, организовать помощь и взаимовыручку друг другу. Обменяться  интересными разработками, а также ссылками на ресурсы, которые могут помочь по возникшему вопросу.

Вот задача, которая  интересна и в то же время непонятна моим студентам:

 

Еще одна интересная задача, которая выносится на гос.экзамен:

Разработать программный продукт модульной структуры по заданию:
Пусть в файле GRUPPA.DAT хранятся сведения о студентах некоторой группы в виде записей следующей структуры: анкетные данные (фамилия, имя, отчество, год рождения), пол, и 10 оценок за последнюю сессию. Вывести в заданный текстовый файл анкетные данные студентов, имеющих только одну тройку (двоек нет). Предусмотреть возможность создания и просмотра файла GRUPPA.DAT
 
Создаем и компилируем модуль:
 
Unit Unit1;
interface
Const
 n=100;
type
 Tstring=string[30];
 TPol=char;
 TStudent=record
  F:Tstring;
  I:Tstring;
  O:Tstring;
  H:word;
  Pol:TPol;
  Oz:array[1..10] of word;
 end;
 T_All_student=array[1..n] of TStudent;
var
 f:file of T_All_student;
 s:T_All_student;
 l:integer;
 procedure init(all_st:T_All_Student);
 procedure create_file( all_st:T_all_student);
 Procedure readfile;
 procedure odna_troika;
 procedure dobavlenie;
implementation
procedure init(all_st:T_All_Student);
var
 i:word;
 i1:word;
begin
 for i:=1 to n do
  begin
   all_st[i].I:='';
   all_st[i].F:='';
   all_st[i].O:='';
   all_st[i].H:=0;
   all_st[i].pol:=' ';
   for i1:=1 to 10 do
    all_st[i].oz[i1]:=0;
  end;
end;
procedure create_file( all_st:T_all_student);
var
 Comanda:char;
 ok:boolean;
 i:integer;
 f_buf:file of T_All_Student;
Procedure Record_in_file(num:word);
var
 k:word;
 begin
 assign(f,'GRUPPA.DAT');
 rewrite(f);
 write(f,all_st);
 close(f);
end;
Procedure Student_i(num:word);
var
 k:word;
begin
   readln;
   write('F: '); readln(all_st[num].F);
   write('I: '); readln(all_st[num].I);
   write('O: '); readln(all_st[num].O);
   write('god : ');readln(all_st[num].H);
   write('pol (m/g) :'); readln(all_st[num].Pol);
   for k:=1 to 10 do
     begin
       write('Ozenka',k,' :');
       readln(all_st[num].Oz[k]);
     end;
end;
begin
   i:=1;
   Student_i(i);
   ok:=true;
   While (ok=true) do begin
    writeln;
    write('NEXT[n]/Record[r] ?');
    read(comanda);
    writeln;
    if (comanda='n') then
    begin
     inc(i);
     Student_i(i);
    end
     else
      ok:=false;
      Record_in_file(i);
   end;
end;
Procedure readfile;
var
 i:word;
 j:word;
 ok:boolean;
 m:word;
 as:T_all_student;
begin
 writeln(' ');
 assign(f,'GRUPPA.DAT');
 reset(f);
 read(f,as);
 ok:=false;
 m:=0;
 for i:=1 to n do
   with as[i]  do begin
     if  ((oz[1]<>0) and (oz[2]<>0) and
          (oz[3]<>0) and (oz[4]<>0) and
          (oz[5]<>0) and (oz[6]<>0) and
          (oz[7]<>0) and (oz[8]<>0) and
          (oz[9]<>0) and (oz[10]<>0)) then ok:=true;
     if ((f<>'') and (i<>'') and (o<>'') and
         (h<>0)  and (pol<>' ') and (ok=true)) then m:=m+1;
   end;
for i:=1 to m do
 begin
  with as[i] do
   begin
    write(f+' '+i+' '+o+' ',h,' ',pol,' ');
    for j:=1 to 10 do
      write(oz[j]);
    end;
 writeln;
 end;
Close(f);
writeln(' ');
end;
procedure odna_troika;
var
 f2:text;
 i:integer;
 m:integer;
 ok:boolean;
 count:integer;
 j:integer;
 count2:integer;
 st:T_all_student;
begin
 assign(f,'GRUPPA.DAT');
 reset(f);
 read(f,st);
 m:=0;
  for i:=1 to n do
   with st[i]  do begin
     if  ((oz[1]<>0) and (oz[2]<>0) and
          (oz[3]<>0) and (oz[4]<>0) and
          (oz[5]<>0) and (oz[6]<>0) and
          (oz[7]<>0) and (oz[8]<>0) and
          (oz[9]<>0) and (oz[10]<>0)) then ok:=true;
     if ((f<>'') and (i<>'') and (o<>'') and
         (h<>0)  and (pol<>' ') and (ok=true)) then m:=m+1;
   end;
   assign(f2,'OUTPUT.txt');
   rewrite(f2);
   for i:=1 to m do
   begin
    count:=0;
    count2:=0;
    for j:=1 to 10 do begin
      if (st[i].oz[j]=3) then count:=count+1;
      if (st[i].oz[j]=2) then count2:=count2+1;
    end;
     with st[i] do
      if ((count=1) and (count2=0)) then
        writeln(f2,f+' '+i+' '+o+' ',h);
      end;
close(f);
close(f2);
writeln(' ');
writeln('result in file OUTPUT.txt');
writeln(' ');
end;
procedure dobavlenie;
var
 i,j:integer;
 m:integer;
 st:T_all_Student;
 z:byte;
 ok:boolean;
{---prozedura dobavleniya new student---}
Procedure Student_i(num:word);
var
 k:word;
begin
   write('F: '); readln(st[num].F);
   write('I: '); readln(st[num].I);
   write('O: '); readln(st[num].O);
   write('god : ');readln(st[num].H);
   write('pol (m/g) :'); readln(st[num].Pol);
   for k:=1 to 10 do
     begin
       write('Ozenka',k,' :');
       readln(st[num].Oz[k]);
     end;
end;
{----------------------------------}

begin
 {schitivaem vsech studentov}
 assign(f,'Gruppa.dat');
 reset(f);
 read(f,st);
 close(f);
 {opredelyau nomer noslednego studenta}
  m:=0;
  for i:=1 to n do
   with st[i]  do begin
     if  ((oz[1]<>0) and (oz[2]<>0) and
          (oz[3]<>0) and (oz[4]<>0) and
          (oz[5]<>0) and (oz[6]<>0) and
          (oz[7]<>0) and (oz[8]<>0) and
          (oz[9]<>0) and (oz[10]<>0)) then ok:=true;
     if ((f<>'') and (i<>'') and (o<>'') and
         (h<>0)  and (pol<>' ') and (ok=true)) then m:=m+1;
   end;
  {m-nomer poslednego studenta}
   j:=m+1;       {sleduuschii}
   Student_i(j); {  student  }
  writeln;
  while ( z<>2 ) do begin
   write('1-next| 2-dobavit ----> ');
   read(z);
   if (z=1) then
     begin
     {perehod k sleduuchemu studentu}
      j:=j+1;
      readln;
      Student_i(j);
     end
    else
     begin
      {zapis v fail gruppa.dat}
       assign(f,'Gruppa.dat');
       rewrite(f);
       write(f,st);
       close(f);
     end;
   end;
end;

end.
 
Создаем основную программу и подключаем модуль:
 
program odna_3;
uses
 Unit1;
             
begin
repeat
 writeln(' ');
 writeln('1 create');
 writeln('2 print');
 writeln('3 odna "3"');
 writeln('4 dobavlenie');
 writeln(' ');
 write('wwedite zifru = '); readln(l);
 if (l=1) then begin init(s);create_file(s);end;
 if (l=2) then readfile;
 if (l=3) then odna_troika;
 if (l=4) then dobavlenie;
until (false);
end.

Прикрепленный файлРазмер
файл.ppt210.5 Кбайт
запись в файл.jpg56.78 Кбайт

Поиск

Loading
Глобальная школьная лаборатория