Новичок и в этом деле лох ..не осуждайте заранее..........с меня благодарность любым удобным способом.ВМ,деньги на счет..
В текстовом файле хранится база отдела кадров предприятия. На предприятии N сотрудников. Каждая строка файла содержит запись об одном сотруднике: фамилия и инициалы, год рождения, оклад. Написать программу, которая должна обеспечивать: - ввод записи в файл; - удаление записи из файла; - корректировка записи; - поиск записи по фамилии; - упорядочивание файла по фамилии или по году рождения
------------------------------- может быть у кого то было подобное?? помогите пожалуйста.До завтрашнего дня нужно..Есть сам код..но пишет ошибку-а именно-"Повторно оъявленный идентификатор fio" и думаю это не последняя ошибка -------------------------------------------------------- вот сам код -------------------------------------------------------
Код(Показать/Скрыть)
Program bok; {название программы}uses crt; {подкличение модуля crt}type mass=record
fio:string; {Фамилия}
Year: byte;
Oklad: word;
end;
var
chi:mass; {имеет тип mass}
ch,ch1:array[1..25] of mass;
f:fileof mass;
i,m,j,k,n,nom:integer;
filename:string; {для имени файла}procedure sozdanie; {процедура создания}var
q:integer;
begin
clrscr;
writeln('vvedite imya faila:'); {ввод имени файла}
readln(Filename);
assign(f,Filename);
rewrite(f);
Writeln ('vvedite kolichestvo zapisei'); {вводим количество записей}
Readln (n);
q:=0;
for i:=1to n dowith ch[i] dobegin
q:=q+1;
clrscr;
writeln('vvedite fio ',q,'-go sotrudnika'); {заносим информацию об сотруднике }
readln(fio);
writeln('vvedite year ',q,'-go cotrudnika');
readln(year);
writeln('vvedite Oklad ');
readln(Oklad);
write(f,ch[i]);
end;
close(f); {закрываем файл}end;
procedure vvoda; {процедура ввода }begin
clrscr;
writeln ('vvedite imya sozdannogo faila'); {ввод имени файла}
readln(filename);
assign (f,filename);
reset(f);
i:=1;
whilenot eof(f) dobegin
read(f,ch[i]);
i:=i+1;
end;
writeln('vvedite fio'); {начинаем заносит информацию об сотруднике}
readln(ch[i].fio);
writeln('vvedite year ');
readln(ch[i].year);
writeln('vvedite oklad sotrudnika');
readln(ch[i].oklad);
n:=i;
close(f); {закрыли файл}
rewrite(f);
for i:=1to n do
write(f,ch[i]);
close(f);
end;
procedure udalenie; {процедура удаления}var m:integer;
begin
clrscr;
writeln ('vvedite imya sozdannogo faila'); {вводим имя файла}
readln(filename);
assign (f,filename);
reset(f);
i:=1;
n:=0;
whilenot eof(f) dobegin
read(f,ch[i]);
i:=i+1;
n:=n+1;
end;
writeln('vvedite nomer udaliaemoi zapisi'); {вводим номер записи для удаления}
readln(m);
for i:=m to n dobegin{удаляем}
ch[i].fio:=ch[i+1].fio;
ch[i].year:=ch[i+1].year;
ch[i].oklad:=ch[i+1].oklad;
end;
n:=n-1;
close(f);
rewrite(f);
for i:=1to n do
write(f,ch[i]);
close(f);
writeln(‘zapis udalena’);
readln;
end;
Procedure kor;{Процедура корректировки}Var
F:text;
Fio,str:string;
Fio:string;
Year:byte;
Oklad:word;
V:integer;
Begin
Writeln(‘Задайте имя файла’);
Readln(fio);
Assign(f,fio);
Reset(f);
With st doBegin
Write(‘Введите фамилию и инициалы сотрудника:’);readln(str);
X:=0Whilenot eof(f)doBegin
Read(f,st);
If st fio=str ther
Begin
Writeln(‘Введите новые данные о сотруднике:’);
Write(‘Фамилия и инициалы сотрудника:’);
Write(‘Год рождения:’);
Write(‘Оклад:’);
Fio2.:=fio;
Oklad2.:=oklad;
Seeklf,filepos(f)-1;
Write(f,st); x:=1;
End;end;
Close(f);
EndIf x=0thenbegin writeln(‘Записи с такой фамилией нет!’);
Readln
End;
End;
procedure poisk; {процедура поиска}var e:string;
n1,o:integer;
l:real;
begin
writeln(' poisk po polu fio');
writeln;
readln(o);
clrscr;
if o=1thenbegin{поиск по полю фио}
writeln ('vvedite imya sozdannogo faila');
readln(filename);
assign (f,filename);
reset(f);
i:=1;
n:=0;
whilenot eof(f) dobegin
read(f,ch[i]);
inc(i);
inc(n);
end;
close(f);
writeln('vvedite fio uchasnika'); {водим ФИО участника}
readln(e);
n1:=0;
for i:=1to n doif ch[i].fio=e
thenbegin
n1:=n1+1;
ch1[n1]:=ch[i];
end;
if n1<>0thenbegin{вывод найденного участника}
writeln('||');
writeln('| FIO | YEAR| OKLAD|');
writeln('||');
for i:=1to n1 dowith ch1[i] dobegin
writeln('|',fio:17,'|',year:9,'|',oklad:15,'|');
end;
writeln('');
endelse
writeln('zapis ne naidena ');
readln;
end;
procedure sortirovka; {процедура сортировка}var
p:integer;
begin
clrscr;
writeln('sortirovka po polu fio:');
writeln;
readln(p);
if p=1thenbegin{сортировка по полю фио}
writeln ('vvedite imya sozdannogo faila'); {вводим имя файла}
readln(filename);
assign (f,filename);
reset(f);
for i:=1to n do
read(f,ch[i]);
close(f);
for i:=1to n-1dofor j:=i+1to n doif ch[i].fio>ch[j].fio then{сравниваем 2 строки}begin
chi:=ch[i]; {проводим перестановку}
ch[i]:=ch[j];
ch[j]:=ch[i];
end;
rewrite(f);
for i:=1to n do
write(f,ch[i]);
close(f);
end;
begin{тело основной программы}while True dobegin{меню программы}
clrscr;
Writeln ('':20,' *Menu* ');
Writeln ('':20,'||');
Writeln ('':20,'| 1- sozdanie novogo faila |');
Writeln ('':20,'| 2- vvod dannih |');
Writeln ('':20,'| 3- | udalenie zapisei ');
Writeln ('':20,'| 4- kor|');
Writeln ('':20,'| 5- poisk|');
Writeln ('':20,'| 6- sortirovka |');
Writeln ('':20,'| 0- vihod |');
Writeln ('':20,'||');
Writeln;
Writeln('vi mojete rabotat s uje sozdanim failom "sor" ');
Writeln('');
Readln (m);
case m of1:sozdanie;
2:vvod;
3: udalenie;
4:kor;
5: poisk;
6: sortirovka;
0:exit;
elsebegin Writeln('ne verno!');
readln;
end;
end;
end;
end.
Уж не знаю откуда код программы стащили, но при текущей постановке задачи данный код не подходит, т.к.: Задание:
Цитата
В текстовом файле хранится ...
А в программе объявляется типизированный файл (т.е. далеко не "текстовый"):
Цитата
f:file of mass;
--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно. -------------------- Прежде, чем задать вопрос - Правила :: FAQ :: Поиск