Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача. Записи
Форум «Всё о Паскале» > 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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.