Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача. Записи
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-Nata-
Всем привет wink.gif . Задали нам вот такую вот задачку по информатике:

Составьте программу, которая описывает массив записей клиентов банка, отображая в нем следующую информацию о каждом: адрес, фамилия, имя, возраст, для лиц старше 18 лет в зависимости от рода занятий(учеба/работа/пенсия) – запись места учебы, места работы и трудовова стажа, для пенсионеров – год выхода на пенсию, необходимо обеспечить ввод данных, поиск самого юного и самого пожилого клиента, поиск студентов, пенсионеров.

Сдавать надо послезавтра, а я чего-то не понмаю что надо сделать, ну не бум-бум я в этом деле. Кому не трудно помогите написать програмку. Буду признательна.
volvo
-Nata-, прочти мою подпись, и воспользуйся вторым советом (я про поиск)...
Ищи про типизированные файлы, записи, аэропорты, вокзалы, хоккейные команды (это только то, что я сам выкладывал на форум, есть еще...)
-Nata-
Текст задачи немного изменили, но смысл не изменился. Вот попытка решения, но полностью решить чего то никак не получается, в частности непонятно как гайти самого юного и самого старого. К тому же меню выводится после ввода КАЖДОГО члена списка а не в конце ввода всех dry.gif Вот задача:
uses crt;
label 1;
type
house_register = record
number : string;
Last_name : string;
Name : string;
Age : integer;
Status : string;
Place_of_education : string;
Place_of_working : string;
Standing : string;
Pension : string;
end;

var
base : array[1..30] of house_register;
i : integer;
f : text;
n : integer;
s : string;
begin
clrscr;
writeln('max');
readln(n);
for i:=1 to n do
with base[i] do
begin
writeln('#'); readln(number);
writeln('ln'); readln(Last_name);
writeln('n'); readln(Name);
writeln('a'); readln(Age);
if Age>=18 then
begin
writeln('Enter status person s(student), w(working), p(pensioner)');
readln(Status);
end;
begin
if Status = 's' then
writeln('Enter place of education');
readln(Place_of_education);
end;
begin
if Status = 'w' then
writeln('Enter place of working and standing');
readln(Place_of_working, standing);
end;
begin
if Status = 'p' then
writeln('Enter pensions(years)');
readln(pension);
end;
begin
1:writeln('For show students enter ss');
writeln('For show works enter sw');
writeln('For show pensions enter sp');
writeln('For show yonger person enter y');
writeln('For show older person enter o');
readln(s);
if s = 'ss' then
if status = 's' then
begin
writeln(number);
writeln(Last_name);
writeln(Name);
writeln(Age);
writeln(Status);
writeln(Place_of_education);
end;
if s = 'sw' then
if status = 'w' then
begin
writeln(number);
writeln(Last_name);
writeln(Name);
writeln(Age);
writeln(Place_of_working);
writeln(Standing);
end;
if s = 'sp' then
if status = 'p' then
begin
writeln(number);
writeln(Last_name);
writeln(Name);
writeln(Age);
writeln(Pension);
end;
if s <> ('ss') then
if s <> ('sw') then
if s <> ('sp') then
begin
writeln('ERROR!');
goto 1;
end;
end;
readln;
end;
end.

Если не трудно окажите помощь smile.gif
Guest
Неужели никто не в силах помочь ???
volvo
Цитата
Неужели никто не в силах помочь ???

Ну, почему сразу "не в силах"?
uses crt;
type
house_register = record
number : string;
Last_name : string;
Name : string;
Age : integer;
Case Status: char of{string}
's':(Place_of_education : string);
'w':(Place_of_working, Standing : string);
'p':(Pension : string);
end;

Procedure PrintInfo(X: house_register);
begin
With X Do Begin
writeln(number);
writeln(Last_name);
writeln(Name);
writeln(Age);
writeln(Status);
Case Status Of
's': writeln(Place_of_education);
'w': begin
writeln(Place_of_working);
writeln(Standing);
end;
'p': writeln(Pension);
End;
End;
end;

var
base : array[1..30] of house_register;
i : integer;
f : text;
n : integer;
s : string;

min, max: integer;
begin
clrscr;
write('max = '); readln(n);

for i:=1 to n do
with base[i] do begin

write('# '); readln(number);
write('ln '); readln(Last_name);
write('n '); readln(Name);
write('a '); readln(Age);
if Age>=18 then begin
writeln('Enter status person s(student), w(working), p(pensioner)');
readln(Status);
end;

case Status of
's': begin
writeln('Enter place of education');
readln(Place_of_education);
end;

'w': begin
writeln('Enter place of working and standing');
readln(Place_of_working, standing);
end;

'p': begin
writeln('Enter pensions(years)');
readln(pension);
end;
end;

end;

repeat
writeln('For show students enter ss');
writeln('For show works enter sw');
writeln('For show pensions enter sp');
writeln('For show yonger person enter y');
writeln('For show older person enter o');
writeln('exit = x');
readln(s);

min := 1; max := 1;

for i := 1 to n do
with base[i] do begin

if base[min].Age > Age then min := i;
if base[max].Age < Age then max := i;

if s[length(s)] in ['s', 'w', 'p'] then
if s[length(s)] = Status then PrintInfo(base[i]);

end;

case s[length(s)] of
'y': PrintInfo(base[min]);
'o': PrintInfo(base[max]);
end;
until s[length(s)] = 'x';
readln;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.