Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2010, 00:00   #1
Raideres
Новичок
Джуниор
 
Регистрация: 06.06.2010
Сообщений: 2
По умолчанию Как можно переделать под типизированный

uses crt;
type stud=record
fam,grp:string[20];
end;
mas=array[1..300] of stud;
procedure ReadFile(var f:text;var a:mas;var n:integer;var b:byte);
var nf,s:string;
begin
b:=0;
write('Имя файла для чтения: ');
readln(nf);
nf:=nf+'.txt';
assign(f,nf);
{$I-} reset(f); {$I+}
if IOResult <> 0 then
begin
b:=1;
writeLn('Не могу открыть файл ',nf);
writeLn('Работа программы завершена. Нажмите ENTER');
readln;
exit;
end;
n:=0;
while not eof(f) do
begin
readln(f,s);
n:=n+1;
a[n].fam:=copy(s,1,pos(' ',s)-1);
delete(s,1,pos(' ',s));
a[n].grp:=s;
end;
close(f);
end;
procedure Sort(var a:mas;n:integer);
var i,j:integer;
x:stud;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i].grp>a[j].grp then
begin
x:=a[i];
a[i]:=a[j];
a[j]:=x;
end;
end;
procedure WriteFile(var f:text;a:mas;n:integer);
var i:integer;
nf:string;
begin
write('Имя файла для записи: ');
readln(nf);
nf:=nf+'.txt';
assign(f,nf);
rewrite(f);
for i:=1 to n do
begin
if (a[i].grp<>a[i-1].grp)or(i=1) then
begin
writeln(f,'');
writeln(f,a[i].grp);
writeln(f,' ',a[i].fam);
end
else writeln(f,' ',a[i].fam);
end;
close(f);
write('Список переписан в файл ',nf);
readln
end;
var f,g:text;
sp:mas;
n:integer;
w:byte;
begin
clrscr;
ReadFile(f,sp,n,w);
if w=1 then exit
else
begin
Sort(sp,n);
WriteFile(g,sp,n);
end
end.




Петров Г123
Иванов Г124
Сидоров Г123
Raideres вне форума Ответить с цитированием
Старый 07.06.2010, 08:37   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
procedure ReadFile(var f:file of stud;
И далее аналогично...
p51x вне форума Ответить с цитированием
Старый 07.06.2010, 11:55   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
procedure ReadFile(var f:file of stud;
+1



а в процедуре чтения ReadFile
заменить цикл на такой:
Код:
while not eof(f) do
begin
  n:=n+1;
  read(f,a[n]);
end;
close(f);
и всё!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переделать под windows al072 C/C++ Сетевое программирование 13 16.02.2010 20:57
Помогите,как переделать текст проги Borland С++ Builder под Microsoft visual C++ 6.0 retpecub Visual C++ 9 15.06.2009 12:17
как Microsoft Access(ADOConnection ADOTable DataSource DBGrid) переделать под mySQL? Levsha100 БД в Delphi 6 23.05.2009 19:48
Как можно переделать прогу (С++) Olya90 Помощь студентам 5 31.03.2009 15:32