Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Структура: найти работника с возрастом, попадающим в заданный диапазон (http://www.tehnari.ru/f41/t258132/)

Eklipsa12 13.02.2018 22:59

Структура: найти работника с возрастом, попадающим в заданный диапазон
 
Вложений: 1
Запись с полями: ФИО работника; возраст; домашний адрес.
Найти работника с минимальным возрастом, попадающим в диапозон 20-30 лет.
Начало программы идет вот так:

Код:

Type
rec=record
FIO:string[30];
Vozr:integer;
adress:string[30];
end;
mas=array[1..10] of rec;
var
f: text;e1:integer;m:mas;

Procedure inp(var a:mas;var n:integer);{Процедура ввода}
var i:integer;
begin
readln(n);
for i:=1 to n do
begin
readln(f,a[i].FIO);
readln(f,a[i].Vozr);
readln(f,a[i].adress);
end;
end; 
Procedure ext(a:mas;n:integer); {Процедура вывода}
var i:integer;
begin
for i:=1 to n do
begin
writeln(a[i].FIO);
writeln(a[i].Vozr);
writeln(a[i].adress);
end;
end;
Begin
assign(f,'file.txt');
reset(f);
inp(m,e1);
ext(m,e1);
end.

Самый главный вопрос как "Найти работника с минимальным возрастом, попадающим в диапозон 20-30 лет."
Вложение 400442

Vladimir_S 14.02.2018 09:18

Цитата:

Сообщение от Eklipsa12 (Сообщение 2556286)
Начало программы идет вот так:

А продолжение (точнее, программа целиком) бежит вот этак:
Код:

Type
  rec=record
  FIO:string[30];
  Vozr:integer;
  adress:string[30];
  end;
 mas=array[1..10] of rec;

Var
 f:text;
 e1,j,Min_age,k:integer;
 m:mas;

Procedure inp(var a:mas;var n:integer);{Процедура ввода}
var i:integer;
begin
 i:=0;
 Repeat
  Inc(i);
  readln(f,a[i].FIO);
  readln(f,a[i].Vozr);
  readln(f,a[i].adress);
 Until EoF(f);
 n:=i;
end;

Begin
 assign(f,'file.txt');
 reset(f);
 inp(m,e1);
 close(f);
 Min_age:=100;
 for j:=1 to e1 do
  With m[j] do
  if (Vozr<Min_age) and (Vozr>=20) and (Vozr<=30) then
    begin
    k:=j;
    Min_Age:=Vozr;
    end;
 Writeln('Result:');
 Writeln(m[k].FIO);
 Writeln(m[k].Vozr);
 Writeln(m[k].adress);
 Readln
End.


Eklipsa12 15.02.2018 08:18

Большое спасибо! Выручили! У меня к Вам просьба,не могли ли бы вы пожалуйста описать каждое действие,что оно значит? Хочу полностью разобраться в коде. Буду очень благодарен!

Vladimir_S 15.02.2018 14:18

Цитата:

Сообщение от Eklipsa12 (Сообщение 2556687)
Большое спасибо! Выручили! У меня к Вам просьба,не могли ли бы вы пожалуйста описать каждое действие,что оно значит? Хочу полностью разобраться в коде. Буду очень благодарен!

Да пожалуйста!
Слегка подредактированная процедура inp считывает данные из файла и, кроме того, автоматически определяет количество участников, так что вводить этот параметр отдельно не нужно (счётчик увеличивается на 1 с каждым считыванием данных, пока файл не кончится).
Дальше самым стандартным образом ищем минимум возраста, правда, с наложением дополнительных рамок. Для этого сначала присваиваем искомому минимуму заведомо большее значение (100), потом прогоняем весь массив записей. Если возраст меньше минимального и находится в указанных рамках, то он становится минимальным и фиксируется (переменной k) номер этой записи.
Дальше выводятся все поля записи с номером k.

Eklipsa12 01.03.2018 17:12

Владимир, день добрый. Не могли ли бы вы меня еще раз выручить, нужно сделать всё тоже самое, НО, на каждое действие должна быть своя процедура, т.е процедура входная (inp), процедура выхода(outp) и процедура поиска(find), и как написал выше, локальные переменные, буду Вам благодарен!


Часовой пояс GMT +4, время: 09:48.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.