Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 13.02.2018, 22:59   #1 (permalink)
Eklipsa12
Новичок
 
Регистрация: 13.02.2018
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Структура: найти работника с возрастом, попадающим в заданный диапазон

Запись с полями: ФИО работника; возраст; домашний адрес.
Найти работника с минимальным возрастом, попадающим в диапозон 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 лет."
file.txt
Eklipsa12 вне форума   Ответить с цитированием

Старый 13.02.2018, 22:59
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Эти топики очень похожи на ваш и помогут вам разобраться

Успешность работника можно определить по браузеру
В Косово обнаружен трансформатор возрастом 20.000 лет
С Днем работника торговли!

Старый 14.02.2018, 09:18   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Eklipsa12 Посмотреть сообщение
Начало программы идет вот так:
А продолжение (точнее, программа целиком) бежит вот этак:
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 15.02.2018, 08:18   #3 (permalink)
Eklipsa12
Новичок
 
Регистрация: 13.02.2018
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Большое спасибо! Выручили! У меня к Вам просьба,не могли ли бы вы пожалуйста описать каждое действие,что оно значит? Хочу полностью разобраться в коде. Буду очень благодарен!
Eklipsa12 вне форума   Ответить с цитированием
Старый 15.02.2018, 14:18   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Eklipsa12 Посмотреть сообщение
Большое спасибо! Выручили! У меня к Вам просьба,не могли ли бы вы пожалуйста описать каждое действие,что оно значит? Хочу полностью разобраться в коде. Буду очень благодарен!
Да пожалуйста!
Слегка подредактированная процедура inp считывает данные из файла и, кроме того, автоматически определяет количество участников, так что вводить этот параметр отдельно не нужно (счётчик увеличивается на 1 с каждым считыванием данных, пока файл не кончится).
Дальше самым стандартным образом ищем минимум возраста, правда, с наложением дополнительных рамок. Для этого сначала присваиваем искомому минимуму заведомо большее значение (100), потом прогоняем весь массив записей. Если возраст меньше минимального и находится в указанных рамках, то он становится минимальным и фиксируется (переменной k) номер этой записи.
Дальше выводятся все поля записи с номером k.
Vladimir_S вне форума   Ответить с цитированием
Старый 01.03.2018, 17:12   #5 (permalink)
Eklipsa12
Новичок
 
Регистрация: 13.02.2018
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.