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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2010, 19:43   #1
barby-Nastya
 
Аватар для barby-Nastya
 
Регистрация: 18.04.2010
Сообщений: 3
Восклицание записи в паскале

Запрограммировать
I. набор записей.Запись -минимум 3 поля.Поля должны быть различных типов.
II.Способ хранения: файл.
III.Процедуры:
а) поиск записи,б) селекция( выделение группы записей по критерию и запись в другой файл),в) добавление записи в начало файла,д) вывод файла,диаграмма....

ВОТ...ПРОГРАММА ТО ГОТОВА..ВОТ ТОЛЬКО В НЕЙ НИЧЕГО НЕ ПОНЯТНО...КТО НИБУДЬ ПОМОГИТЕ РАЗОБРАТЬСЯ ЧТО ЗДЕСЬ К ЧЕМУ...


type rec=record
fam:string[50];
year:integer;
marital:boolean;
end;
var input:file of rec;
k,kk,kkk:integer;
buf:rec;

procedure search(n:integer;first:rec);
var flag:boolean;
second:rec;
otv:char;
begin
assign(input,'input.txt');
reset(input);
flag:=true;
while not eof(input) and flag do
begin
read(input,second);
case n of
1: if (second.fam=first.fam) then flag:=false;
2: if (second.year=first.year) then flag:=false;
3: if (second.marital=first.marital) then flag:=false;
end;
if flag=false
then
begin
writeln('Найдена запись!');
writeln('Фамилия, имя: ',second.fam);
writeln('Год рождения: ',second.year);
if second.marital
then
writeln('Семейное положение: женат(а)')
else
writeln('Семейное положение: не женат(а)');
write('Продолжить поиск? Y N: ');
readln(otv);
if otv='Y' then flag:=true;
end;
end;
write('Для выхода нажмите Enter _');
readln
end;

procedure selection(n:integer;first:rec);
var flag:boolean;
second:rec;
otv:char;
name:string[20];
output:text;
barby-Nastya вне форума Ответить с цитированием
Старый 06.06.2010, 19:43   #2
barby-Nastya
 
Аватар для barby-Nastya
 
Регистрация: 18.04.2010
Сообщений: 3
По умолчанию

begin
assign(input,'input.txt');
reset(input);
write('Введите имя файла, в который запишутся данные (например, out.txt): ');
readln(name);
assign(output,name);
rewrite(output);
writeln('Cоздан файл ',name,'.');
while not eof(input) do
begin
flag:=true;
read(input,second);
case n of
1: if (second.fam=first.fam) then flag:=false;
2: if (second.year=first.year) then flag:=false;
3: if (second.marital=first.marital) then flag:=false;
end;
if flag=false
then
begin
writeln('Фамилия, имя: ',second.fam);
writeln('Год рождения: ',second.year);
if second.marital
then
writeln('Семейное положение: женат(а)')
else
writeln('Семейное положение: не женат(а)');
if second.marital
then
writeln(output,second.fam:40,second .year:7,' женат(а)')
else
writeln(output,second.fam:40,second .year:7,' не женат(а)');
end;
end;
close(output);
write('Для выхода нажмите Enter _');
readln
end;


procedure add(new:rec);
var name:string[20];
output:file of rec;
begin
write('Введите имя файла, в который запишутся данные (например, out.txt): ');
readln(name);
assign(output,name);
rewrite(output);
assign(input,'input.txt');
reset(input);
write(output,new);
while not eof(input) do
begin
read(input,new);
write(output,new);
end;
writeln('Создан новый Бинарный файл под именем ',name);
close(output);
write('Для выхода нажмите Enter _');
readln
end;

procedure write_all;
var second:rec;
begin
assign(input,'input.txt');
reset(input);
writeln('Файл input.txt:');
while not eof(input) do
begin
read(input,second);
if second.marital
then
writeln(second.fam:40,second.year:7 ,' женат(а)')
else
writeln(second.fam:40,second.year:7 ,' не женат(а)');
end;
end;

begin

writeln('Здравствуйте, чем бы вы хотели заняться:');
writeln('Для поиска записи нажмите 1');
writeln('Для "селекции" нажмите 2');
writeln('Для добавления записи в файл нажмите 3');
writeln('Для вывода файла нажмите 4');
readln(k);
case k of
1: begin
writeln('По какому критерию вы хотите искать?');
writeln('Нажмите 1, если по фамилии, имени');
writeln('Нажмите 2, если по году рождения');
writeln('Нажмите 3, если по семейному положению');
read(kk);
case kk of
1: begin
write('Введите фамилию, имя записи, которую хотите найти: ');
readln(buf.fam);
search(1,buf);
end;
2: begin
write('Введите год рождения человека, которого хотите найти: ');
readln(buf.year);
search(2,buf);
end;
3: begin
write('Введите семейное положение (если женат(а) - то 1, иначе - 0: ');
readln(kkk);
if kkk=1 then buf.marital:=true
else buf.marital:=false;
search(3,buf);
end;
end;
end;
2:begin
writeln('По какому критерию вы хотите искать?');
writeln('Нажмите 1, если по фамилии, имени');
writeln('Нажмите 2, если по году рождения');
writeln('Нажмите 3, если по семейному положению');
read(kk);
case kk of
1: begin
write('Введите фамилию, имя записи, которую хотите найти: ');
readln(buf.fam);
selection(1,buf);
end;
2: begin
write('Введите год рождения человека, которого хотите найти: ');
readln(buf.year);
selection(2,buf);
end;
3: begin
write('Введите семейное положение (если женат(а) - то 1, иначе - 0: ');
readln(kkk);
if kkk=1 then buf.marital:=true
else buf.marital:=false;
selection(3,buf);
end;
end;

end;
3: begin
writeln('Введите информацию о человеке, которого хотите добавить:');
write('Введите фамилию, имя ');
Readln(buf.fam);
write('Введите год рождения ');
Readln(buf.year);
write('Введите семейное положение (если женат(а) - то 1, иначе - 0: ');
readln(kk);
if kk=1 then buf.marital:=True
else buf.marital:=False;
add(buf);
end;
4: write_all;

else write('Ошибка');
end;
close(input);
end.
barby-Nastya вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
записи в паскале swedalena Помощь студентам 9 25.05.2010 20:36
Записи в паскале TreiN-san Помощь студентам 4 06.01.2010 21:22
ЗАПИСИ на паскале Fornarina Помощь студентам 6 16.02.2009 19:17