Доброго времени суток всем, кто заглянул в эту тему!!! Мне очень нужна ваша помощь в решении задачки. Условие: Каждая запись типа tz содержит в 1 поле – номер, в 2 поле название группы (string [8]), в поле 3 – фамилию (string [12]), а в 4,5,6 полях – 3 оценки студента. Составить программу с меню, содержащую 4 обработчика его пунктов выполняющих: А) Создание файла ‘999.dat’ типа ftz=File of tz из 5 записей. В) Отображение в таблице StringGrid данных файлов типа ftz. С) Создание файла ‘999.max’ из двух записей файла ‘999.dat’ с минимальными номерами. Д) Создание файла ‘999.gr’ из записей ‘999.dat’ сгруппированных по названиям групп.
Преподавателю в особенности не нравиться как я реализую пункт С, он говорит всё время "а вы минимум искать то умеете?". И этой фразой он сбивает меня с толку.
Вот сама задача в реализации, то что у меня получилось:
procedure TForm1.N2Click(Sender: TObject); Var i:integer; begin assignFile(f, '999.dat'); rewrite(f); For i:=1 to 5 do Write(f,m[i]); closeFile(f); end;
procedure TForm1.N3Click(Sender: TObject); var z1,z2:tz; f1,f2:tfz; i,j,n:integer; begin assignfile(f1, '999.dat');//связываем файловую переменную f1 c файлом 999.dat assignfile(f2, '999.max');//связываем файловую переменную f2 с файлом 999.max reset(f1);//открываем файл f1 для чтения rewrite(f2);//создаем файл f2, если он был создан то очищаем его read(f1,z1); n:=z1.Nom; Seek(f1,0); for i:=1 to 2 do begin read(f1,z2);//читаем запись с которой мы будем сравнивать if (z2.Nom=n) and (i<>n) then read(f1,z2);//если вдруг намер этой записи оказался наименьшим Seek(f1,0);//переводим на начало указатель while (not Eof(f1)) do begin read(f1,z1);//читаем запись для сравнения if ((z1.Nom<z2.Nom) and (z1.Nom<>n)) then //если номер записи меньше текущей z2:=z1;//то записываем ее в z2 end; n:=z2.Nom;//запоминаем номер наименьшей записи Seek(f1,0);//переводим на начало указатель write(f2,z2);//записываем наименьшую запись в файл f2 end;//конец цикла closefile(f1);//закрываем файл f1 closefile(f2);//закрываем файл f2 end;//конец процедуры N11Click
procedure TForm1.N4Click(Sender: TObject); Var i:integer; z:tz; begin assignFile(f, '999.gr'); reset(f); i:=1; while Not Eof(f) do Begin read(f,z); stringgrid1.Cells[0,i]:=intToStr(z.Nom); stringgrid1.Cells[1,i]:=z.Gruppa; stringgrid1.Cells[2,i]:=z.Fam; stringgrid1.Cells[3,i]:=IntToStr(z.o1); stringgrid1.Cells[4,i]:=IntToStr(z.o2); stringgrid1.Cells[5,i]:=IntToStr(z.o3); i:=i+1; End;
end;
procedure TForm1.N5Click(Sender: TObject); var i,j,leng:integer; z1,z2:tz; st:string; f1,f2:tfz; stat:array of bool; begin assignfile(f1, '999.dat');//связываем файловую переменную с файлом 999.dat assignfile(f2, '999.gr');//связываем файловую переменную с файлом 999.gr reset(f1);//открываем файл для чтения rewrite(f2);//создаем файл, если он был создан то очищаем его leng:=filesize(f1);//запоминаем длину файла Setlength(stat,leng);//устанавливаем длину динамического массива for i:=0 to leng-1 do begin //заполняем false массив статусов stat[i]:=false; end; i:=0; while i<leng do begin read(f1,z1);//читаем запись z1, с которой дальше будем сравнивать if (stat[i]<>true) then begin //если мы ее еще не записали в файл f2 Seek(f1, 0);//переводим указатель на начало j:=0; while (j<leng) do begin read(f1,z2);//читаем запись z2 if (z2.Gruppa=z1.Gruppa) then begin //если названия групп совпадают stat[j]:=true; //запоминаем что мы записали эту запись в файл write(f2,z2);//записываем запись z2 в файл end; j:=j+1; end; Seek(f1, i+1);//переводим указатель на следующую запись end; i:=i+1; end; closefile(f1);//закрываем файл f1 closefile(f2);//закрываем файл f2 end;
end.
У меня к вам большая просьба, если кто-то попытаеться её сделать. то пожалуйта напишите в стиле "начальные знания" и с подробнейшими коментариями. Я сам программирую всего пол года, и сталкиваюсь с этим впервые в своей жизни.
Да и еще одна просьба. Если кто-то может мне дохотчиво объяснить Канву с примерами реализации, там всяческих простых геометрических тел, их движения, масштабирования, переноса и в таком духе, то огромнейшая просьба, пожалуйсто объясните на примерах программ. А то меня иначе из универа попрут, а Информатика есть один единственный хвост!!!
Заранее всех благодарю, кто откликнеться на зов о помощи!!!!!!
Сообщение отредактировано: Gorinicher - 20.10.2007 17:37
Пожалуйста, соблюдай правила: код надо заключать в специальные теги; заголовок делать таким, чтобы он нес некоторую смысловую нагрузку (имеющую отношение к содержанию темы!)... В общем, посмотри в верху страницы. ну и раздел - это все же Delphi. Исправь первые 2 нарушения. В таком виде понять что-либо в задаче невозможно. Например, в TForm1.N11Click творится что-то ужасное.. глубокий смысл которого мне не удалось постичь.
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!